VMware ServerからESXiに乗り換えた後、つらかったのがディスクイメージ形式。
ESXiでは、仮想マシンに割り当てたディスク領域が、割り当てた時点から使用されてしまう為、検証環境を作り始めたらすぐにディスクがいっぱいになってしまいます。
で、調べてみました。
VMware WorkstationやVMware Serverの様に、使用領域しかディスクを消費しない方法がありました。(Shrinkは出来るか未確認です。)
ディスクイメージを作成する際に、コマンドでイメージタイプを指定して作成します。
この方法は、SSHを使用できる様にするか、VMware Infrastructure Remote CLIの導入が必要になります。
コマンドは、こんな感じで実行します。
# vmkfstools --createvirtualdisk +16G --diskformat thin
/vmfs/volumes/4927d7c1-b1318e4f-d21f-001a4bb0d9e7/Tivoli/Tivoli.vmdk
オプションはこんな感じ。
# vmkfstools
OPTIONS FOR FILE SYSTEMS:
vmkfstools -C --createfs vmfs3
-b --blocksize #[mMkK]
-S --setfsname fsName
-Z --extendfs extension-partition
deviceName
-P --queryfs -h --humanreadable
-T --tovmfs3
-x --upgradetype [zeroedthick|eagerzeroedthick|thin]
-u --upgradefinish
vmfsPath
OPTIONS FOR VIRTUAL DISKS:
vmkfstools -c --createvirtualdisk #[gGmMkK]
-d --diskformat [zeroedthick|
eagerzeroedthick|
thick|
thin]
-a --adapterType [buslogic|lsilogic]
-w --writezeros
-j --inflatedisk
-U --deletevirtualdisk
-E --renamevirtualdisk srcDisk
-i --clonevirtualdisk srcDisk
-d --diskformat [rdm:|rdmp:|
raw:|thin|2gbsparse|
monoflat|monosparse]
-X --extendvirtualdisk #[gGmMkK]
-M --migratevirtualdisk
-r --createrdm /vmfs/devices/disks/...
-q --queryrdm
-z --createrdmpassthru /vmfs/devices/disks/...
-v --verbose #
-g --geometry
-J --miscop [setuuid | getuuid]
vmfsPath
OPTIONS FOR DEVICES:
vmkfstools -s --scan adapterName
-L --lock [reserve|release|lunreset|targetreset|busreset] /vmfs/devices/disks/...
For more information, please run 'man vmkfstools' to refer to the online manual.
指定できるディスクイメージタイプは4種類あり、個人的にはThinが一番利用しやすいです。
各イメージ形式の特徴は以下の様になります。
Thick(シック)
シック ディスクには、作成時にすべての領域が割り当てられます。
使用中に最適な I/O レイテンシーが得られますが、作成時に物理メディア上に存在していた古いデータが含まれている場合があるため、セキュリティ面での問題がある可能性があります。
Eager zeroed
Eager zeroed のシックディスクは、作成時にすべての領域が割り当てられた後、ゼロで全て埋められます。
作成時間は長くなりますが、最適なパフォーマンスとより高いセキュリティが得られます。
Lazy zeroed
一度もアクセスされたことが無かったブロックに対して初めてWrite I/O が発生したときは、まずそこをゼロで埋め、その後データの書き込みを行います。それ以降の書き込み処理はシックおよび Eager zeroed と同じパフォーマンスが得られます。
Thin(シン)
シンプロビジョニング仮想ディスクに必要な領域が割り当てられ、作成時にではなくオン デマンドで消去されます。
未書き込みファイルブロックへの最初の書き込み時のI/O パフォーマンスの低下は大きくなりますが、それ以降の書き込みでは、シックおよび Eager zeroed と同じパフォーマンスが得られます。