vm.gowatana.jp

NEOにほんごVMware(仮)

vSAN での「重複排除と圧縮」の検証 Tips。

個人的な vSAN Advent Calendar 7日目です。

自宅ラボの vSAN 7.0 U 1 Advent Calendar 2020 - Adventar

vSAN 7.0 U1 から、容量効率化が「重複排除と圧縮」ではなく「圧縮だけ」で利用できるようになりました。それでは vSAN 7.0 U1 での「圧縮だけ」の容量効率化を有効にしてみます・・・

VMware vSAN 7.0 Update 1 リリース ノート

ドキュメントだと下記のあたりです。

デデュープおよび圧縮の使用

今回の環境

オール フラッシュ構成の vSAN 7.0 U1 クラスタです。vSAN の重複排除と圧縮はディスク グループ単位で作用するので、ESXi ホスト数は少なめ(3 ホスト)にしたいところですが、重複排除 / 圧縮を有効化する際にディスクグループ再作成の空きが必要になるのため 4ホストにしています。そこに、何台か VM を配置しておきます。

vSAN データストアでは、デフォルトでは重複排除 / 圧縮はどちらも無効です。

f:id:gowatana:20201207231009p:plain

容量効率化の設定がない時点では、この環境のデータストア容量は 43GB 程度です。

f:id:gowatana:20201207232527p:plain

使用量の内訳も確認できます。

f:id:gowatana:20201207232613p:plain

Tips1: ラボで vSAN で「圧縮のみ」を有効化すると

vSAN の圧縮機能だけを有効化してみます。

f:id:gowatana:20201207232353p:plain

重複排除 / 圧縮を有効化する際には、ディスク グループが再フォーマットされます。商用環境などでオンライン変更するのは要注意かなと思います。

f:id:gowatana:20201207232810p:plain

処理が終わったら、念のためデータストアで「キャパシティ情報の更新」を実行しておきます。これは、vSphere Client の更新ボタンだけでは、ストレージ容量情報が更新されないことがあるためです。

f:id:gowatana:20201207233017p:plain

では、容量を見てみると・・・・なぜか容量が 83GBほどに増えてしまいました。

f:id:gowatana:20201207233151p:plain

これは、今回は超小容量の VM を配置していたので、残念ながら「圧縮のオーバーヘッド」などが圧縮効果に勝ってしまったためです。残念ながら・・・

f:id:gowatana:20201207233324p:plain

ちなみに「ラボ環境が低スペック」といった状況だと商用環境だとあまりない状態がおきやすく、たとえばメモリ容量がサーバにしては少ない(32GB くらい)物理ホストで vSAN のラボを構成すると、半分くらいがシステム オーバーヘッドで使用されてしまったりします。

ネスト環境のラボではシン プロビジョニングのストレージを構成しやすいはずです。そこで、特に今回のような圧縮効果の確認や、仮想ディスク容量割り当ての上限を確認するような検証については、ネスト側から見たときに、できるだけリアルな容量(実環境っぽい容量)を認識できるようにラボを構成するとよいかなと思います。

ちなみにデータストアの空き容量をこえた仮想ディスク作成は、vSphere Client からだとがエラーになりますが、PowerCLI などであれば可能です。

たとえば下記ようなコマンドラインで、シン プロビジョニングの仮想ディスクを作成できます。(1行目の Get-VM は対象 VM の確認です。)

PowerCLI> Get-VM "VM の名前"
PowerCLI> Get-VM "VM の名前" | New-HardDisk -Datastore "データストア名" -CapacityGB 容量 -StorageFormat Thin

ただしシン プロビジョニングならではの実ストレージ消費容量が把握しにくくなることには要注意です。

Tips2: vSAN のコンポーネント配置の確認

vSAN の重複排除と圧縮は、ディスク グループ単位で作用します。そこで期待どおりの結果にならない場合は、仮想ディスクのコンポーネント配置を確認してみるとよいかもしれません。

vSphere Client では、VM 単位で「物理ディスクの配置」を確認することができます。

f:id:gowatana:20201207234941p:plain

この情報は、API や PowerCLI でも確認できます。

たとえば、下記のようなスクリプトを用意して・・・

gist.github.com

まとめて VM の物理ディスク配置を確認することもできます。ただしこの実行例もネスト環境なので、物理マシンの環境ではもう少し整形が必要(デバイス名が長かったり)だったりします。

f:id:gowatana:20201207235331p:plain

おまけ

今回は、VM のクローンでも PowerCLI を利用しています。たとえば下記のようなコマンドラインで、複数のクローンが実行できたりします。

  • photon-ova という VM をもとに、9回 VM をクローンします。「1..9 | %{ ~ }」
  • クローン先のデータストアは「 vsanDatastore-20201207」で、ESXi ホストは「192.168.10.171」です。
  • VM名は「"vm-" + $_.ToString("00")」で、 vm-01 ~ という命名規則にしています。
PS /work> 1..9 | %{New-VM -VM "photon-ova" -Datastore "vsanDatastore-20201207" -VMHost "192.168.10.171" -Name ("vm-" + $_.ToString("00"))}

Name                 PowerState Num CPUs MemoryGB
----                 ---------- -------- --------
vm-01                PoweredOff 1        2.000
vm-02                PoweredOff 1        2.000
vm-03                PoweredOff 1        2.000
vm-04                PoweredOff 1        2.000
vm-05                PoweredOff 1        2.000
vm-06                PoweredOff 1        2.000
vm-07                PoweredOff 1        2.000
vm-08                PoweredOff 1        2.000
vm-09                PoweredOff 1        2.000

以上、vSAN の容量効率化の検証 Tips でした。