sparse fileについて覚え書き
Ubuntu Linux+Xenを試してみる過程でsparse fileの存在を知ったので、少し調べてみました。結論としては、VMwareのようにVM側で圧縮したディスクイメージを扱える場合は別として、現状のcoLinuxやXenではディスクスペースの節約手段としてsparse fileの利用が有効そうです (coLinuxの場合は「圧縮ファイル」の方が良いかも)。
Sparse fileについての情報源
- UNIXの部屋 検索:穴あきファイル: sparse file全般の説明と落し穴、Perlのseek()によるsparse file作成方法
- TRPG: memo - sparse file: ddコマンド、RubyのFile#trancateによるsparse fileの作成
- Did you ever wonder how some files got bigger when copied?: fseek(3)によるsparse fileの作成方法
- @IT - 巨大なサイズのファイルを簡単に作る方法 fsutilコマンドによる巨大ファイルの生成方法 (Windows)
Sparse fileの作成・管理
- LinuxなどのUNIX系OSでは、dd seek=<ブロックサイズ> により、新規にsparse fileを作成可能
- Windows 2000以降のNTFSでもsparse fileをサポートしている
- Cのfseek()、Perlのseek(), RubyのIO#seek などでもsparse fileを作成可能
- lsコマンドの -s (--size) により、ファイルが実際に占有しているサイズを調べることができる
- cpやtarコマンドを実行した結果、コピー先ファイルではホール (穴) の代わりに0で埋められる可能性がある
- GNU cp/tarでは、cp --sparse=auto/always, tar --sparse を指定することにより、スパースな状態を維持したままコピーできる