Hatena::ブログ(Diary)

masakiの雑記帳

2009-05-02

Ext3fsからExt4fsへの移行手順

既存のExt3fsなファイルシステムをExt4fsへと移行する実験を行ってみた。以下、その記録。

環境

  • linux-2.6.29
  • e2fsprogs-1.41.3
  • dump-0.4b41

参考資料


準備

実験用のExt3fsなファイルシステムを新規作成する。

# lvcreate --size 1G --name lvtest lvdata
# mkfs -t ext3 /dev/vgdata/lvtest
# mount /dev/vgdata/lvtest /mnt

作成後、適当に中身を入れておく。

umountし、cleanな状態にする。

# umount /mnt
# e2fsck -f /dev/vgdata/lvtest

比較用のExt4fsの作成

ファイルシステムの設定の確認用に、Ext4fsなファイルシステムを新規作成する。何をするべきかわかっているならこの工程は不要。

まともには使用しないので適当でよいのだが、設定に差異が出ないようにサイズは比較対象と同一にしておいた方がよい様子。

# lvcreate --size 1G --name lvext4 lvdata
# mkfs -t ext4 /dev/vgdata/lvext4

tune2fs -l でファイルシステムの "features" を確認する。

# tune2fs -l /dev/vgdata/lvext4 | grep features
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize

Ext3fsからExt4fsへの切り替え

tune2fs -l でファイルシステムのfeaturesを表示し、何が不足しているのかを確認する。

# tune2fs -l /dev/vgdata/lvtest | grep features
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super large_file

乗り換えるべきファイルシステムのfeaturesを変更し、Ext4fsのものと一致させる。

# tune2fs -O extent,flex_bg,huge_file,uninit_bg,dir_nlink,extra_isize /dev/vgdata/lvtest
# tune2fs -l /dev/vgdata/lvtest | grep features
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize

e2fsckにてディレクトリ最適化を行う。これにより、ディレクトリ構造がExt3fsのものからExt4fsのものへと切り替わる。

# e2fsck -fDy /dev/vgdata/lvtest

実験: 普通に試用

mountして使ってみる。特に問題なし。

まじめに負荷をかけるなら、bonnie++あたりのベンチマークを通しておくのがいいのかも。

実験: リサイズ可能か?

ファイルシステムの縮小と拡大を行い、中身が失われないことを確認する。よい様子。

# umount /mnt
# e2fsck -f /dev/vgdata/lvtest
# resize2fs /dev/vgdata/lvtest 512M  (元の1Gから512Mへと縮小)
# mount /dev/vgdata/lvtest /mnt
# rsync -avn --delete /mnt/ ...  (同一内容を持つディレクトリと比較し確認)

# umount /mnt
# e2fsck -f /dev/vgdata/lvtest
# lvextend --size +1G /dev/vgdata/lvtest
# resize2fs /dev/vgdata/lvtest  (512Mから2Gへと拡大)
# mount /dev/vgdata/lvtest /mnt
# rsync -avn --delete /mnt/ ...

実験: dump/restore可能か?

dump/restoreにてバックアップを行えることを確認する。問題なし。

# umount /mnt
# dump 0qf - /dev/vgdata/lvtest | gzip > /tmp/dump.gz

# lvcreate --size 1G --name lvtest-new lvdata
# mkfs -t ext4 /dev/vgdata/lvtest-new
# mount /dev/vgdata/lvtest-new /mnt
# cd /mnt
# zcat /tmp/dump.gz | restore rf -
# rm restoresymtable
# rsync -avn --delete /mnt/ ...  (元通りであることを確認)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/quox/20090502/p1