HDDを Linux でフォーマット・ファイルシステム作成

3TBのハードディスクを幾つか購入して、Linux 用に ext4 でファイルシステムを 作成した時の覚書。
Ubuntu 12.04? で探すと、「ディスクユーティリティ」というソフトと、 「GParted」が使えそうだった。

ディスクユーティリティ
まず、ディスクをフォーマットする。パーティションテーブルの作成で、デフォ ルトでは MBR になってしまうが、MBR だと2TB以上のディスクの扱いに問題が あるそうなので、GPT にしなければならない。
次に、ファイルシステムを ext4 として作成する。

GParted
起動すると、デバイスの検索(スキャン)が始まり、これが異様に時間がかかる。 最初は律義に10分くらい待っていたが、調べたところ BIOS の設定でFDを探さな いようにすればすぐ終るということが判明。BIOS でAドライブを無し、に設定した ところ確かに速くなった。
GParted でも、パーティションテーブルを GPT で作成し、ext4 でファイル システム作成すればよい。なぜか44GBほど使用済と出るが、これは表示が間違っ ているみたいな感じである。

これで、ファイルシステムも出来た、と思いきや、Ubuntu でプロパティを見たら、 150GBも使用済領域になっている。df コマンドで見た場合は、使用済領域と使用 可能領域の和が全領域より 5% 小さい値になる。 調べたところ、Linux は全容量の 5% を、スーパーユーザーや syslogd が使える予約領域として確保してしまうとのこと(man tune2fs の -m オプション の説明を参照)。 この領域はディスクの断片化防止にも使われるらしいが、今どき総容量の 5% は多過ぎだろう、ということで(よせばいいのに)予約領域を小さくしてみる ことにした。これが泥沼化の始まり。

tune2fs による予約領域の変更
tune2fs -m 数字 デバイス名 とすると、予約領域を 数字(%) にすることが できるはず。ということで tune2fs -m 1 /dev/sdc1 とすると、確かに使用済 が30GBに縮小した。 オプション -m の代りに -r でブロック単位で大きさを指定することもできるが、 あまり小さくしても大丈夫か心配なので、1% くらいでよいでしょう。
ところが、、、
Ubuntu 10.04 の入ったサーバーに接続したところ、I/Oでエラーが発生し、 動作が不安定になった。mount や sync などの応答がなく、kill しても プロセスが止らないほか、新しいUSBデバイスを認識しないわローカルのモニタ もキーボードも使えないわ、で再起動する羽目になった。いろいろ変更して みても正常に認識してくれないまま。初期設定の 5% のままだと大丈夫なよう だが。

parted, mke2fsで仕切り直し

ということで最初からやり直し。tune2fs で後から変更するのではなく、 ファイルシステムを作成する時点で予約領域を小さく設定しておく方針にする。
GParted 等では予約領域を自由に設定できないので、CUIで行く。

1. dmesg、fdisk 等でデバイスの確認
まずデバイス名が分らないと困るので、接続後の dmesg の出力を見るか、 sudo fdisk -l で対象ディスクのデバイス名をチェックする。 例えば /dev/sdc と分かる。

2. parted でパーティション作成
fdisk は古いので GPT を作成できないんだか、ext4 を作成できないだかで 使えないので、parted を使う。

parted デバイス名(/dev/sdcなど)
help
rm 1 (既存のパーティションを削除する場合)
mklabel gpt (GPTでパーティションテーブル作成)
mkpart primary  start end (単位MB;パーティション作成)
name 1 パーティション名 (必要なら名前を付ける)
print (確認)
quit
mkpart でのサイズ指定をいくつにすれば良いのか分かりにくいが、unit % で単位を % にしてから mkpart primary 0 100 と指定しても良いかも。

3. mke2fs でファイルシステム作成
mke2fs -t ext4 -m 1 /dev/sdc1 などとすれば、ext4 ファイルシステムを 予約ブロックサイズ指定で作成できる。既にパーティションを作成している ので、デバイス名に1などの数字が付くことに注意。
sudo tune2fs -l /dev/sdc1 などでファイルシステムの superblock 情報が 参照できる。Reserved block count: の値が全体の 1% になっていることが確認 できる。

4. マウント
マシンに接続して dmesg 等でデバイス名を確認し、
mount -t ext4 /dev/sde1 /mnt/diskA
という感じでマウントして動作を確認する。もちろんマウントポイントは 先に作っておく。df -H で容量を見ると、Used と Available の和が Size の値に近くなっているのが分かる。だいたい差が 1% 程度になっているはず。 使用後は umount /mnt/diskA とかでアンマウントしてから取り外す。


もどる(計算機情報のページ)