2008-06-15

スパースファイルの作り方

Portageに入っている iscsitargetがアップデートされ、今使っている Xenのカーネル(2.6.20)でもビルドできるようになったので MacProの TimeMachine用にiSCSIを立ち上げることにした。

iSCSIを使っていて思ったんだけど、LVMで作った論理ボリュームをSCSIディスクとして他のホストへ提供していると、そこに作られたパーティションを udevが勝手に認識してしまい面倒なことになったりする。これを避けるため、(少々のオーバーヘッドは覚悟の上で)ホスト側でいったんファイルシステムを作成しその中のイメージファイルをディスクとして提供することにした。

しかしながら、何百ギガバイトものファイルを ddで普通に作成するのにはかなり時間がかかる。なのでここはスパース(sparse, 疎な)ファイルを使うことにしたのでその方法をメモしておく。

私はこのようにして 400GBのスパースファイルを作成した。
dd if=/dev/zero of=timemachine-for-macpro.img bs=1M seek=409600 count=0

この操作は一瞬で終わるが、ls -l でファイルサイズを表示してみると確かに400GBの長さがあることになっている。
しかしこの段階では実際にはディスク容量を消費しておらず(それは dfで確認できる)、ファイルに対し書き込みが行われるにつれ順次ディスク容量を消費していくことになる。

巨大なファイルを作成するための時間と、初期のディスク容量を節約したい向きにはスパースファイルがお勧めである。
ただし運用中にフラグメントが発生しやすいであろうと想像できるため、パフォーマンスを稼ぎたい場合には向かないだろう。

0 件のコメント:

コメントを投稿

<< ホーム