vSAN データストアにネステッド ESXi (ゲスト OS として ESXi をインストール)を配置するときに、仮想ディスクのフォーマット エラー対策などで物理サーバ側の ESXi で /VSAN/FakeSCSIReservations を有効にします。
今回は、PowerCLI で /VSAN/FakeSCSIReservations を有効にしてみます。
ネステッド ESXi でのエラーの様子
vSAN データストア上の仮想ディスクを、ふつうに vSAN ディスク グループに追加しようとすると、下記のようなエラーになってしまいます。
一般的なシステム エラーが発生しました: Failed to reserve disk mpx.vmhba0:C0:T1:L0 with exception: Failed to reserve disk mpx.vmhba0:C0:T1:L0 with exception: Reserve failed with error code: -1
そこで、/VSAN/FakeSCSIReservations を物理マシンの ESXi(ネストの外側)で設定しておきます。esxcli などでも設定できますが、今回は PowerCLI を利用します。
PowerCLI での設定
PowerCLI で、vCenter に接続しておきます。
PS C:\> Connect-VIServer -Force infra-vc-01.go-lab.jp Name Port User ---- ---- ---- infra-vc-01.go-lab.jp 443 GO-LAB\gowatana
vSAN クラスタに参加している ESXi のみに設定するため、対象クラスタを取得してから、パイプで設定コマンドに渡します。今回の対象クラスタは infra-cluster-01 で、その配下の ESXi を取得します。
PS C:\> Get-Cluster infra-cluster-01 | Get-VMHost | Sort-Object Name | select Name,ConnectionState,PowerState,Version,Build | ft -AutoSize Name ConnectionState PowerState Version Build ---- --------------- ---------- ------- ----- infra-esxi-01.go-lab.jp Connected PoweredOn 6.7.0 15160138 infra-esxi-02.go-lab.jp Connected PoweredOn 6.7.0 15160138 infra-esxi-03.go-lab.jp Connected PoweredOn 6.7.0 15160138 infra-esxi-04.go-lab.jp Connected PoweredOn 6.7.0 15160138 infra-esxi-05.go-lab.jp Connected PoweredOn 6.7.0 15160138 infra-esxi-06.go-lab.jp Connected PoweredOn 6.7.0 15160138
現状の設定を確認しておきます。ESXi「infra-esxi-04.go-lab.jp」のみ、VSAN.FakeSCSIReservations が無効「0」です。
PS C:\> Get-Cluster infra-cluster-01 | Get-VMHost | Sort-Object Name | select Name,{$_|Get-AdvancedSetting VSAN.FakeSCSIReservations}
Name $_|Get-AdvancedSetting VSAN.FakeSCSIReservations
---- ------------------------------------------------
infra-esxi-01.go-lab.jp VSAN.FakeSCSIReservations:1
infra-esxi-02.go-lab.jp VSAN.FakeSCSIReservations:1
infra-esxi-03.go-lab.jp VSAN.FakeSCSIReservations:1
infra-esxi-04.go-lab.jp VSAN.FakeSCSIReservations:0
infra-esxi-05.go-lab.jp VSAN.FakeSCSIReservations:1
infra-esxi-06.go-lab.jp VSAN.FakeSCSIReservations:1
設定変更します。
VSAN.FakeSCSIReservations を、有効の「1」にします。
PS C:\> Get-Cluster infra-cluster-01 | Get-VMHost | Sort-Object Name | Get-AdvancedSetting VSAN.FakeSCSIReservations | where {$_.Value -eq 0} | Set-AdvancedSetting -Value 1 -Confirm:$false Name Value Type Description ---- ----- ---- ----------- VSAN.FakeSCSIRese... 1 VMHost
設定変更されました。
PS C:\> Get-Cluster infra-cluster-01 | Get-VMHost | Sort-Object Name | select Name,{$_|Get-AdvancedSetting VSAN.FakeSCSIReservations}
Name $_|Get-AdvancedSetting VSAN.FakeSCSIReservations
---- ------------------------------------------------
infra-esxi-01.go-lab.jp VSAN.FakeSCSIReservations:1
infra-esxi-02.go-lab.jp VSAN.FakeSCSIReservations:1
infra-esxi-03.go-lab.jp VSAN.FakeSCSIReservations:1
infra-esxi-04.go-lab.jp VSAN.FakeSCSIReservations:1
infra-esxi-05.go-lab.jp VSAN.FakeSCSIReservations:1
infra-esxi-06.go-lab.jp VSAN.FakeSCSIReservations:1
下記のように列名の表示などを調整することもできます。
PS C:\> Get-Cluster infra-cluster-01 | Get-VMHost | Sort-Object Name | select Name,@{N="VSAN.FakeSCSIReservations";E={($_|Get-AdvancedSetting VSAN.FakeSCSIReservations).Value}} Name VSAN.FakeSCSIReservations ---- ------------------------- infra-esxi-01.go-lab.jp 1 infra-esxi-02.go-lab.jp 1 infra-esxi-03.go-lab.jp 1 infra-esxi-04.go-lab.jp 1 infra-esxi-05.go-lab.jp 1 infra-esxi-06.go-lab.jp 1
設定が統一されているか、グルーピングして確認することもできます。VSAN.FakeSCSIReservations が「1」の ESXi ホストをグルーピングして、6台すべての設定が統一されていることがわかります。
PS C:\> Get-Cluster infra-cluster-01 | Get-VMHost | Sort-Object Name | Get-AdvancedSetting VSAN.FakeSCSIReservations | Group-Object Name,Value | select Count,Name,{$_.Group.Entity} Count Name $_.Group.Entity ----- ---- --------------- 6 VSAN.FakeSCSIReservations, 1 {infra-esxi-01.go-lab.jp, infra-esxi-02.go-lab.jp, infra-esxi-03.go-lab.jp, infra-esxi-04.go-lab.jp...}
下記のようにシンプルに表示することもできます。
PS C:\> Get-Cluster infra-cluster-01 | Get-VMHost | Get-AdvancedSetting VSAN.FakeSCSIReservations | Group-Object Name,Value | select Count,Name Count Name ----- ---- 6 VSAN.FakeSCSIReservations, 1
以上、PowerCLI の利用例でした。