ジャーナリングシステムの落とし穴

とある NAS で,MVD Snap という一種のジャーナリングシステムを使っている.ジャーナリングの要領でファイルのメタデータ (正確には使用済ディスクブロックのポインタ情報) を記録してくれる.最初は,よくできたバックアップシステムくらいに思っていたんだけど,最近その落とし穴に見事にはまってしまった.



空き容量があとわずかになっていたので,空き容量を増やそうと不要なファイルを消してみたら,なんと逆に空き容量がさらに減ってしまったじゃないですか.

これがこのシステムの罠で,ファイル削除を行っても実際にはそのディスクブロックは書き込み禁止になるだけで消去されず,しかもそのファイルのメタデータがジャーナルに書き込まれるので,さらにディスク容量を圧迫する結果になるのだ.

うっかり使用率 100% にしてしまうと大変なことになる.というか最近,実際にそれが身近で起こった(ぉ.こうなると rm しようとしても "No space left on device." が出るばかり.結局,専用のインタフェースから古いスナップショットを削除して空きを作ることができたんだけど,かなり冷汗ものでした.



そもそも,スナップショットが複数あった場合,各スナップショットでファイルを変更するたびに新しいスペースに書き込まれていく各スナップショットでファイルを変更すると新しいスペースに書き込まれていく

when users modify data, and a snapshot record is created, the data is temporarily frozen and new excess data is over-written in the extra space.
らしいので ("the additional disk space is nearly zero" って嘘だろー),ファイル数が増えるほど,そしてそれらの更新頻度が高いほど,ディスク容量はどんどん逼迫していく場合がある.なんか使用率が 50% を超えたあたりから加速度的に使用量が増えていったような気がしてたんだけど,まんざら気のせいでもないかも.



追記 (2006-10-22): 突っ込みを受けて若干修正しました.査読に対する修正の良くない例のようにみえるのは多分気のせいです.