Datastore to LUN Mapping (PowerCLI)
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
During the running of the script below you come across a number of objects that all have potentially useful information, therefore to make adapting the script easier at a later date I've displayed example object displays.
Its also worth checking out the original VMware forum post for further info - http://communities.vmware.com/thread/240466#240466
<source lang="powershell">
- Thieved and adapted from the good work by catman...
- http://communities.vmware.com/thread/240466#240466
$objESX = Get-VMHost "My_ESX*"
- Get .NET views for host and storage system
$objViewESX = Get-View -id $objESX.id $objViewESXstorageSys = Get-View -id $objViewESX.ConfigManager.StorageSystem
- Get FC HBAs
$HBAs = $objViewESXstorageSys.StorageDeviceInfo.HostBusAdapter | Where-Object {$_.Key -like "*FibreChannelHba*"}
- $HBAs
foreach ($hba in $HBAs) {
# Enumerate LUNs $LUNcount = $objViewESXstorageSys.StorageDeviceInfo.MultiPathInfo.Lun.Length #Write-Host ("Enumerating $LUNcount LUNs on " + $hba.Device) for ($LUNidx = 0; $LUNidx -lt $LUNcount; $LUNidx++ ) { $objScsiLUN = $objViewESXstorageSys.StorageDeviceInfo.MultiPathInfo.Lun[$LUNidx] #$objScsiLUN # Enumerate paths on LUN $PathCount = $objScsiLUN.Path.Length #Write-Host ("Enumerating $PathCount paths on " + $objScsiLUN.Id) for ($PathIdx = 0; $PathIdx -lt $PathCount; $PathIdx++) { $objSCSIpath = $objViewESXstorageSys.StorageDeviceInfo.MultiPathInfo.Lun[$LUNidx].Path[$PathIdx] #Write-Host ($objSCSIpath.Name + " - " + $objSCSIpath.PathState) # Only care about one path, active on current HBA if (($objSCSIpath.PathState -eq "active") -and ($objSCSIpath.Adapter -eq $hba.Key)) { # Now get the disk that we want $objSCSIdisk = $objViewESXstorageSys.StorageDeviceInfo.ScsiLun | Where-Object{ ($_.CanonicalName -eq $objScsiLUN.Id) -and ($_.DeviceType -eq "disk") } #$objSCSIdisk # Now get the datastore info for disk $MountCount = $objViewESXstorageSys.FileSystemVolumeInfo.MountInfo.Length #Write-Host ("Enumerating $MountCount mounts on " + $objSCSIdisk.CanonicalName) for ($MountIdx = 0; $MountIdx -lt $MountCount; $MountIdx++ ) { if ($objViewESXstorageSys.FileSystemVolumeInfo.MountInfo[$MountIdx].Volume.Type -eq "VMFS" ) { $objVolume = $objViewESXstorageSys.FileSystemVolumeInfo.MountInfo[$MountIdx].Volume #$objVolume $ExtentCount = $objVolume.Extent.Length #Write-Host ("Enumerating $ExtentCount mounts on " + $objVolume.Name) for ($ExtentIdx = 0; $ExtentIdx -lt $ExtentCount; $ExtentIdx++ ) { $objExtent = $objVolume.Extent[$ExtentIdx] # Match extent name to disk name if ($objExtent.DiskName -eq $objSCSIdisk.CanonicalName) { Write-Host($objSCSIdisk.Vendor + " " + $objSCSIdisk.Model + " " + $objSCSIdisk.CanonicalName + "`t" + $objVolume.Name) } } } } } } }
}
$objScsiLUN
Key : key-vim.host.MultipathInfo.LogicalUnit-vmhba3:0:13 Id : vmhba3:0:13 Lun : key-vim.host.ScsiDisk-vmhba3:0:13 Path : {vmhba3:0:13, vmhba3:1:13, vmhba4:0:13, vmhba4:1:13} Policy : VMware.Vim.HostMultipathInfoFixedLogicalUnitPolicy StorageArrayTypePolicy : DynamicType : DynamicProperty :
$objSCSIdisk
Capacity : VMware.Vim.HostDiskDimensionsLba DevicePath : /vmfs/devices/disks/vml.02000d0000600508b40006b8e40000d00001280000485356323030 Key : key-vim.host.ScsiDisk-vmhba3:0:13 Uuid : 02000d0000600508b40006b8e40000d00001280000485356323030 Descriptor : CanonicalName : vmhba3:0:13 DisplayName : LunType : disk Vendor : HP Model : HSV200 Revision : 6110 ScsiLevel : 6 SerialNumber : unavailable DurableName : VMware.Vim.ScsiLunDurableName AlternateName : {4, 3, 5, 5} StandardInquiry : {0, 0, 5, 18...} QueueDepth : OperationalState : {ok} Capabilities : VStorageSupport : DeviceName : /vmfs/devices/disks/vml.02000d0000600508b40006b8e40000d00001280000485356323030 DeviceType : disk DynamicType : DynamicProperty :
$objVolume
BlockSizeMb : 1 MaxBlocks : 262144 MajorVersion : 3 Version : 3.31 Uuid : 48944e24-b5e93716-aa5c-001cc4466ba8 Extent : {vmhba3:0:8} VmfsUpgradable : False ForceMountedInfo : Type : VMFS Name : VMFSVol8 Capacity : 536602476544 DynamicType : DynamicProperty :