vSAN のセットアップには一般的 vSphere Web Client を使用しますが、PowerCLI でも同様の操作ができます。
PowerCLI での vSAN 設定を、 VMware Hands-on Labs(HoL)でためす方法を紹介します。
HoL には、vSAN 入門者むけの下記のラボがあります。
HOL-1808-01-HCI - vSAN v6.6 - Getting Started
http://labs.hol.vmware.com/HOL/catalogs/lab/3651
このラボには PowerCLI を使用するシナリオがあるのですが、
モジュール 1 での vSAN クラスタのセットアップは vSphere Web Client で実施しています。
今回は、その部分を操作を PowerCLI に置き換えてみます。
ちなみにラボのシナリオ(マニュアル)は公開されており、下記で確認できます。
コマンドラインの実行方法について。
コマンドラインは「テキストの送信」を利用すると、HoL に対してコピー&ペーストができるようになります。
(ただし、逆の HoL からのコピーはできません。)
デスクトップにある「VMware PowerCLI」のアイコンから PowerCLI のウインドウを起動しておき、
「送信」をクリックする前に、フォーカスをあてておきます。
ちなみに HoL の PowerCLI で実施できる vSAN 関連の操作は、
下記のようなコマンドラインで俯瞰することができます。
PowerCLI> gcm -Module VMware.VimAutomation.Storage | group Noun | select Count,Name,@{N="Verb";E={$_.Group.Verb -join ","}} | sort Name
PowerCLI での vSAN クラスタのセットアップをためす。
それでは、vSAN のセットアップをしていきます。
まず、vCenter に接続します。
HoL では、パスワードなしでログインできるように構成されています。
PowerCLI> Connect-VIServer vcsa-01a.corp.local
今回は、クラスタのオブジェクトを取得して変数「$c」に格納おきます。
HoL へのコピー&ペーストの都合上、短い変数名にしました。
PowerCLI> $c = Get-Cluster RegionA01-COMP01
下記のようなコマンドラインで、クラスタの情報を確認できます。
PowerCLI> $c
PowerCLI> $c | select *
PowerCLI> $c | select Name,VsanEnabled
クラスタに含まれる ESXi ホストを確認しておきます。
PowerCLI> $c | Get-VMHost | sort Name
それでは、vSAN を有効化します。
「-Confirm:$false」でコマンド実行の確認メッセージを抑止しています。
どうしても確認しつつコマンドラインを実行したい場合は、はこのオプションは不要です。
PowerCLI> $c | Set-Cluster -VsanEnabled:$true -Confirm:$false
PowerCLI> $c | Get-VsanClusterConfiguration | Set-VsanClusterConfiguration -SpaceEfficiencyEnabled:$true -AllowReducedRedundancy:$true -Confirm:$false
クラスタの vSAN 設定を確認します。
SpaceEfficiencyEnabled では、重複排除と圧縮が有効になっているか確認できます。
設定時の AllowReducedRedundancy は、設定反映時に一時的な冗長性の低下を許容するというオプションなので
ここでのクラスタの設定確認には含めません。
PowerCLI> $c | Get-VsanClusterConfiguration | select Cluster,VsanEnabled,SpaceEfficiencyEnabled
VMkernel ポートで vSAN トラフィックが有効化されているか確認しておきます。
PowerCLI> $c | Get-VMHost | Get-VMHostNetworkAdapter -VMKernel -Name vmk3 | select VMHost,Name,IP,VsanTrafficEnabled,PortGroupName | sort VMHost,Name | ft -AutoSize
クラスタに含まれるすべてのホストに対して、vSAN のディスク グループを作成します。
ホストに搭載されたディスクは、下記のようなコマンドラインで確認できます。
PowerCLI> $c | Get-VMHost | Get-VMHostDisk | select VMHost,ScsiLun,TotalSectors | sort VMHost,ScsiLun
すべてのホストでハードウェア構成が揃っているので、
SsdCanonicalName と DataDiskCanonicalName のデバイス名もすべてのホストで揃えられます。
今回はシナリオにあわせて、キャッシュ層として mpx.vmhba1:C0:T1:L0、
キャパシティ層として mpx.vmhba3:C0:T1:L0 と mpx.vmhba4:C0:T1:L0 を追加します。
PowerCLI> $c | Get-VMHost | New-VsanDiskGroup -SsdCanonicalName mpx.vmhba1:C0:T1:L0 -DataDiskCanonicalName mpx.vmhba3:C0:T1:L0,mpx.vmhba4:C0:T1:L0
vSAN のディスク グループにディスクが追加されたことを確認します。
PowerCLI> $c | Get-VMHost | %{$hv_name =$_.Name; $_ | Get-VsanDisk | select @{N="VMHost";E={$hv_name}},CanonicalName,IsCacheDisk,VsanDiskGroup} | sort VMHost
vSAN データストアの容量は、下記で確認できます。
クラスタの vSAN 設定が更新されているため、以前に取得した $c ではなく
Get-Cluster でクラスタのオブジェクトを取得しなおす必要があります。
PowerCLI> Get-Cluster RegionA01-COMP01 | Get-VsanSpaceUsage | select *
これで、モジュール 1 の完了時点と同様の vSAN 環境ができました。
このモジュールのシナリオにはありませんが、のこりのディスクで
追加のディスクグループを作成することもできます。
ディスクグループでコントローラを分割したほうがよいとは思いますが、
今回は HoL シナリオの都合上、下記のようにディスクを選択しています。
PowerCLI> $c | Get-VMHost | New-VsanDiskGroup -SsdCanonicalName mpx.vmhba1:C0:T0:L0 -DataDiskCanonicalName mpx.vmhba3:C0:T0:L0,mpx.vmhba4:C0:T0:L0
このように、vSphere Web Client での vSAN 操作のほとんどは PowerCLI でも実施できます。
作業を PowerCLI に置き換えることで、設定の効率化やミスの防止などをはかれるかもしれません。
また、PowerCLI で vSAN 環境を確認する方法については下記の投稿もどうぞ。
vSAN の情報を PowerCLI 6.5 R1 で見てみる。
以上、HoL を利用して PowerCLI による vSAN セットアップをためしてみる話でした。