sparse fileについて覚え書き

Ubuntu Linux+Xenを試してみる過程でsparse fileの存在を知ったので、少し調べてみました。結論としては、VMwareのようにVM側で圧縮したディスクイメージを扱える場合は別として、現状のcoLinuxXenではディスクスペースの節約手段としてsparse fileの利用が有効そうです (coLinuxの場合は「圧縮ファイル」の方が良いかも)。

Sparse fileについての情報源

Sparse fileの作成・管理

  • LinuxなどのUNIX系OSでは、dd seek=<ブロックサイズ> により、新規にsparse fileを作成可能
  • Windows 2000以降のNTFSでもsparse fileをサポートしている
    • ただし、fsutilコマンドで作成されるファイルはsparse fileではないらしい (上の@IT記事より)
    • cygwinのddコマンドでsparse fileは作れるんだろうか? (追記: ちょっと実験したところでは、ddだけでは駄目で、ファイル作成時にfsutil sparse setflagを実行する必要がある模様。fsutil file createnew と fsutil sparse setflagの組み合わせでもOK)
  • Cのfseek()、Perlのseek(), RubyのIO#seek などでもsparse fileを作成可能
  • lsコマンドの -s (--size) により、ファイルが実際に占有しているサイズを調べることができる
  • cpやtarコマンドを実行した結果、コピー先ファイルではホール (穴) の代わりに0で埋められる可能性がある
    • GNU cp/tarでは、cp --sparse=auto/always, tar --sparse を指定することにより、スパースな状態を維持したままコピーできる