アフィリエイト広告を利用しています

広告

posted by fanblog

e2undo

e2undoコマンドの使い方について説明します(kenrel: 2.6.39-rc1 e2fsprogs: 1.41.12)。
e2fsprogsパッケージに含まれており、ext2/ext3/ext4に対して実行できます。


e2undoコマンドは実行したコマンドをlogからリプレイします。
今回はtune2fsコマンドでのinodeサイズの変更を取り消す方法を例とします。


inodeサイズはmke2fsコマンドでFSを作成する際に指定出来ます。
通常、ext2/ext3では128byteで管理されます。

一方、ext4は256byteがデフォルトとなっています。
ext4ではnano秒単位で時間を保持出来る様になっており、その情報がinode内に格納する
関係で128byteより大きな値になっています。
また32bitで管理するその他エントリの拡張にも利用されます。


それ以外のinodeの余り領域には、ACLや拡張属性(xattr)の情報が格納されます。
128byte時は外部に取得したブロックにこれらの情報が格納されます。
そのため、inode内部に保持した方が、inode外のブロック読み込みが発生しないため
若干のアクセス性能の向上が見込めます。
ただ、体感として違いがわかるには大量のアクセスが必要となります。


ext2/ext3でも128byteより大きなinodeサイズを指定出来ますが、
ACL, xattrを使わない限りメリットはありません。

むしろ、inodeが小さい方がファイルの作成時間が短くてすみますので、
ext2/ext3ではinodeサイズは128byteで運用すべきだと思います。


1.ログの出力先を作成する

まずはログファイルの出力先として、/var/lib/e2fsprogsを作成します。


[root@localhost /]# mkdir -p /var/lib/e2fsprogs


2. ext4の作成

ext4をinodeサイズ128byteで作成します。
e2fsprogs: 1.41.12のtune2fsではflex_bgが有効である場合、
inodeサイズの変更をサポートしていないため、flex_bgをoffにします(将来的にはサポートされるようになるかもしれません)。


[root@localhost /]# mkfs -t ext4 -I 128 -O ^flex_bg /dev/sda8


inodeサイズが128byteで出来ていることが確認できます。


[root@localhost /]# debugfs -R stats /dev/sda8
debugfs 1.41.14 (22-Dec-2010)
Filesystem volume name:

Inode size: 128



3. inodeサイズを256byteにする

tune2fsコマンドでinodeサイズを変更します。
e2undo用のログファイルが作成された旨が出力されます。
※出力先のディレクトリがない場合は出力されません


[root@localhost /]# tune2fs -I 256 /dev/sda8
tune2fs 1.41.14 (22-Dec-2010)
To undo the tune2fs operation please run the command
e2undo /var/lib/e2fsprogs/tune2fs-sda8.e2undo /dev/sda8



[root@localhost /]# debugfs -R stats /dev/sda8
debugfs 1.41.14 (22-Dec-2010)
Filesystem volume name:

Inode size: 256



4. e2undoでもとに戻す

e2undoコマンドにログを指定し、inodeサイズをもとに戻します。


[root@localhost /]# e2undo /var/lib/e2fsprogs/tune2fs-sda8.e2undo /dev/sda8 | more
Replayed transaction of size 1024 at location 919673
Replayed transaction of size 1024 at location 919563
Replayed transaction of size 1024 at location 919518
Replayed transaction of size 1024 at location 919449
Replayed transaction of size 1024 at location 919339
...



e2undoでリプレイした結果inodeサイズが128byteにもどっています。


[root@localhost /]# debugfs -R stats /dev/sda8
debugfs 1.41.14 (22-Dec-2010)
Filesystem volume name:

Inode size: 128



余談ですが、一度大きく拡張したinodeサイズは通常元に戻せません。
e2undoを実行できるログがあるときのみできます。
そのため、inodeサイズを変更する際には万が一のためにログを出力出来るようにしておくべきです。


[root@localhost /]# tune2fs -I 128 /dev/sda8
tune2fs 1.41.14 (22-Dec-2010)
Shrinking the inode size is not supported




この記事へのコメント

   

WWW を検索 Linux Blue を検索
プロフィール

uni
仙台でLinuxのエンジニアをしています。 忘備録もかねて主にLinuxについて載せています。 ここからの情報が何かの役に立てば幸いです。
リンク集
Links

<< 2013年01月 >>
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
カテゴリアーカイブ
月別アーカイブ
最新記事
×

この広告は30日以上新しい記事の更新がないブログに表示されております。