URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

vSphere PowerCLIでストレージのマルチパスポリシーを一括設定する

 直近の作業メモ。
 これに限らずESXiホストの数が多いとGUIから一台一台変更していくのが苦痛なので、単一タスクのスクリプトが増えていく感じです。

 基本は"Set-ScsiLun"コマンドレットを実行するだけなのですが、適用対象をどのように指定するかが考え所です。

$VcSv = "vceter" $VcUser = "administrator@vsphere.local" $VcPass = "password" Add-PSSnapin VMware.VimAutomation.Core Connect-VIServer -Server $VcSv -User $VcUser -Password $VcPass -WarningAction:SilentlyContinue $AllEsx = Get-VMHost | Where {$_.ConnectionState -eq "Connected"} Foreach ($Esx in $AllEsx) { Get-VMHost -Name $Esx.Name | Get-ScsiLun | Where {$_.CanonicalName -like "naa.xxxxxx*" -and $_.MultipathPolicy -like "Fixed"} | Set-ScsiLun -MultipathPolicy "RoundRobin" } Disconnect-VIServer -Server $VcSv -Confirm:$False

 メインの部分をほぼワンライナーにしてしまったのでちょっと見にくくなってしまいました。
 この例では最初に接続状態のESXiホストを検出し、そのホストに接続されているストレージから識別子に「naa.xxxxxx」を含み、マルチパスポリシーが「固定」になっているものを「ラウンドロビン」に変更しています。
 このあたりの条件は目的によって都度修正ですね。今回は特定のストレージ装置のLUNを対象にして一括で変更したかったのでこの条件にしました。

 無計画に多種類のストレージ装置を併用していると、どうしてもこの辺を設定してあげないといけなくなってくるんですよね…。