読者です 読者をやめる 読者になる 読者になる

自由人なエンジニアの備忘録

好きなことを好きに描く、ん~のびしろですね!

vSAN のコンポーネント分割はVMストレージポリシー以外にも分割されることがある

こんにちは。


今回はvmwareが推し推しのVSANに関する内容です。

皆様ご存知の通り、VSANは仮想マシンごとにストレージポリシーを割り当てて管理します。

vSphere Web Client でいうとホームの赤枠のところからポリシーを作成することができます。

f:id:japan-vmware:20170327021755p:plain

 

このVMストレージポリシーでは、どの程度のESXiホストの停止を許容するのか、

であったり、各ノードにどの程度(数)のコンポーネントに分割してデータを保持するのか、などを定義できます。(他にも項目はあります)

今回はVMストレージポリシーを以下の設定にします。

 

・Failures To Tolerate = 1 → ESXiホストの障害許容台数
・Disk Stripes Per Object = 3  → コンポーネントをどれくらい分割するか

f:id:japan-vmware:20170327022650p:plain

 

上記のVMストレージポリシー設定のとき、仮想マシンのデータはこのように配置されます。

f:id:japan-vmware:20170327235649p:plain

 

障害許容が1であるため、RAID 1 (ミラー)の中に、Stripe 3 つまりコンポーネントが3分割されて配置されている図です。

さて、ここまでは普通のvSANです。これからもただのvSANですが…

 

vSANの検証環境で触る際、巨大なvmdkファイルを持つ仮想マシンを配置することはあまりないかと思います。しかし、注意したいのは、おおきなvmdkファイル(例えば300GBとか)をvSANDatastore上に配置しようとすると、自動的にコンポーネント分割されることはご存知でしょうか。

 

VMwareからはこんなKB が出ています。

+ Using small magnetic disks for vSAN might result in VM failures

https://kb.vmware.com/kb/2080503

 

大きなファイルは、KBに記載されているパラメータ、VSAN.ClomMaxComponentSizeGB を超える容量になると、コンポーネント分割されるようになっています。

デフォルト値は255です。(ESXi6.0, ESXi6.5はそうでした)
私は検証環境の都合上、一番最小値の180にしています。

f:id:japan-vmware:20170328011234p:plain

 

では、すべてのvSANクラスタのESXiホスト3台にVSAN.ClomMaxComponentSizeGB=180 を設定し、200GBのvmdkファイルを所有する仮想マシンを作成し、vmdkファイルには 「Virtual SAN Default Storage Policy」を割り当てます。

f:id:japan-vmware:20170328012734p:plain

 

「Virtual SAN Default Storage Policy」はその名のとおり、デフォルトて作成されるポリシーであるがゆえに、以下の値に設定されています。


・Failures To Tolerate = 1 → ESXiホストの障害許容台数
・Disk Stripes Per Object = 1  → コンポーネントをどれくらい分割するか

 

では、200GBのvmdkファイルのときはどのように配置されているのか。

f:id:japan-vmware:20170328013446p:plain

 

ご想像のとおり、ESXiに設定したパラメータ VSAN.ClomMaxComponentSizeGB=180 を超えたため、1つのノード内で2つのコンポーネントに分割されました。
デフォルトとはいえ、VMストレージポリシーを設定していましたが、ESXiで設定していた容量を超えたため、パラメータ側を優先した格好になります。

 

ではあらためて、↓ この設定のVMストレージポリシーを200GBのvmdkファイルに適用します。

・Failures To Tolerate = 1 → ESXiホストの障害許容台数
・Disk Stripes Per Object = 3  → コンポーネントをどれくらい分割するか

f:id:japan-vmware:20170328015035p:plain

 

VMストレージポリシーがきちんと反映され、Stripe 3 なので、コンポーネントが3つに分かれています。

 

一度、VSAN.ClomMaxComponentSizeGB の設定値によって分割されても、

再度、内容が異なるVMストレージポリシーを設定すると反映されるということを知りたいがためにこんな記事を書きました。

 

ただし、確認はしていませんが、あまりに巨大なファイルをコンポーネント分割したときに、Stripe = 1 のようなVMストレージポリシーを適用しても、それは無視され、

VSAN.ClomMaxComponentSizeGBの値で分割されると思います。(推測)

 

オワリ