あらすじ
3TB x 4 (ext3) でソフトウェアRAID(raid5)を組んでいたが、一本ずつ6TBに入れ替え、いざ領域拡張!というところで失敗した。
解決策
ext3 はファイルシステムとして16TBまでしか扱えない(ブロックサイズ4KBの場合)。
ext4 に変換することで領域の拡張が可能となる。
注意
下記で今回うまくいったが、データ消失の可能性もあるのでバックアップは必ず取っておくこと。
手順
ext3からext4に
# umount /dev/md0
# fsck.ext3 -pf /dev/md0
# tune2fs -O extents,uninit_bg,dir_index /dev/md0
# fsck.ext4 -yfD /dev/md0
umount … マウントしてたらアンマウント
fsck.ext3 … ext3のファイルシステムチェック。-pは自動修復 -fはforce
tune2fs … extファイルシステムのパラメータ変更。-Oで属性をセット
fsck.ext4 … ext4のファイルシステムチェック。-yはyes、-fはforce、-Dはディレクトリの最適化
ファイルシステムを変更したので /etc/fstab の記述を変更。
ext3 としていたところを ext4 に。
# vi /etc/fstab
/dev/md0 /data ext4 defaults 1 2
領域拡張
# tune2fs -O 64bit /dev/md0
# e2fsck -f /dev/md0
# resize2fs -b /dev/md0
# e2fsck -f /dev/md0
# resize2fs -p /dev/md0
# mount /dev/md0
tune2fs -O 64bit /dev/md0 … 64bitフラグを /dev/md0 で有効化
e2fsck … ファイルシステムのチェック。-f はforce
resize2fs … ファイルシステム変更。 -b で64bitにコンバート
e2fsck … 変更が完了したら再度ファイルシステムをチェック
resize2fs … リサイズの実行。-p はプログレス表示
mount … マウント
結果
# df -h | grep /dev/md0
/dev/md0 17T 7.7T 7.8T 50% /data
増えた。
実は詰まった部分
linux のバージョンが古いと resize2fs の -b オプションが存在せず実行できない。
e2fsprogs というものに含まれているとのことで、最新版を入れてやる。
# git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
# cd e2fsprogs/
# mkdir build
# cd build/
# ../configure --prefix=/usr/local
# make
# make check
# make install
既存のほうを参照してしまう場合はフルパスで実行。
# /usr/local/sbin/tune2fs -O 64bit /dev/md0
# /usr/local/sbin/e2fsck -f /dev/md0
# /usr/local/sbin/resize2fs -b /dev/md0
# /usr/local/sbin/e2fsck -f /dev/md0
# /usr/local/sbin/resize2fs -p /dev/md0
お世話になったページ