ESXiでThinディスクをシュリンクする場合のメモ

ESXiでThinディスクをシュリンクする

ESXiで、Thinディスクを作成して仮想マシンにマウントした場合、
ファイルを作成するに従ってVMDKのサイズが増えていきますが、
ファイルを削除しても、VMDKのサイズは減りません。

VMDKファイルのサイズを小さくすることをシュリンク(shrink)と呼ぶこともあります.

 

ESXの場合、基本的には、以下の2つの処理をおこなうことでシュリンクすることができます。

・SDeleteで仮想ディスク内の過去使用したことがあるが、現在未使用領域のNullクリア

SDelete -z ドライブ文字

・仮想マシンを停止して、vmkfstoolでNullブロックを削除する

vmkfstools -K /path/to/disk-name.vmdk

 

注意点としては
・Nullクリアする段階でThinディスクは事実上Thickディスクになります。
つまり、Nullクリア完了時点でVMDKサイズに割り当てした最大容量にまでおおきくなるので、その分の空き容量がデータストア上に必要です。

・スナップショットやリンククローンを使用している場合は、シュリンクできません。

ESX3.5の頃は、Nullクリアした上でThinでStorage vMotionすればシュリンクされたような気がするけど、
ESX4.0以降では、同じブロック間のデータストア間のStorage vMotionだとNullは回収されない模様。別のブロックサイズであれば、回収されるようです。

SDelete & vmkfstoolsの場合は、仮想マシンを停止しなければいけないで、どうしても仮想マシンON状態でやりたい場合は、SDelete & Storage vMotion(別ブロック長間 or FC,iSCSI,DAS<->NFS で移動)もひとつの手かと。

 

(今回の参考)

ESXi/ESX によってホストされた仮想マシン上の VMware Tools 圧縮オプション (2094653)

http://kb.vmware.com/selfservice/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=2094653

Storage vMotion でシン ディスクを移行したとき null ブロックが回収されない (2092768)

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2092768

HP Z800にESXi5.5を入れていろいろやってみる(VMDirectPathでUSBコントローラ、VGA、HD-Audio、SASコントローラを接続)

 

Z800のUSBをパススルーするためにいろいろ調査。

前面USBの接続先
上:1-6 5-2 00:1a,2 3A39 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #6
中:1-5 5-1 00:1a,2 3A39 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #6
下:1-4 4-2 00:1a,1 3A38 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #5

 

背面USBの接続先
上左:2-5 8-1 00:1d.2 3A36 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #3
上右:2-6 8-2 00:1d.2 3A36 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #3
中左:2-2 6-2 00:1d.0 3A34 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #1
中右:2-1 6-1 00:1d.0 3A34 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #1
下左:2-4 7-2 00:1d.1 3A35 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #2
下右:2-3 7-1 00:1d.1 3A35 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #2

エラー 00:1a.7 Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #2
エラー 00:1d.7 Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #1

不明 ?-? 00:1a,0 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4

 

USBコントローラは、パススルー設定および仮想マシンへの接続、ゲストOS上での認識OKです(キーボードで試しました)。

おそらくだが、内部USBヘッダの3ポートが00:1a,0の2つと、00;1a,1の1つに相当していると推測。
残りは2つずつが1セットで1つのUSBコントローラに接続されている模様。
ということは、最大4つの仮想サーバに、USBをそれぞれ直結できる・・・・ハズ

USB2 EHCIについては、パススルー設定はできるのだが、仮想マシンに接続して仮想マシンを起動しようとすると、
エラーになり起動できません。
ただしここでZ800での落とし穴。
USB2 EHCIがエラーになる理由がはじめはわからなかったのだが、UHCI(USB1.1)とEHCI(USB2.0)がヒントでした。
実はZ800のUSBポートですが、接続する機器がUSB1.1かUSB2.0かによって、接続される内部ポートが変化します。
たとえば、内部接続00:1aに接続されている前面USB物理ポートですが、USB1.1機器(キーボードやマウス等)はそれぞれ対応したUSB UHCI内部コントローラに接続されます。
しかし、USB2.0機器(USB-HDDやUSBメモリ等)の場合は00:1a.7のUSB2 EHCIコントローラに接続されます。

背面USBの場合、USB1.1機器を接続した場合は内部接続00:1dに接続されている対応したUSB UHCI内部コントローラ(.0-2)に接続され、
USB2.0機器の場合は00:1d.7のUSB2 EHCIコントローラに接続されます。

このおかしな挙動のせいで、ESXにUSB2 EHCI Controller#1,#2をVMDirectPathでパススルーしても、仮想マシンが起動できないようです。

なお、USB2 EHCI Controller#1,#2をパススルー設定せずに、ESXiで認識させ、ESXiのUSBパススルー機能を利用することで、
ゲストOSにUSB2.0機器を認識させることは出来るので、最悪これで。安定度がどの程度かはやってみないとわかりません。

ちなみに、USB2.0のUSB HUB経由で接続すると、USB2 EHCI Controllerでの認識となるので、パススルーは事実上できません。

現在の私の予定ではUSB3.0のPCI-eボードを追加してパススルーさせる予定ではあるので、
使い勝手は悪くなるけど、理由まではわかったのでここまでとします。

 
その他デバイス
本体内蔵スピーカ 00:1b.0 Intel Corporation 82801JI (ICH10 Family) HD Audio Controller
SASコントローラ 41:00.0 LSI Logic / Symbios Logic LSI1068E
Quadro4000 0f:00.0 NVIDIA Corporation GF100GL
Quadro4000-HDAudio 0f:00.1 NVIDIA Corporation GF100 High Definition Audio Controller

上記はすべてPassthrough OKでした。

本体内蔵スピーカは、本体ケース前面付近に設置されたスピーカに接続されたHD-Audioです。
本体のみで普通に音が鳴ります。

SASコントローラはオンボードのSAS/SATAの8ポートです。
接続されたHDD(SAS300GB15kを4本)も認識できていることを確認できました

Quadro4000のDirect PassthroughはVMware的に言えばvDGAってやつです。
画面上はESXi起動途中で止まってハングしたように見えるけど、内部的には動いていて、
そのうちvSphereClientやvCenter経由で接続できるようになります。
メモリ2GB以上仮想マシンに積んでいる場合は、
仮想マシンのコンフィグに以下を追加します。
pciHole.start = “1200”
pciHole.end = “2200”
後は、デバイスマネージャからドライバを自動検索でインストールすればOKです。
Quadro4000側のHDAudioも問題なし。

 

ほかには、すでにESXiで使用しているAHCI(6ポートSATA)やNIC(BCM5764M)x2もありますが、これはやろうと思えばできそうです。
1394aインターフェースもありますが、対応機器を持っていないので、確認はできません。
やはり、いろいろと奥が深い・・・

ESXでAFT-Diskを使う場合について少し調査中

ESXでAFT-Diskを使う場合について少し調査中

ESX5.0以降であれば、VMFS領域確保時に、領域の最初は4KBにあわせて確保されるので、アライアンスを気にする必要はない模様

ただし、VMFS上に作成したVMDKは512バイトセクターとして見えますが、実際にアクセスするHDDはAFT領域(論理512,物理4096)なので、結局はゲストOSからしてみれば、AFT-Diskを使用するのと同じ注意が必要

Windows のVISTA/7/2008 SP1以降は、領域確保時にクラスタ協会が4KBに合う様に調整され、NTFSであれば標準4KBクラスタなので、実際影響はありません。

ただ、その他のOSについては、別途確認が必要です。

Solaris系ですと、デフォルトでは512KB単位でのアクセスになるようなので、AFTの影響を受けます。

特に、Windows XPでは、ほとんどの場合AFTの影響を受けます。
XPのインストール時のフォーマットでは、63セクターから領域が確保されるため、4K境界と合っていないためです。

事前にWindows 7 SP1以降でHDDをフォーマットすれば、2048セクターから領域が確保されるので、その後WindowsXPをインストールすればよいという話もありますが、すでにWindowsXPをインストール済みの場合はそうはいきません。

専用のソフトもありますが、有償のものや特定のHDD専用が多いので無償でできるものがないかを調べてみました。

見つけたのは、パーティション変更のためのCD-BOOTタイプのソフトである、「gparted」
本来はデータを保存したままでパーティーションサイズの変更に便利なソフトウェアですが、
パーティーションの領域移動もできるので、この機能を使ってアライアンスを調整します。

ISOが以下のサイトからダウンロードできるので、そこからブートします。
http://sourceforge.jp/projects/gparted/releases/

まずは現状確認。開始セクターは63になっています。

xp-gpearted1

リサイズ/移動をクリックします。

Align to: をMiBになっていることを確認し、前方の空き領域(MiB)に1を指定します。
後方の開き領域があれば、その分 ヘるためサイズの変更はありません。

変更後、リサイズ/移動ボタンをクリックします。

xp-gpearted4

変更内容を確認し、Applyをクリックします。

xp-gpearted5

パーティション領域の移動が開始されます。

xp-gpearted6

完了。

xp-gpearted7

移動後確認すると、開始セクターが2048になっていることが確認できました。

xp-gpearted8

 

Windows XPを起動すると、Checkが走りますが、その後正常に起動できます。

xp-gpearted9

 

なお、アライアンス調整をする前とした後だと、
シーケンシャルReadで2倍、シーケンシャルWriteで1.5倍の差が出ました。

ただ、この結果はNexentaStorというストレージOS上のZFS領域を仮想マシンのデータストアとして使用した場合なので、直接HDDにアクセスした場合とは異なります。
なお、ZFSはSSDをReadキャッシュ(CACHE)やWriteキャッシュ(LOG)に指定できるため、その状態だと、そのこまでの差が出なくなります(SSDが差を吸収しているようです)。

aft5

 

なお、4TBクラスで、AFTではないHDDには以下のようなものがあります。

MD03ACA400

東芝製の4TB SATA-HDDのバルク品。
「回転数は7,200rpm、MTTFは100万時間。512セクター対応品」

他のハードディスクがどちらかについては、以下のURLが参考になります。
http://www.pc-master.jp/jisaku/aft-hdd.html

 

その他参考URL

https://www.allbsd.org/~hrs/diary/201109.html

https://www.icts.uiowa.edu/confluence/pages/viewpage.action?pageId=67307552

https://community.oracle.com/thread/2501822

http://openindiana.org/pipermail/openindiana-discuss/2013-August/013669.html

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2014761

http://blog.delphix.com/gwilson/2012/11/15/4k-sectors-and-zfs/

http://wiki.illumos.org/display/illumos/List+of+sd-config-list+entries+for+Advanced-Format+drives