Guys,
I have a requirement to add LUN's as RDM disks in Physical mode and shared (multiwriter) between two VM's using powercli. I have device WWN (naa.id) of the LUNs.
While adding the RDM's, disks would maintain the sequence of the SCSIID as below:
Hard Disk 2: SCSI 0:1
Hard Disk 3: SCSI 0:2
Hard Disk 4: SCSI 0:3
Hard Disk 5: SCSI 0:4
...
Please help.
It is basically the Backing of the disks tat changes.
Something like this
$diskNAA = @('naa.600098764dc75adc8a8545aa41234567','naa.600098764dc75adc8a8545aa41234568')
$nrDisk= $diskNAA.Count
$diskUnitNr = 1..($nrDisk) | where{$_ -ne 7}
$nrDB = 1
$vm = Get-VM -Name $vmNames[0]
$scsi = Get-ScsiController -VM $vm -Name 'SCSI controller 0'
$scsiBus = $scsi.ExtensionData.BusNumber
$scsiKey = $scsi.Key
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
for($db = 1; $db -le $nrDB; $db++){
if($db -gt 1){
$scsiBus = $scsiBus + 1
$scsiKey = -(200 + $db)
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$controller = New-Object VMware.Vim.ParaVirtualSCSIController
$controller.Key = $scsiKey
$controller.BusNumber = 1
$dev.Device = $controller
$spec.DeviceChange += $dev
}
for($hd = 1;$hd -le $nrDisk; $hd++){
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$disk = New-Object VMware.Vim.VirtualDisk
$back = New-Object VMware.Vim.VirtualDiskRawDiskMappingVer1BackingInfo
$back.CompatibilityMode = 'physicalMode'
$back.FileName = ''
$back.DiskMode = [VMware.Vim.VirtualDiskMode]::independent_persistent
$back.Sharing = [VMware.Vim.VirtualDiskSharing]::sharingMultiWriter
$back.DeviceName = "/vmfs/devices/disks/$($diskNAA[$hd - 1])"
$disk.Key = -($db * 100 + $hd)
$disk.ControllerKey = $scsiKey
$disk.UnitNumber = $diskUnitNr[$hd - 1]
$disk.Backing = $back
$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$dev.FileOperation = [VMware.Vim.VirtualDeviceConfigSpecFileOperation]::create
$dev.Device = $disk
$spec.DeviceChange += $dev
}
}
$vm.ExtensionData.ReconfigVM($spec)
$hdNames = Get-VM -Name $vmNames[0] | Get-HardDisk | where{$_.Name -ne 'Hard disk 1'} | Select -ExpandProperty FileName
$vm = Get-VM -Name $vmNames[1]
$scsi = Get-ScsiController -VM $vm -Name 'SCSI controller 0'
$scsiBus = $scsi.ExtensionData.BusNumber
$scsiKey = $scsi.Key
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
for($db = 1; $db -le $nrDB; $db++){
if($db -gt 1){
$scsiBus = $scsiBus + 1
$scsiKey = -(200 + $db)
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$controller = New-Object VMware.Vim.ParaVirtualSCSIController
$controller.Key = $scsiKey
$controller.BusNumber = 1
$dev.Device = $controller
$spec.DeviceChange += $dev
}
for($hd = 1;$hd -le $nrDisk; $hd++){
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$disk = New-Object VMware.Vim.VirtualDisk
$back = New-Object VMware.Vim.VirtualDiskRawDiskMappingVer1BackingInfo
$back.FileName = $hdNames
$back.DiskMode = [VMware.Vim.VirtualDiskMode]::independent_persistent
$back.Sharing = [VMware.Vim.VirtualDiskSharing]::sharingMultiWriter
$disk.Key = -($db * 100 + $hd)
$disk.ControllerKey = $scsiKey
$disk.UnitNumber = $diskUnitNr[$hd - 1]
$disk.Backing = $back
$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$dev.Device = $disk
$spec.DeviceChange += $dev
}
}
$vm.ExtensionData.ReconfigVM($spec)
---------------------------------------------------------------------------------------------------------
Was it helpful? Let us know by completing this short survey here.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Didn't you ask that same question 2 years ago?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Hi LucD,
Yes but the requirements are different. Previous one was for normal virtual disk but this is for RDM disk in physical mode.
Sorry not sure how to add RDM disk with its naa id as shared disk between 2 VM's.
It is basically the Backing of the disks tat changes.
Something like this
$diskNAA = @('naa.600098764dc75adc8a8545aa41234567','naa.600098764dc75adc8a8545aa41234568')
$nrDisk= $diskNAA.Count
$diskUnitNr = 1..($nrDisk) | where{$_ -ne 7}
$nrDB = 1
$vm = Get-VM -Name $vmNames[0]
$scsi = Get-ScsiController -VM $vm -Name 'SCSI controller 0'
$scsiBus = $scsi.ExtensionData.BusNumber
$scsiKey = $scsi.Key
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
for($db = 1; $db -le $nrDB; $db++){
if($db -gt 1){
$scsiBus = $scsiBus + 1
$scsiKey = -(200 + $db)
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$controller = New-Object VMware.Vim.ParaVirtualSCSIController
$controller.Key = $scsiKey
$controller.BusNumber = 1
$dev.Device = $controller
$spec.DeviceChange += $dev
}
for($hd = 1;$hd -le $nrDisk; $hd++){
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$disk = New-Object VMware.Vim.VirtualDisk
$back = New-Object VMware.Vim.VirtualDiskRawDiskMappingVer1BackingInfo
$back.CompatibilityMode = 'physicalMode'
$back.FileName = ''
$back.DiskMode = [VMware.Vim.VirtualDiskMode]::independent_persistent
$back.Sharing = [VMware.Vim.VirtualDiskSharing]::sharingMultiWriter
$back.DeviceName = "/vmfs/devices/disks/$($diskNAA[$hd - 1])"
$disk.Key = -($db * 100 + $hd)
$disk.ControllerKey = $scsiKey
$disk.UnitNumber = $diskUnitNr[$hd - 1]
$disk.Backing = $back
$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$dev.FileOperation = [VMware.Vim.VirtualDeviceConfigSpecFileOperation]::create
$dev.Device = $disk
$spec.DeviceChange += $dev
}
}
$vm.ExtensionData.ReconfigVM($spec)
$hdNames = Get-VM -Name $vmNames[0] | Get-HardDisk | where{$_.Name -ne 'Hard disk 1'} | Select -ExpandProperty FileName
$vm = Get-VM -Name $vmNames[1]
$scsi = Get-ScsiController -VM $vm -Name 'SCSI controller 0'
$scsiBus = $scsi.ExtensionData.BusNumber
$scsiKey = $scsi.Key
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
for($db = 1; $db -le $nrDB; $db++){
if($db -gt 1){
$scsiBus = $scsiBus + 1
$scsiKey = -(200 + $db)
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$controller = New-Object VMware.Vim.ParaVirtualSCSIController
$controller.Key = $scsiKey
$controller.BusNumber = 1
$dev.Device = $controller
$spec.DeviceChange += $dev
}
for($hd = 1;$hd -le $nrDisk; $hd++){
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$disk = New-Object VMware.Vim.VirtualDisk
$back = New-Object VMware.Vim.VirtualDiskRawDiskMappingVer1BackingInfo
$back.FileName = $hdNames
$back.DiskMode = [VMware.Vim.VirtualDiskMode]::independent_persistent
$back.Sharing = [VMware.Vim.VirtualDiskSharing]::sharingMultiWriter
$disk.Key = -($db * 100 + $hd)
$disk.ControllerKey = $scsiKey
$disk.UnitNumber = $diskUnitNr[$hd - 1]
$disk.Backing = $back
$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$dev.Device = $disk
$spec.DeviceChange += $dev
}
}
$vm.ExtensionData.ReconfigVM($spec)
---------------------------------------------------------------------------------------------------------
Was it helpful? Let us know by completing this short survey here.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Perfect. Thanks LucD.