ext4 の初期化を早く終わらせる
概要
- Linux 標準となっている ext4 形式で初期化すると、比較的早く初期化が終わる。
- しかし、実際はきちんと初期化されておらず、初期化したディスクをマウントした時にバックグラウンドで走る
ext4lazyinit
プロセスがディスクに負荷をかけないようにゆっくりと実際の初期化作業をしている。 - これを知らなかった自分の経験上、
ext4lazyinit
が実行されているディスクに、大量のデータを転送すると I/O エラーが発生する。多分、初期化が間に合ってなかったのだと思う。 - したがって、これを早く終わらせるためには、以下の 2 通りの方法がある。
- 初期化時に、実際の初期化を行う。
- マウント時に初期化を強制的に行う。
- このページでは、これらの方法を紹介する。
コマンド
初期化時に、実際の初期化を行う
$ sudo mkfs.ext4 -E lazy_itable_init=0 /dev/sdX
- /dev/sdX は初期化したいディスクのデバイスファイル
マウント時に初期化を強制的に行う
上記の初期化時のオプションを付け忘れて初期化してしまった場合、こちらの方法を取ると良い。
$ sudo mount -t ext4 -o init_itable=0 /dev/sdX MOUNT_PATH
MOUNT_PATH
にはマウント先- これでマウントすると、
iotop
コマンド上でディスクアクセスがext4lazyinit
によって 100% 近くに張り付いている。ext4lazyinit
プロセスが消えたら初期化完了である。