個人的な vSAN Advent Calendar 9日目です。
前回作成したクラウド ネイティブ ストレージ(CNS)のボリュームを、PowerCLI から確認してみます。
vSphere Client から見た様子については前回(下記)をどうぞ。
PowerCLI の CNS 関連コマンドレット
クラウド ネイティブ ストレージ(CNS)に関連するコマンドレットは、PowerCLI 12.1 から追加されました。
今回は、Windows PowerShell で、PowerCLI 12.1 を利用しています。
PS C:\> Get-Module -Name VMware.PowerCLI -ListAvailable | select Version Version ------- 12.1.0.17009493
CNS 関連のものは、下記のあたりです。vSphere Client と同様の情報は、Get-CnsVolume で取得できます。
PS C:\> Get-Command -Module VMware.VimAutomation.Storage -Name *Cns* | ft -AutoSize CommandType Name Version Source ----------- ---- ------- ------ Cmdlet Get-CnsVolume 12.1.0.17001270 VMware.VimAutomation.Storage Cmdlet New-CnsContainerCluster 12.1.0.17001270 VMware.VimAutomation.Storage Cmdlet New-CnsKubernetesEntityMetadata 12.1.0.17001270 VMware.VimAutomation.Storage Cmdlet New-CnsKubernetesEntityReference 12.1.0.17001270 VMware.VimAutomation.Storage Cmdlet New-CnsVolume 12.1.0.17001270 VMware.VimAutomation.Storage Cmdlet New-CnsVolumeAttachment 12.1.0.17001270 VMware.VimAutomation.Storage Cmdlet New-CnsVolumeMetadata 12.1.0.17001270 VMware.VimAutomation.Storage Cmdlet Remove-CnsVolume 12.1.0.17001270 VMware.VimAutomation.Storage Cmdlet Remove-CnsVolumeAttachment 12.1.0.17001270 VMware.VimAutomation.Storage Cmdlet Set-CnsVolume 12.1.0.17001270 VMware.VimAutomation.Storage
あらかじめ vCenter Server に接続しておきます。lab-vc-03.go-lab.jp は今回の vCenter です。
PS C:\> Connect-VIServer lab-vc-03.go-lab.jp -Force
Get-CnsVolume で作成したクラウド ボリュームを取得できます。
PS C:\> Get-CnsVolume | ft -AutoSize Name HealthStatus CapacityMB ---- ------------ ---------- pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5 green 1024 pvc-7f4d1205-bcc6-4f49-8488-3045afce0412 green 1024 PS C:\> Get-CnsVolume | select * BackingDisk : pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5 Datastore : vsanDatastore HealthStatus : green ComplianceStatus : compliant Metadata : VMware.VimAutomation.Storage.Impl.V1.Vsan.Cns.CnsVolumeMetadataImpl CnsVolumeType : Block CapacityMB : 1024 ExtensionData : VMware.Vsan.Views.CnsVolume Name : pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5 Id : 612b536a-7d3d-4818-8d0c-347483cf866a Uid : /VIServer=vsphere.local\administrator@lab-vc-03.go-lab.jp:443/CnsVolume=612b536a-7d3d-4818-8d0c-347483cf866a/ BackingDisk : pvc-7f4d1205-bcc6-4f49-8488-3045afce0412 Datastore : Datastore-NFS-231 HealthStatus : green ComplianceStatus : compliant Metadata : VMware.VimAutomation.Storage.Impl.V1.Vsan.Cns.CnsVolumeMetadataImpl CnsVolumeType : Block CapacityMB : 1024 ExtensionData : VMware.Vsan.Views.CnsVolume Name : pvc-7f4d1205-bcc6-4f49-8488-3045afce0412 Id : 562af679-9645-4a06-8cc4-132f72fbaeb6 Uid : /VIServer=vsphere.local\administrator@lab-vc-03.go-lab.jp:443/CnsVolume=562af679-9645-4a06-8cc4-132f72fbaeb6/
vSAN データストアに作成したほうのクラウド ボリュームを、もう少し掘り下げてみます。
PS C:\> Get-CnsVolume -Name pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5 Name HealthStatus CapacityMB ---- ------------ ---------- pvc-6160c164-1ac9-4332... green 1024 PS C:\> $cv = Get-CnsVolume -Name pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5 PS C:\> $cv | ft -AutoSize Name HealthStatus CapacityMB ---- ------------ ---------- pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5 green 1024
Kubernetes のラベルや、リソースについての情報は、Metadata から確認できます。
PS C:\> $cv.Metadata CnsEntityMetadata ContainerCluster ----------------- ---------------- {demo-pvc-vsan, pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5} {domain-c32} PS C:\> $cv.Metadata.CnsEntityMetadata EntityType : PersistentVolumeClaim Namespace : lab-ns-02 ReferredEntity : {pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5} KubernetesClusterId : domain-c32 EntityName : demo-pvc-vsan Label : {demo} EntityType : PersistentVolume Namespace : ReferredEntity : {} KubernetesClusterId : domain-c32 EntityName : pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5 Label :
ラベルの情報は、ハッシュテーブルで格納されています。
PS C:\> $cv.Metadata.CnsEntityMetadata | where {$_.EntityType -eq "PersistentVolumeClaim"} | select -ExpandProperty Label | ft -AutoSize Name Value ---- ----- demo adv20201208 PS C:\> $cv.Metadata.CnsEntityMetadata | where {$_.EntityType -eq "PersistentVolumeClaim"} | select -ExpandProperty Label | select keys Keys ---- {demo} PS C:\> $cv.Metadata.CnsEntityMetadata | where {$_.EntityType -eq "PersistentVolumeClaim"} | %{$_.Label["demo"]} adv20201208
ExtensionData には VMware.Vsan.Views.~ のプロパティを持っていますが、ここから直接 vSAN の物理配置を確認するのは難しそうです。
PS C:\> $cv.ExtensionData VolumeId : VMware.Vsan.Views.CnsVolumeId DatastoreUrl : ds:///vmfs/volumes/vsan:52f25b0ad3a174f3-94779f733f787076/ Name : pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5 VolumeType : BLOCK StoragePolicyId : aa6d5a82-1c88-45da-85d3-3d74b91a5bad Metadata : VMware.Vsan.Views.CnsVolumeMetadata BackingObjectDetails : VMware.Vsan.Views.CnsBlockBackingDetails ComplianceStatus : compliant DatastoreAccessibilityStatus : accessible HealthStatus : green
ちなみに、これは NFS データストア上のクラウド ボリュームにも共通で存在していました。
PS C:\> Get-CnsVolume | select -ExpandProperty ExtensionData VolumeId : VMware.Vsan.Views.CnsVolumeId DatastoreUrl : ds:///vmfs/volumes/vsan:52f25b0ad3a174f3-94779f733f787076/ Name : pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5 VolumeType : BLOCK StoragePolicyId : aa6d5a82-1c88-45da-85d3-3d74b91a5bad Metadata : VMware.Vsan.Views.CnsVolumeMetadata BackingObjectDetails : VMware.Vsan.Views.CnsBlockBackingDetails ComplianceStatus : compliant DatastoreAccessibilityStatus : accessible HealthStatus : green VolumeId : VMware.Vsan.Views.CnsVolumeId DatastoreUrl : ds:///vmfs/volumes/c5ac3124-d620b5a6/ Name : pvc-7f4d1205-bcc6-4f49-8488-3045afce0412 VolumeType : BLOCK StoragePolicyId : 270d9b63-1bcd-4ff4-b606-fdf3cf48fa03 Metadata : VMware.Vsan.Views.CnsVolumeMetadata BackingObjectDetails : VMware.Vsan.Views.CnsBlockBackingDetails ComplianceStatus : compliant DatastoreAccessibilityStatus : accessible HealthStatus : green
vSphere Client と同様の情報をテキストとして取得できそうです。vSAN コンポーネントのディスク配置には工夫が必要そうですが・・・
PS C:\> Get-CnsVolume | select Name,@{N="Label"; E={$_.Metadata.CnsEntityMetadata | where { $_.EntityType -eq "PersistentVolumeClaim"} | % {$lavel = $_; $lavel.Label.keys | % {$_ + ":" + $lavel.Label[$_]}}}},Datastore, ComplianceStatus, HealthStatus, CapacityMB Name : pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5 Label : demo:adv20201208 Datastore : vsanDatastore ComplianceStatus : compliant HealthStatus : green CapacityMB : 1024 Name : pvc-7f4d1205-bcc6-4f49-8488-3045afce0412 Label : demo:adv20201208 Datastore : Datastore-NFS-231 ComplianceStatus : compliant HealthStatus : green CapacityMB : 1024
Format-Table(ft -AutoSize)で、冒頭の vSphere Client での表示に合わせて情報取得してみた様子です。
冒頭のスクリーン ショットの情報が・・・
このように情報取得できます。
以上、CNS を PowerCLI で確認してみる話でした。