[Linux] 外付けUSBハードディスクをまるごとxfsでフォーマットする方法

環境

この記事の内容は、Ubuntu Linux 6.10で確認しました。

手順

手順は、以下の通りです。

  1. dmesgでデバイスファイルを調べる。
  2. fdiskでパーティションを作成する。
  3. xfsでフォーマットする。

dmesgでデバイスファイルを調べる。

外付けUSBハードディスクをコンピュータに接続し、電源をいれます。それから、dmesgコマンドを実行します。

$ dmesg
[17179569.184000] Linux version 2.6.17-11-generic (root@terranova) (gcc version 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)) #2 SMP Thu Feb 1 19:52:28 UTC 2007 (Ubuntu 2.6.17-11.35-generic)
(略)
[17181925.040000] usb 4-5: new high speed USB device using ehci_hcd and address 2
[17181925.176000] usb 4-5: configuration #1 chosen from 1 choice
[17182013.236000] usbcore: registered new driver libusual
[17182013.384000] Initializing USB Mass Storage driver...
[17182013.388000] scsi0 : SCSI emulation for USB Mass Storage devices
[17182013.388000] usb-storage: device found at 2
[17182013.388000] usb-storage: waiting for device to settle before scanning
[17182013.388000] usbcore: registered new driver usb-storage
[17182013.388000] USB Mass Storage support registered.
[17182018.388000] usb-storage: device scan complete
[17182018.424000]   Vendor: WDC WD32  Model: 00JB-00KFA0       Rev: 08.0
[17182018.424000]   Type:   Direct-Access                      ANSI SCSI revision: 00
[17182022.968000] SCSI device sda: 625142447 512-byte hdwr sectors (320073 MB)
[17182022.972000] sda: Write Protect is off
[17182022.972000] sda: Mode Sense: 03 00 00 00
[17182022.972000] sda: assuming drive cache: write through
[17182022.976000] SCSI device sda: 625142447 512-byte hdwr sectors (320073 MB)
[17182022.976000] sda: Write Protect is off
[17182022.976000] sda: Mode Sense: 03 00 00 00
[17182022.976000] sda: assuming drive cache: write through
[17182022.976000]  sda: unknown partition table
[17182022.992000] sd 0:0:0:0: Attached scsi disk sda
[17182030.336000] sd 0:0:0:0: Attached scsi generic sg0 type 0

デバイスファイルは/dev/sdaであることが分かりました。

fdiskでパーティションを作成する。

sudo fdiskして、パーティションを作成します。

$ sudo fdisk /dev/sda
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。


このディスクのシリンダ数は 38913 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): m
コマンドの動作
   a   ブート可能フラグをつける
   b   bsd ディスクラベルを編集する
   c   dos 互換フラグをつける
   d   領域を削除する
   l   既知の領域タイプをリスト表示する
   m   このメニューを表示する
   n   新たに領域を作成する
   o   新たに空の DOS 領域テーブルを作成する
   p   領域テーブルを表示する
   q   変更を保存せずに終了する
   s   空の Sun ディスクラベルを作成する
   t   領域のシステム ID を変更する
   u   表示/項目ユニットを変更する
   v   領域テーブルを照合する
   w   テーブルをディスクに書き込み、終了する
   x   特別な機能 (エキスパート専用)

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-38913, default 1): 
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-38913, default 38913): 
Using default value 38913

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。

カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。

xfsでフォーマットする。

mkfs.xfsコマンドでフォーマットします。

$ sudo mkfs.xfs /dev/sda1
meta-data=/dev/sda1              isize=256    agcount=16, agsize=4883885 blks
         =                       sectsz=512   attr=0
data     =                       bsize=4096   blocks=78142160, imaxpct=25
         =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096  
log      =internal log           bsize=4096   blocks=32768, version=1
         =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0