In most production environments business as usual activities, user errors or business critical changes can sometime make environment deviate from best practices. One such best practice for vSpehre environment is to have RDM devices used by MS cluster set as Perennially Reserved.
This blog provides you a quick way to fix the deviations from this best practice.
Step 1:
Prepare a list of Naa IDs that are used as RDMs in the setup. There are plenty of blogs and community links that cover this part. Below are a few
- Vmware KB 2001823
- PowerCLI script to list VMFS,RDM and Free LUNs in a cluster
- PowerCLI – List VMs with RDM
The output of each method is different but all of them give you the NAA ID for the RDM device.
Step 2:
Format the list of Naa IDs for use with this script. This script expects the input file format as under
Step 3:
Execute the below code after updating the csv file location
$rdms=Import-Csv C:\Users\vmZoneBlog\RDMs.csv
$myhosts = Get-VMHost
foreach ($myhost in $myhosts)
{
$myesxcli= get-esxcli -VMHost $myhost
$devices=Get-ScsiLun -VmHost $myhost.Name | select CanonicalName
foreach ($device in $devices)
{
foreach ($rdm in $rdms)
{
if($device.CanonicalName -eq $rdm.Naa_ID)
{
$isreserved = $myesxcli.storage.core.device.list($device.CanonicalName) | select -Property IsPerenniallyReserved
if ($isreserved.IsPerenniallyReserved -eq $false)
{
Write-Host("Setting "+$rdm.Naa_ID+" on "+ $myhost.Name + " to Perennially Reserved")
$myesxcli.storage.core.device.setconfig($false,$device.CanonicalName, $true)
}
else
{
Write-Host($rdm.Naa_ID+ " on " + $myhost.Name +" is allready Perennially Reserved")
}
}
}
}
}
Make sure to update the input csv location in line 1