Sparse fileの紹介

一般の方は、コンピュータにオペレーティングシステムをインストールする際、ディスク容量の算定にそれほど悩むことはないでしょう。しかし、Disk Image Serverを構築する場合があれば、最小限のストレージ容量で、できるだけ多くのDisk Imageを管理する必要があります。

一般的に、MGBのDisk ImageをN個扱う必要があれば、M*N GBほどの容量が必要となります。
ここで、以下のような容量算定において検討が必要です。

容量算定の検討

  • 要件:実際の使用量は30GBあれば十分である。
  • 解決策:想定外の状況に備えて、ディスク容量を50GB程度とっておく。

上記のように、サイズの上限を十分確保しておくとよいでしょう。しかし、多くのスペースを空の状態にしておくと、保存スペースが無駄になる可能性があり、該当のDisk Imageをバックアップしたいときにも、割り当てられたFile Sizeがあまりに大きく、バックアップに若干の手間がかかることがあります。

では、この問題をどのように解決すればよいでしょうか?
解決策として「Sparse file」が使用できます。wikiから抜粋したSparse fileを紹介しましょう。

Sparse File : In computer science, a sparse file is a type of computer file that attempts to use file system space more efficiently when the file itself is mostly empty. This is achieved by writing brief information (metadata) representing the empty blocks to disk instead of the actual “empty” space which makes up the block, using less disk space. The full block size is written to disk as the actual size only when the block contains “real” (non-empty) data.


A sparse file: The empty bytes don’t need to be saved,
thus they can be represented by metadata.

Sparse fileは生成されたとき、全体のサイズを割り当てず、実際のデータが存在する領域のみを生成します。そして、使用できる場合のみブロックが割り当てられるため、ディスク領域を効率的に使用できます。

Sparse fileはDisk image、DBのSnapshotなどに使用されます。
では、Disk imageに使用されたSparse fileの例を見てみましょう。

Sparse Disk File
h81m-windows7.imgはWindows OSがインストールされたSparse disk fileです。
iSCSI標準を利用したRemote Disk Serviceを提供するために製作されたDisk imageです。

lsオプションの中から-sを与えると実際に割り当てられたサイズを確認できます。

左側のPhysical file sizeは23GB、Logical file sizeは50GBであることが分かります。
まだ27GB残っているので、その分のスペースに他のファイルを保存できる利点があります。
実際のファイルサイズが小さいので、バックアップが軽い点もよいですね。

Sparse fileは利点だけなのでしょうか?
もちろん欠点もあります。

【利点】

  1. ディスク領域の節約
  2. 使用可能なディスク領域よりも大きいファイルが作成可能

【欠点】

  1. 書き込み操作中に問題が発生する可能性あり(ストレージの集中、またはディスクサイズ割当量超過)
  2. すべてのコピー/バックアップソフトウェアで完全なサポートが保証されない

欠点は、どのように解決すべきでしょうか?
実際にSparse fileを扱うかは、使用するプログラムがSparseオプションに対応しているか確認が必要です。
次回はSparse fileに対応するプログラムについて紹介したいと思います。

参考link: http://en.wikipedia.org/wiki/Sparse_file

TOAST Meetup 編集部

TOASTの技術ナレッジやお得なイベント情報を発信していきます
pagetop