ad1

2018年12月9日日曜日

vSAN各バージョン毎の設定によるストレージ消費量について比べてみました

vSANを利用している時に、VMストレージポリシーの冗長設定やデプロイ時のThinかThickかの設定によって仮想マシンが消費するストレージ量が異なり、定期的に質問されるので、2018年末時点で現役の各vSANバージョンでの違いをまとめてみました。

特にバージョン毎でOVFテンプレートのデプロイ時の挙動に差があるのと、Flash Web Client と HTML5 vSphere Clientでの挙動の差が意図しない容量消費につながる場合がありそうなので一読いただけると幸いです。

※本投稿は vExperts Advent Calendar 2018 の 12/8 参加分のナレッジとなります。(日時間違えてて12/9投稿となってしまいました…)

※ また、DellEMC でトレーナーをしている Sakai さん が本投稿の続編となる詳細確認を記事にまとめましたので、そちらも併せて参照ください。
vSAN上の仮想マシンのディスク消費量の確認
https://lab8010.com/vsan-disk-usage-check/


今回確認したバージョンは以下の3バージョン。
  • vSphere 6.0u3 (vSAN 6.2)
  • vSphere 6.5u2 (vSAN 6.6.1)
  • vSphere 6.7u1 (vSAN 6.7u1)

それぞれで、VMストレージポリシーでFTT0(冗長無し)、FTT1(RAID1)※vSAN Default Storage Policy、FTT1+100%予約(RAID1)の違い、
vDiskの形式をThinpro、Thick LazyZeroed、Thick EagerZeroedによる違い、
OVFをデプロイする時のvDiskの形式設定の違いとFlash Web Client と HTML5 vSphere Clientでの違いなど、いろいろ比べてみました。

各ストレージポリシーの設定

各ストレージポリシーは以下のように設定しています。

  • FTT0(冗長無し)


  • FTT1(RAID1)※vSAN Default Storage Policy


  • FTT1+100%予約(RAID1)


vSphere 6.0u3 (vSAN 6.2) の場合

VMストレージポリシーの違いによるストレージ消費(vDiskはThinpro形式)

今回はHCIBenchの仮想マシンをデプロイして確認しました。

  • FTT0(冗長無し)
    vDiskはThinpro形式なので初期の容量消費はほとんどありません。


vSANデータストアのファイルビューで容量を確認すると以下の様になります。

  • FTT1(RAID1)
    FTT1になり、FTT0の時と比べ倍の容量消費がありますが、Thinproなのでまだ容量はほとんど消費されていません。


ファイルビューでもFTT0の時の倍の容量が確保されています。
仮想マシンとしての実際の容量に対してストレージポリシーで定義した冗長分もカウントされて表示してくれます。



  • FTT1+100%予約(RAID1)
    FTT1のポリシーに「オブジェクトスペースの予約 = 100%」を設定すると、vDiskの容量すべてが確保され、容量消費がまるっと割り当てられます。


FTT1+100%予約 の場合はファイルビューで確認してもvDiskのサイズ100%がRAID1で2倍確保されています。
今回はハードディスク2が200GBで割り当てていますので、RAID1+予約100%分で400B近くがあらかじめ確保されています。
見た目はThick形式のようです。


vDiskの形式(Thinpro/Thick Lazy/Thick Eager)による違い

vSANデータストアを利用する場合、Flash Web Client、および vCenter 6.5以降のHTML5 vSphere ClientではThick形式の仮想ディスクは作成できません(メニューで選べない)。
そのため、今回はPowerCLIでそれぞれの仮想マシンに新規vDiskを作成して確認しました。
※ここでは100GBのvDiskを、ThickLazyという仮想マシンにThick Lazy Zeroed、ThickEagerという仮想マシンにThick Eager Zeroedのものを追加しました。また、追加したvDiskの容量が反映されるのは仮想マシンをパワーオンしたタイミングです。

■Thick Lazy ZeroedのvDiskの作成方法
New-HardDisk -VM Thicklazy  -CapacityGB 100 -Datastore vsanDatastore -StorageFormat Thick -Controller "SCSI controller 0" -Persistence IndependentPersistent

■Thick Eager ZeroedのvDiskの作成方法
New-HardDisk -VM ThickEager  -CapacityGB 100 -Datastore vsanDatastore -StorageFormat EagerZeroedThick -Controller "SCSI controller 0" -Persistence IndependentPersistent

■作成したvDiskの確認
それぞれの仮想マシンに想定するvDiskが付いたことを確認します。

PS C:\> Get-VM -Name Thi* | Get-HardDisk | Select Parent, Name, CapacityGB, storageformat | FT -AutoSize

Parent     Name        CapacityGB    StorageFormat
------     ----        ----------    -------------
ThickEager Hard disk 1        100 EagerZeroedThick
ThickLazy  Hard disk 1        100            Thick
ThinPro    Hard disk 1        100             Thin

  • Thinpro(FTT1)の場合
    起動状態で確認し、vSwapファイル分の4GBが消費されているのみです。
  • Thick Lazy(FTT1)の場合
    Thickディスクが割り当てられると、オブジェクトスペースの予約で100%を指定したのと同様に、vDiskのサイズが100%確保されます。
  • Thick Eager(FTT1)の場合
    Thick Eagerの場合も容量消費はLazyと同様となります。

vSphere 6.5u2 (vSAN 6.6.1)の場合

VMストレージポリシーの違いによるストレージ消費(vDiskはThinpro形式)


  • FTT0(冗長無し)
  • FTT1(RAID1)
  • FTT1+100%予約(RAID1)

VMストレージポリシーの違いによる容量消費はvSAN 6.2と同様の挙動でしたので、ここでは割愛します。

(注意)HTML5 vSphere Clientで新規の仮想マシンの作成、OVFテンプレートのデプロイ、および仮想ディスクの追加の操作をする場合、対象データストアがvSANの場合は必ずVMストレージポリシーで指定するようにメニューが固定化されます。

Flash Web Clientでは以下の様にOVFテンプレートのデプロイ時などにはvDisk形式を指定できました。

vDiskの形式(Thinpro/Thick Lazy/Thick Eager)による違い

vDiskの形式の違いによる容量消費に違いはなかったのですが、OVFテンプレートのデプロイ時にFlash Web ClientでThinpro/Thick Lazy/Thick Eagerをそれぞれ指定してデプロイする場合は正しく想定したvDisk 形式でデプロイされますが、
vSphere 6.5u2までのHTML5 vSphere ClientでOVFテンプレートをデプロイした場合に、「仮想マシンストレージポリシーでの定義の通り」に指定されていても、Thick Lazyでデプロイされてしまう不具合があるようです。
※全てのOVFがそうではないかもしれませんが、私が確認したOVF(HCIBenchやvMAなど)ではこのような不具合が確認できました。




このように本来はThinproでデプロイされるはずの設定を選んだ場合でも、デプロイ後はなぜか以下の様にThick Lazyになっていて、容量消費が想定以上になってしまいます。

vSphere 6.5u2時点でのHTML5 vSphere Clientは未完成の部分も多いので、
この様な既知の問題もあるので、vSphere 6.5u2までの環境ではOVFテンプレートのデプロイにはFlash Web Clientを利用したほうが良さそうです。

vSphere 6.7u1 (vSAN 6.7u1)の場合

VMストレージポリシーの違いによるストレージ消費(vDiskはThinpro形式)


  • FTT0(冗長無し)
  • FTT1(RAID1)
  • FTT1+100%予約(RAID1)

VMストレージポリシーの違いによる容量消費はvSAN 6.2、vSAN 6.6と同様の挙動でしたので、ここでは割愛します。

vDiskの形式(Thinpro/Thick Lazy/Thick Eager)による違い

vSphere 6.5u2 のFlash Web Clientでの問題だったデプロイしたOVFテンプレートのフォーマットがThick Lazyになってしまう問題が改善されていました。

HTML5 vSphere Clientでの設定時には以前と同様に、vDisk形式は選択できず、VMストレージポリシーに準拠した形となります。
※vSANの場合はThinproになります。

デプロイ後に起動すると無事にThinproとして容量消費されている事が確認できました。

ちなみに、vSphere 6.7u1でもFlash Web Client(FLEX)を選んだ場合は、OVFテンプレートのデプロイ時にThick Lazy / Thick Eagerを選択し、その場合は意図した形式でのデプロイが可能です。


PS C:\> Get-VM -Name 6.7* | Get-HardDisk | Select Parent, Name, CapacityGB, storageformat | FT -AutoSize

Parent                Name        CapacityGB    StorageFormat
------                ----        ----------    -------------
6.7-FWC-OVFThickLazy  Hard disk 1         16            Thick
6.7-FWC-OVFThickLazy  Hard disk 2        200            Thick
6.7-H5C-OVFThinpro    Hard disk 1         16             Thin
6.7-H5C-OVFThinpro    Hard disk 2        200             Thin
6.7-FWC-OVFThickEager Hard disk 1         16 EagerZeroedThick
6.7-FWC-OVFThickEager Hard disk 2        200 EagerZeroedThick

まとめ

以上、今回確認した各バージョンでの仮想マシンの容量消費の違いについて、Vmwareの当初から想定していたVMストレージポリシーによる定義(FTTやオブジェクトスペース予約)は以前のバージョンから正しく認識できていたようですが、
OVFテンプレートのデプロイ時には、各バージョンのFlash Web Client、HTML5 vSphere Clientによって設定できる事の違いや、意図しない挙動がありました。

現在の最新であるvSphere 6.7u1のHTML5 vSphere Clientは一部を除きの設定に対応するなど、今後の主インターフェースとしてvSAN関連の操作、挙動も正しく動くようになっています(OVFデプロイ時のvDisk形式指定はFlash版のみの様でしたが)

半面、vSphere 6.5まではHTML5 vSphere Clientはあくまで準備中の位置付けでしたので、OVFテンプレートのデプロイ時のvDiskフォーマットがThickになってしまう問題などいくつかの課題もありました。

vSANを利用している時に意図しない容量消費が発生している様な場合は、今回のレポートを参考にしていただければ幸いです。

過去30日でアクセスの多い投稿