イメージバックアップするのならファイル削除時にはゼロで埋めといた方が有利

VMware 上に Linux 機を立てていて、こいつのバックアップをハイパーバイザー側から取る仕組みになっている。

100GBのディスクイメージで、中身は LVM のうえに ext4 が乗っている。内容的には10GBくらいしか使っていない。10GBの内容物が圧縮ファイルなのでこれはもうつぶれないが、他の約90GBは単に空き容量なのでぺしゃんこにつぶれるだろうと期待してバックアップしてみたが見事につぶれない。バックアップファイルが約99GB、ほとんど圧縮できていない計算だ。

どうして?と思っていたら、このファイルシステム上ではいつもファイルが生成されては削除されてを繰り返しているようで、表面には見えてないけれども中身的には削除されたファイルの実体がぎっしり詰まっているという状態だった。

これじゃあつぶれないわ。

というわけで、今後はファイル削除はただのアンリンクじゃなくて、ゼロで埋めてから消すこと、としてみる。

 

# rm filename

 

とするのではなくて、

 

# shred -n 0 -z -u filename

 

こうする。shred コマンドで、乱数埋めはしなくて、ゼロで埋めて、最後にアンリンク、と。

これが効いた。続けていたら空き領域が徐々にゼロで埋まっていったようで、近頃はほぼ実容量くらいまでつぶれるようになった。

削除を rm 使うなって言われても手作業だったら面倒だけど、cronで定期実行しとるやつだから何の苦労もないし。