個人的な vSAN Advent Calendar 5日目です。
自宅ラボの vSAN 7.0 U 1 Advent Calendar 2020 - Adventar
PowerCLI での、vSAN の情報取得の様子を紹介します。
PowerCLI の実行環境について
今回は Photon OS(Linux)上の Docker コンテナとして PowerCLI を実行します。これは数日前の投稿(下記)で紹介した環境と同様です。
vSphere のリソース制限機能を鑑賞してみる。 - vm.gowatana.jp
今回も Photon OS 4.0 です。
root@lab-photon-01 [ ~ ]# cat /etc/photon-release VMware Photon OS 4.0 PHOTON_BUILD_NUMBER=d98e681
Docker サービスは起動してあります。
root@lab-photon-01 [ ~ ]# systemctl is-active docker active
PowerCLI コンテナ(vmware/powerclicore)を起動します。
root@lab-photon-01 [ ~ ]# docker run -it --rm vmware/powerclicore PowerShell 7.0.0 Copyright (c) Microsoft Corporation. All rights reserved. https://aka.ms/powershell Type 'help' to get help. PS /root>
警告メッセージ抑止のため、VMware's Customer Experience Improvement Program(CEIP)の設定をしておきます。
PS /root> Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP:$false -Confirm:$false
vCenter Server に接続しておきます。SSL/TLS 証明書エラー回避のため「-Force」をつけています。
PS /root> Connect-VIServer -Server lab-vc-01.go-lab.jp -User administrator@vsphere.local -Password VMware1! -Force Name Port User ---- ---- ---- lab-vc-01.go-lab.jp 443 VSPHERE.LOCAL\Administrator PS /root>
PowerCLI のモジュールについて
今回も、PowerCLI 12.0 を利用しています。
PS /root> Get-Module -Name VMware.PowerCLI -ListAvailable | select Version Version ------- 12.0.0.15947286 PS /root> Get-PowerCLIVersion PowerCLI Version ---------------- VMware PowerCLI 12.0.0 build 15947286 --------------- Component Versions --------------- VMware Common PowerCLI Component 12.0 build 15939652 VMware Cis Core PowerCLI Component PowerCLI Component 12.0 build 15939657 VMware VimAutomation VICore Commands PowerCLI Component PowerCLI Component 12.0 build 15939655
vSAN に関連するコマンドは、おもに VMware.VimAutomation.Storage モジュールにあります。どのようなコマンドがあるか雰囲気を見ておきます。
PS /root> Get-Command -Module VMware.VimAutomation.Storage -CommandType Cmdlet | Group-Object Noun | select name,{$_.Group.Verb} | Sort-Object Name Name $_.Group.Verb ---- ------------- EntityDefaultKeyProvider {Add, Remove} KeyManagementServer {Add, Get, Remove, Set} KeyProvider {Get, Set} KmipClientCertificate {Get, New} NfsUser {Get, New, Remove, Set} SpbmCapability Get SpbmCompatibleStorage Get SpbmEntityConfiguration {Get, Set} SpbmFaultDomain Get SpbmPointInTimeReplica Get SpbmReplicationFailover Start SpbmReplicationGroup {Get, Sync} SpbmReplicationPair Get SpbmReplicationPrepareFailover Start SpbmReplicationPromote Start SpbmReplicationReverse Start SpbmReplicationTestFailover {Start, Stop} SpbmRule New SpbmRuleSet New SpbmStoragePolicy {Export, Get, Import, New…} SpbmView Get VAIOFilter {Get, New, Remove, Set} VasaProvider {Get, New, Remove} VasaStorageArray Get VDisk {Copy, Get, Move, New…} VsanClusterConfiguration {Get, Set} VsanClusterDiskUpdate Start VsanClusterHealth Test VsanClusterRebalance {Start, Stop} VsanComponent Get VsanDisk {Get, New, Remove} VsanDiskGroup {Get, New, Remove} VsanEncryptionConfiguration Start VsanEnterMaintenanceModeReport Get VsanEvacuationPlan Get VsanFaultDomain {Get, New, Remove, Set} VsanFileServerIpConfig New VsanFileServiceDomain {Get, New, Remove, Set} VsanFileServiceOvf Add VsanFileServiceOvfInfo Get VsanFileShare {Get, New, Remove, Set} VsanFileShareNetworkPermission New VsanHclDatabase Update VsanIscsiInitiatorGroup {Get, New, Remove, Set} VsanIscsiInitiatorGroupTargetAssociation {Get, New, Remove} VsanIscsiLun {Get, New, Remove, Set} VsanIscsiTarget {Get, New, Remove, Set} VsanNetworkPerformance Test VsanObject Get VsanObjectToRepairQueue Add VsanResyncingComponent Get VsanResyncingOverview Get VsanRuntimeInfo Get VsanSpaceUsage Get VsanStat Get VsanStoragePerformance Test VsanView Get VsanVMCreation Test PS /root> Get-Command -Module VMware.VimAutomation.Storage -CommandType Alias | Sort-Object Name | select Name Name ---- Get-KmsCluster Repair-VsanObject Set-KmsCluster
今回の vSAN クラスタ
今回も vCenter Server 7.0 U1a + ESXi 7.0 U1 の vSAN クラスタです。
PowerCLI から見た vCenter のバージョンです。
PS /root> $global:DefaultVIServer | select Name,Version,Build | Format-List Name : lab-vc-01.go-lab.jp Version : 7.0.1 Build : 17005016
そして、ESXi のバージョンです。
PS /root> Get-VMHost | Sort-Object Name | select Name,Version,Build Name Version Build ---- ------- ----- 192.168.10.171 7.0.1 16850804 192.168.10.172 7.0.1 16850804 192.168.10.173 7.0.1 16850804 192.168.10.174 7.0.1 16850804
PowerCLI での vSAN 環境の確認
vSAN クラスタの情報を確認してみます。vSAN が有効化されていることがわかります。
PS /root> Get-Cluster | where {$_.VsanEnabled -eq $True} | Get-VsanClusterConfiguration Cluster VsanEnabled IsStretchedCluster Last HCL Updated ------- ----------- ------------------ ---------------- vsan-cluster-202012… True False 12/05/2020 05:06:00
「select *」のように、表示するプロパティを増やすと、FileService など新しめの機能についても情報取得できます。
PS /root> Get-Cluster | where {$_.VsanEnabled -eq $True} | Get-VsanClusterConfiguration | select * | Format-List Uid : /VIServer=vsphere.local\administrator@lab-vc-01.go-lab.jp:443/Cluster=ClusterCompu teResource-domain-c144/VsanClusterConfiguration=vsan-cluster-20201205/ Cluster : vsan-cluster-20201205 VsanEnabled : True VsanDiskClaimMode : Manual SpaceEfficiencyEnabled : False PerformanceServiceEnabled : False PerformanceStatsStoragePolicy : StoragePolicy : TimeOfHclUpdate : 12/05/2020 05:06:00 HealthCheckEnabled : True HealthCheckIntervalMinutes : 60 StretchedClusterEnabled : False PreferredFaultDomain : WitnessHost : IscsiTargetServiceEnabled : False DefaultIscsiNetworkInterface : DefaultIscsiTcpPort : DefaultIscsiAuthenticationType : DefaultIncomingChapUser : DefaultOutgoingChapUser : StoragePolicyForIscsiTargetService : DiskFormatCompatibility : VMware.VimAutomation.Storage.Impl.V1.Vsan.VsanDiskFormatCompatibilityImpl SilentHealthCheck : {} ResyncThrottlingMbps : 0 EncryptionEnabled : False EncryptionChanging : KmsCluster : KeyProvider : EraseDiskBeforeUse : GuestTrimUnmap : False SiteReadLocalityEnabled : True CustomizedSwapObjectEnabled : True LargeClusterSupported : False ObjectRepairTimerMinutes : 60 VsanBaselinePreference : LatestRelease ProactiveRebalanceEnabled : False ProactiveRebalanceThreshold : 30 FileServiceEnabled : False FileServiceNetwork : Name : vsan-cluster-20201205 Id : ClusterComputeResource-domain-c144
ディスクグループの情報を確認してみます。IsCacheDisk が True のものがキャッシュ ディスクで、False のものがキャパシティ ディスクです。
PS /root> Get-Cluster | where {$_.VsanEnabled -eq $True} | Get-VsanDiskGroup | Sort-Object VMHost | select VMHost, DiskGroupType, DiskFormatVersion, @{N="CacheDisk"; E={($_ | Get-VsanDisk | where {$_.IsCacheDisk -eq $true}).Count}}, @{N="CapacityDisk"; E={($_ | Get-VsanDisk | where {$_.IsCacheDisk -ne $true}).Count}}, Uuid | Format-Table -AutoSize VMHost DiskGroupType DiskFormatVersion CacheDisk CapacityDisk Uuid ------ ------------- ----------------- --------- ------------ ---- 192.168.10.171 AllFlash 13 1 1 0000000000766d686261303a313a30 192.168.10.172 AllFlash 13 1 1 0000000000766d686261303a313a30 192.168.10.173 AllFlash 13 1 1 0000000000766d686261303a313a30 192.168.10.174 AllFlash 13 1 1 0000000000766d686261303a313a30
vSAN ディスクを確認してみます。
環境によっては、CapacityGB の結果を CanonicalName より前に持ってきた方が見やすいかもしれません。物理マシンの環境ではデバイス名が長くなるので容量の桁数を調整したり、ESXi ホストごとに並ばない場合は結果をソート(下記では「| sort-Object ESXi,IsCacheDisk」)すると、さらに見やすくすることもできます。ちなみに、Uuid がユニークでないのはネスト環境のためです。
PS /root> Get-Cluster | where {$_.VsanEnabled -eq $True} | Get-VsanDiskGroup | % {$hv = $_.VMHost; $_ | Get-VsanDisk | % {$path = $_.DevicePath; $_| select @{N="ESXi"; E={$hv.Name}},Uuid,IsCacheDisk,IsSSD,@{N="CapacityGB"; E={[int]($hv | Get-VMHostDisk | where {$_.DeviceName -eq $path }).ScsiLun.CapacityGB}},CanonicalName}} | Sort-Object ESXi,IsCacheDisk | Format-Table -AutoSize ESXi Uuid IsCacheDisk IsSsd CapacityGB CanonicalName ---- ---- ----------- ----- ---------- ------------- 192.168.10.171 0000000000766d686261303a323a30 False True 300 mpx.vmhba0:C0:T2:L0 192.168.10.171 0000000000766d686261303a313a30 True True 50 mpx.vmhba0:C0:T1:L0 192.168.10.172 0000000000766d686261303a323a30 False True 300 mpx.vmhba0:C0:T2:L0 192.168.10.172 0000000000766d686261303a313a30 True True 50 mpx.vmhba0:C0:T1:L0 192.168.10.173 0000000000766d686261303a323a30 False True 300 mpx.vmhba0:C0:T2:L0 192.168.10.173 0000000000766d686261303a313a30 True True 50 mpx.vmhba0:C0:T1:L0 192.168.10.174 0000000000766d686261303a323a30 False True 300 mpx.vmhba0:C0:T2:L0 192.168.10.174 0000000000766d686261303a313a30 True True 50 mpx.vmhba0:C0:T1:L0
vSAN データストアの容量情報を確認してみます。
PS /root> Get-Datastore | where {$_.Type -eq "vsan"} | select Name, Type, CapacityGB, FreeSpaceGB, @{N="ProvisionedSpaceGB"; E={($_.CapacityGB - $_.FreeSpaceGB) + ($_.ExtensionData.Summary.Uncommitted / 1GB)}} | Format-Table -AutoSize Name Type CapacityGB FreeSpaceGB ProvisionedSpaceGB ---- ---- ---------- ----------- ------------------ vsanDatastore vsan 1199.96875 1177.734375 22.234375
データストアの使用容量は Get-VsanSpaceUsage でも確認できます。
PS /root> Get-Cluster | where {$_.VsanEnabled -eq $True} | Get-VsanSpaceUsage | Format-Table -AutoSize Cluster FreeSpaceGB CapacityGB ------- ----------- ---------- vsan-cluster-20201205 1,177.727 1,199.969 PS /root> Get-Cluster | where {$_.VsanEnabled -eq $True} | Get-VsanSpaceUsage | select * Cluster : vsan-cluster-20201205 CapacityGB : 1199.96875 FreeSpaceGB : 1177.72652405128 VirtualDiskUsageGB : 1.72265625 VMHomeUsageGB : 2.20703125 FileSystemOverheadGB : 16.7418749965727 ChecksumOverheadGB : 1.46519470214844 PrimaryVMDataGB : 1.96484375 VsanOverheadGB : 20.2773821987212 IscsiTargetUsageGB : IscsiLunUsedGB : VsanWhatIfCapacity : {}
Get-VsanSpaceUsage では、「-StoragePolicy」仮想マシン ストレージ ポリシーをもとにした空き容量の確認も可能です。
PS /root> Get-Cluster | where {$_.VsanEnabled -eq $True} | Get-VsanSpaceUsage -StoragePolicy "vSAN Default Storage Policy" | select -ExpandProperty VsanWhatIfCapacity | Format-List StoragePolicy : vSAN Default Storage Policy TotalWhatIfCapacityGB : 599.984375 FreeWhatIfCapacityGB : 588.86326202564
デフォルトで利用される仮想マシン ストレージ ポリシー「vSAN Default Storage Policy」のルールを確認してみます。VSAN.hostFailuresToTolerate が1となっていて、1台のホストでの障害障害を許容する(つまりデータは2重化)ルールなどが設定されていることがわかります。
PS /root> Get-SpbmStoragePolicy -Name "vSAN Default Storage Policy" | select -ExpandProperty AnyOfRuleSets | %{$name = $_.Name; $_ | select -ExpandProperty AllOfRules | select @{N="RuleName"; E={$Name}}, Capability, Value} | Format-Table -AutoSize RuleName Capability Value -------- ---------- ----- VSAN sub-profile VSAN.hostFailuresToTolerate 1 VSAN sub-profile VSAN.stripeWidth 1 VSAN sub-profile VSAN.forceProvisioning False VSAN sub-profile VSAN.proportionalCapacity 0 VSAN sub-profile VSAN.cacheReservation 0
vSAN の構成情報をレポートとして残したい場合などに利用すると便利かなと思います。
以上、PowerCLI で vSAN の情報を見てみる話でした。
つづく。
vSAN の情報を PowerCLI で取得してみる。(テキストで簡易レポート出力編) - vm.gowatana.jp