vm.gowatana.jp

NEOにほんごVMware(仮)

vSphere のクラウド ネイティブ ストレージを PowerCLI で確認してみる。

個人的な vSAN Advent Calendar 9日目です。

 

前回作成したクラウド ネイティブ ストレージ(CNS)のボリュームを、PowerCLI から確認してみます。

 

vSphere Client から見た様子については前回(下記)をどうぞ。

f:id:gowatana:20201209235247p:plain

 

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 での表示に合わせて情報取得してみた様子です。

冒頭のスクリーン ショットの情報が・・・

f:id:gowatana:20201209235247p:plain

 

このように情報取得できます。

f:id:gowatana:20201209235234p:plain

 

以上、CNS を PowerCLI で確認してみる話でした。