スパースファイルとVMware

スパースファイル

データとデータの間に書き込みがないスペースが存在するファイルのこと。
lsで見ると作成した容量分のサイズが表示されるが、
duやdfで見ると実際の使用容量分でしか表示されない。

スパースファイル作成方法
dd if=/dev/zero of=test.img bs=1024k seek=2048 count=1
※duで見ると、1MB,lsで見ると2GBのファイル

このようにseekを指定することでスパースファイルが作成できる。
実際には1MBのファイルとして存在するので、一瞬で作成される。

ファイルシステムの設定

ext3でスパースファイルを扱うにはファイルシステムの設定を行う必要あり。

  • 設定確認
 # tune2fs -l /dev/sda1
 ・・・略
 Filesystem revision #:    1 (dynamic)
 Filesystem features:      has_journal resize_inode filetype needs_recovery sparse_super large_file
 Default mount options:    (none)
 Filesystem state:         clean
 ・・・略

Filesystem featuresにsparse_superが設定されている場合、
スパースファイルを扱う設定になっている。

  • 設定変更する方法
 # tune2fs -O ^sparse_super /dev/sda1

'^'をつけるとオプション削除。
'+'をつけるとオプション追加。

sparse_superオプションの変更を行った際は、e2fsckで再構成しないといけない。
実際仮想マシン上で実施してみたが、
fsckが永遠にループして終わらなかった・・・

VMware ESXiとスパースファイル

新規ディスクを作成する際、シンプロビジョニングの設定を有効にして作成すると、
作成されるvmdkファイルはスパースファイルである。
これにより瞬時にディスク作成可能となる。

また、ディスクの格納先をNAS上にすると、
シンプロビジョニングでディスクを作成するかどうかの選択はNASの設定によって決まる。