ファイルの断片化
HDDに対してデータの書込みと削除を繰り返す中で、本来1つのファイルが連続してではなく飛び飛びで記録されてしまうことがあります。
特に容量が不足しがちなときに大きなファイルを書き込もうとすると連続して書込みを行うことのできる容量を確保できず、仕方なくバラバラになってしまうことが発生しがちです。
読み書きを行ううえで、連続した領域に書き込まれたファイルとバラバラに書き込まれたファイルでは処理に要する時間が大きく変化することは容易に想像できるかと思います。
このような現象をファイルの断片化(フラグメンテーション)と呼ぶのだそうです。
断片化とデフラグ
上記の通り決してよい影響をもたらすとはいえない断片化ですが、これをメンテナンスする動作を「デフラグ」といいます。
具体的には読み書きを繰り返す中でできてしまった隙間をなくしてファイルを連続した状態で詰め込んでいき、できた大きな隙間には大きなファイルをはめ込むことで断片をなくしていくイメージです。
それではここでコマンドを使って断片化の状況を調べてみることとします。
ちなみに当サーバで採用したファイルシステムはext4という形式でこの場合断片化ができにくいと巷ではいわれているようですがどんなもんでしょう?
早速ターミナルから
e4defrag -c /
と入力してみます。「e4defrag」がext4ファイル形式に対応するデフラグコマンドでオプションとして-cを加えると実際のデフラグは行わずに状態のチェックを行うことができます。
今回はルートディレクトリ以下全てを調べましたが、特定のディレクトリ(/usrや/homeなど)を調べるだけであれば
e4defrag -c /home(/usrなど)
のようにディレクトリ名を入力すればOKです。結果はこの通り↓
root@Homesvr01:~# e4defrag -c /
<Fragmented files> now/best size/ext
1. /var/log/auto_back.log 51/1 4 KB
2. /var/log/mail.info.1 16/1 4 KB
3. /home/ryo/Maildir/.&MLQw33ux-/dovecot-uidlist
10/1 4 KB
4. /var/log/messages.1 10/1 4 KB
5. /var/log/apache2/virtual.host.access.log
10/1 4 KB
Total/best extents 187115/185456
Average size per extent 53 KB
Fragmentation score 1
[0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
This directory (/) does not need defragmentation.
Done.
結果を見ると断片化されているファイル名と一緒にFragmentation scoreとして点数が表示されます。
このスコアが0~30であれば問題なし、31~55であれば要注意、56以上ならデフラグを実行しましょうということらしいのですが自分の場合「1」となってます。
デフラグの必要なし!ということですね。噂どおり断片が作成されにくいファイル形式なんですね~ext4って。