Linuxのext3/ext4ファイルシステムはフラグメントに強いと言われていますが、ファイルシステムである以上発生しないものでもありません。特に長期間使い続けていると気になるものです。
Windows標準機能の様なディスク全体のデフラグではなくファイル単位で行うもので、マウントしているファイルシステムでも使用中でないファイルであればデフラグを行うことが出来るshakeを試して見たのでメモ。
- Vleu.net: ShAkE-- 本家サイト
インストール
- Debian/Ubuntu
sudo apt-get install libattr1 libattr1-dev cmake help2man - Redhat/CentOS
sudo yum install libattr libattr-devel cmake help2man
- wget http://download.savannah.nongnu.org/releases/shake/shake-0.999.tar.bz2
- tar xvfj shake-0.999.tar.bz2
- cd shake-fs-0.999/build
- cmake ..
- make
- sudo make install
使い方
1. フラグメントのチェック
又は
ファイルシステム全体は
フラグメントの多いファイルは以下の様にしてチェック(1を適当に大きく)
2. デフラグ
shakeは作成からの時間やファイルサイズなどでデフラグを行うかどうかを選択出来ますので強制的にデフラグするには以下の様に。ディレクトリを指定すると再帰的にファイルを全て行うようです。試していませんがディスク全体を行わせると効率が上がるようです。
xattr関係でエラーが出たりした場合には-Xをつけてみてください。
試しに107のextentに分かれているファイルをshakeしてみると51に減りました。結果のファイルをcompareしましたが一致しました。
3. その他
引数でファイル名、ディレクトリ名を省略すると標準入力からファイル名を読み込むのでfindやフィルタと組み合わせることも可能です。
感想など
このツールはファイルをリライトすることでフラグメントを減少させているので必ずしもいい結果となるかどうかはわからないのですが、面白そうなので気になるfsに使ってみることにします。