vSAN 環境では、VM の容量確保や冗長性の設定のために
仮想マシン ストレージ ポリシーを利用します。
たとえば仮想マシン ストレージ ポリシーを 仮想ディスク(VMDK)に適用するだけで
RAID1 から RAID5 に変更することができます。
しかし、対象 VM が多いと GUI である vSphere Web Client で適用するのが大変なことがあるので、
PowerCLI で仮想マシン ストレージ ポリシー を変更してみました。
vCenter には、Connect-VIServer で接続ずみです。
今回の vCenter のバージョンです。
PowerCLI> $global:DefaultVIServer | select Version,Build
Version Build
------- -----
6.5.0 5973321
PowerCLI のバージョンは 6.5.1 を使用しています。
仮想マシン ストレージ ポリシーにかかわるコマンドレットは、
SPBM(Storage Policy Based Management)といった名前がついています。
PowerCLI> Get-Module VMware.VimAutomation.Storage | select Name,Version
Name Version
---- -------
VMware.VimAutomation.Storage 6.5.1.5374001
PowerCLI> gcm *spbm* | sort Noun,Varb | select Module,Name
Module Name
------ ----
VMware.VimAutomation.Storage Get-SpbmCapability
VMware.VimAutomation.Storage Get-SpbmCompatibleStorage
VMware.VimAutomation.Storage Set-SpbmEntityConfiguration
VMware.VimAutomation.Storage Get-SpbmEntityConfiguration
VMware.VimAutomation.Storage Get-SpbmFaultDomain
VMware.VimAutomation.Storage Get-SpbmPointInTimeReplica
VMware.VimAutomation.Storage Start-SpbmReplicationFailover
VMware.VimAutomation.Storage Sync-SpbmReplicationGroup
VMware.VimAutomation.Storage Get-SpbmReplicationGroup
VMware.VimAutomation.Storage Get-SpbmReplicationPair
VMware.VimAutomation.Storage Start-SpbmReplicationPrepareFailover
VMware.VimAutomation.Storage Start-SpbmReplicationPromote
VMware.VimAutomation.Storage Start-SpbmReplicationReverse
VMware.VimAutomation.Storage Start-SpbmReplicationTestFailover
VMware.VimAutomation.Storage Stop-SpbmReplicationTestFailover
VMware.VimAutomation.Storage New-SpbmRule
VMware.VimAutomation.Storage New-SpbmRuleSet
VMware.VimAutomation.Storage Import-SpbmStoragePolicy
VMware.VimAutomation.Storage Get-SpbmStoragePolicy
VMware.VimAutomation.Storage Export-SpbmStoragePolicy
VMware.VimAutomation.Storage Remove-SpbmStoragePolicy
VMware.VimAutomation.Storage New-SpbmStoragePolicy
VMware.VimAutomation.Storage Set-SpbmStoragePolicy
この環境では、下記の仮想マシンストレージポリシーを利用しています。
PowerCLI> Get-SpbmStoragePolicy | select Name,@{N="VMs";E={($_|Get-VM).Count}} | where {$_.VMs -gt 0}
Name VMs
---- ---
vSAN Default Storage Policy 15
vsan-policy-raid5 94
vSAN Default Storage Policy というポリシーは、下記のようなルールが設定されています。
(このポリシーはデフォルトで作成されるものですが、いくつか設定変更しているかもしれません)
PowerCLI> Get-SpbmStoragePolicy -Name "vSAN Default Storage Policy" | select -ExpandProperty AnyOfRuleSets | select -ExpandProperty AllOfRules | ft -AutoSize Capability,Value
Capability Value
---------- -----
VSAN.hostFailuresToTolerate 1
VSAN.stripeWidth 1
VSAN.forceProvisioning False
VSAN.proportionalCapacity 0
VSAN.cacheReservation 0
vsan-policy-raid5 ポリシーは、とりあえず RAID5 にしようと下記のようなルールで作成しました。
PowerCLI> Get-SpbmStoragePolicy -Name "vsan-policy-raid5" | select -ExpandProperty AnyOfRuleSets | select -ExpandProperty AllOfRules | ft -AutoSize Capability,Value
Capability Value
---------- -----
VSAN.replicaPreference RAID-5/6 (Erasure Coding) - Capacity
VSAN.proportionalCapacity 0
今回は、まだ vSAN Default Storage Policy ポリシーが適用されている VM に、
vsan-policy-raid5 ポリシーを適用したいと思います。
vSAN Default Storage Policy を利用している VM は、下記のように確認できます。
VM は 15 台ありますが、とりあえず 5台だけ表示しています。
ついでに、利用しているストレージ容量も表示してみました。
(今回の例では、容量の少ない VM は 0 になっています。)
PowerCLI> (Get-SpbmStoragePolicy "vSAN Default Storage Policy" | Get-VM).Count
15
PowerCLI> Get-SpbmStoragePolicy "vSAN Default Storage Policy" | Get-VM | select Name,{[int]$_.UsedSpaceGB} | sort Name | select -First 5
Name [int]$_.UsedSpaceGB
---- -------------------
ansible01 11
ha-vm01 0
hv-n00 0
hv-n06-w 2
infra-dns01-master 20
infra-dns01-master という VM のポリシーを vsan-policy-raid5 に変更してみます。
PowerCLI> Get-VM infra-dns01-master | Set-SpbmEntityConfiguration -StoragePolicy "vsan-policy-raid5"
Entity Storage Policy Status Time Of Check
------ -------------- ------ -------------
infra-dns01-master vsan-policy-raid5 compliant 2018/01/20 14:59:44
上記だと、仮想マシン ホームのポリシーだけが変更されます。
(手軽に確認しやすいため、対象 VM の「仮想マシン ストレージ ポリシーの編集」を開いています)
下記のように、仮想ディスクもポリシーを変更します。
PowerCLI> Get-VM infra-dns01-master | Get-HardDisk | Set-SpbmEntityConfiguration -StoragePolicy "vsan-policy-raid5"
Entity Storage Policy Status Time Of Check
------ -------------- ------ -------------
Hard disk 1 vsan-policy-raid5 compliant 2018/01/20 15:10:50
仮想マシン ストレージ ポリシーは、下記のように確認することができます。
PowerCLI> Get-VM infra-dns01-master | Get-SpbmEntityConfiguration | ft -AutoSize
Entity Storage Policy Status Time Of Check
------ -------------- ------ -------------
infra-dns01-master vsan-policy-raid5 compliant 2018/01/20 14:59:44
PowerCLI> Get-VM infra-dns01-master | Get-HardDisk | Get-SpbmEntityConfiguration | ft -AutoSize
Entity Storage Policy Status Time Of Check
------ -------------- ------ -------------
Hard disk 1 vsan-policy-raid5 compliant 2018/01/20 15:10:50
vSphere Web Client でも、仮想マシンホームだけでなく仮想ディスクのポリシーが変更されています。
ただし、データ配置もポリシーに合わせて変更されるため(今回は RAID0 → RAID5)
まとめてポリシー変更する場合は容量やパフォーマンスについて要注意かもしれません。
以上、PowerCLI で仮想マシン ストレージ ポリシーを変更してみる話でした。