Ubuntu 12.04でデフラグする(e4defrag編)

※2012年9月28日、間違えていた部分を修正。Thanks!、id:omasanoriさん。



Ubuntu 12.04からe4defragというext4用のデフラグツールが利用できるようになった。

$ e4defrag
Usage	: e4defrag [-v] file...| directory...| device...
	: e4defrag  -c  file...| directory...| device...

デバイスも対象に出来るらしい。

-vオプションを付けると、extentsがいくつに減ったか表示される。

-cは断片化状況を表示するオプションで、sudoと-vと一緒に使う。

e4defragはfake-defragと同じくfallocateを使用している。Ubuntu 12.04では11.10にあったfallocateのバグは修正されているようだが、精度が11.04の頃並に低下しているので、断片化を完全に解消することは難しいような気がする。

-cを付けてファイルを対象に実行すると、次のように表示される。

$ sudo e4defrag -cv ubuntu-12.04-beta2-desktop-amd64.iso.bak 
<File>
[ext 1]:	start 36286464:	logical 0:	len 12288
[ext 2]:	start 36319232:	logical 12288:	len 2048

※長いので省略

[ext 30]:	start 36945920:	logical 176128:	len 2048
[ext 31]:	start 36944933:	logical 178176:	len 843

 Total/best extents				31/1
 Average size per extent			23099 KB
 Fragmentation score				0
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This file (ubuntu-12.04-beta2-desktop-amd64.iso.bak) does not need defragmentation.
 Done.

断片化の数スコアが0〜30、31〜55だとデフラグの必要が無く、56以上だとデフラグが必要と言われるらしい。

それをデフラグするとこうなる。

$ sudo e4defrag -v ubuntu-12.04-beta2-desktop-amd64.iso.bak 
ext4 defragmentation for ubuntu-12.04-beta2-desktop-amd64.iso.bak
[1/1]ubuntu-12.04-beta2-desktop-amd64.iso.bak:	100%  extents: 31 -> 25	[ OK ]
 Success:			[1/1]

extentsの数が31から25に減った。なんという低性能。無いよりマシだけど、これはひどいと言わざるを得ない。