From 7a38462f1a7bb90591825fd0bcf25df6d2f52ecb Mon Sep 17 00:00:00 2001 From: lucdekens Date: Fri, 29 Jul 2016 15:34:15 +0200 Subject: [PATCH 1/6] Create VMFSIncrease.psd1 --- Modules/VMFSIncrease/VMFSIncrease.psd1 | 1 + 1 file changed, 1 insertion(+) create mode 100644 Modules/VMFSIncrease/VMFSIncrease.psd1 diff --git a/Modules/VMFSIncrease/VMFSIncrease.psd1 b/Modules/VMFSIncrease/VMFSIncrease.psd1 new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Modules/VMFSIncrease/VMFSIncrease.psd1 @@ -0,0 +1 @@ + From 1489e86b669e9ab790a1dfa265d52464db0a3ab8 Mon Sep 17 00:00:00 2001 From: lucdekens Date: Fri, 29 Jul 2016 15:37:11 +0200 Subject: [PATCH 2/6] Add files via upload --- Modules/VMFSIncrease/LICENSE.txt.URL | 6 + Modules/VMFSIncrease/VMFSIncrease.psd1 | 19 +- Modules/VMFSIncrease/VMFSIncrease.psm1 | 247 +++++++++++++++++++++++++ 3 files changed, 271 insertions(+), 1 deletion(-) create mode 100644 Modules/VMFSIncrease/LICENSE.txt.URL create mode 100644 Modules/VMFSIncrease/VMFSIncrease.psm1 diff --git a/Modules/VMFSIncrease/LICENSE.txt.URL b/Modules/VMFSIncrease/LICENSE.txt.URL new file mode 100644 index 0000000..5ac2446 --- /dev/null +++ b/Modules/VMFSIncrease/LICENSE.txt.URL @@ -0,0 +1,6 @@ +[InternetShortcut] +URL=https://github.com/lucdekens/LogInsight/blob/v1.0/LICENSE.txt +IDList= +HotKey=0 +IconFile=C:\Users\ldekens\AppData\Local\Mozilla\Firefox\Profiles\2ahnnh1i.default\shortcutCache\ec4nFcIEAQBPFmSiPtTJ2w==.ico +IconIndex=0 diff --git a/Modules/VMFSIncrease/VMFSIncrease.psd1 b/Modules/VMFSIncrease/VMFSIncrease.psd1 index 8b13789..d87ad53 100644 --- a/Modules/VMFSIncrease/VMFSIncrease.psd1 +++ b/Modules/VMFSIncrease/VMFSIncrease.psd1 @@ -1 +1,18 @@ - +@{ + ModuleToProcess = 'VMFSIncrease.psm1' + ModuleVersion = '1.0.0.0' + GUID = '9f167385-c5c6-4a65-ac14-949c67519001' + Author = 'Luc Dekens ' + CompanyName = 'Community' + Copyright = '(c) 2016. All rights reserved.' + Description = 'Expand and Extend VMFS DatastoresModule description' + PowerShellVersion = '3.0' + FunctionsToExport = 'Get-VmfsDatastoreInfo','Get-VmfsDatastoreIncrease','New-VmfsDatastoreIncrease' + PrivateData = @{ + PSData = @{ + Tags = @('VMFS','Expand','Extend','vSphere') + LicenseUri = 'https://www.tldrlegal.com/l/mit' + ProjectUri = 'https://github.com/lucdekens/VMFSIncrease' + } + } +} diff --git a/Modules/VMFSIncrease/VMFSIncrease.psm1 b/Modules/VMFSIncrease/VMFSIncrease.psm1 new file mode 100644 index 0000000..ec0fa2b --- /dev/null +++ b/Modules/VMFSIncrease/VMFSIncrease.psm1 @@ -0,0 +1,247 @@ +function Get-VmfsDatastoreInfo +{ + [CmdletBinding(SupportsShouldProcess = $True)] + param ( + [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $True)] + [PSObject]$Datastore + ) + + Process + { + if ($Datastore -is [String]) + { + $Datastore = Get-Datastore -Name $Datastore -ErrorAction SilentlyContinue + } + if ($Datastore -isnot [VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.Datastore]) + { + Write-Error 'Invalid value for Datastore.' + return + } + if ($Datastore.Type -ne 'VMFS') + { + Write-Error "$($Datastore.Name) is not a VMFS datastore" + return + } + + # Get the Datastore System Manager from an ESXi that has the Datastore + $esx = Get-View -Id ($Datastore.ExtensionData.Host | Get-Random | Select -ExpandProperty Key) + $hsSys = Get-View -Id $esx.ConfigManager.StorageSystem + + foreach ($extent in $Datastore.ExtensionData.Info.Vmfs.Extent) + { + $lun = $esx.Config.StorageDevice.ScsiLun | where{ $_.CanonicalName -eq $extent.DiskName } + + $hdPartInfo = $hsSys.RetrieveDiskPartitionInfo($lun.DeviceName) + $hdPartInfo[0].Layout.Partition | %{ + New-Object PSObject -Property ([ordered]@{ + Datastore = $Datastore.Name + CanonicalName = $lun.CanonicalName + Model = "$($lun.Vendor.TrimEnd(' ')).$($lun.Model.TrimEnd(' ')).$($lun.Revision.TrimEnd(' '))" + DiskSizeGB = $hdPartInfo[0].Layout.Total.BlockSize * $hdPartInfo[0].Layout.Total.Block / 1GB + DiskBlocks = $hdPartInfo[0].Layout.Total.Block + DiskBlockMB = $hdPartInfo[0].Layout.Total.BlockSize/1MB + PartitionFormat = $hdPartInfo[0].Spec.PartitionFormat + Partition = if ($_.Partition -eq '') { '' }else{ $_.Partition } + Used = $extent.Partition -eq $_.Partition + Type = $_.Type + PartitionSizeGB = [math]::Round(($_.End.Block - $_.Start.Block + 1) * $_.Start.BlockSize / 1GB, 1) + PartitionBlocks = $_.End.Block - $_.Start.Block + 1 + PartitionBlockMB = $_.Start.BlockSize/1MB + Start = $_.Start.Block + End = $_.End.Block + }) + } + } + } +} + +function Get-VmfsDatastoreIncrease +{ + [CmdletBinding(SupportsShouldProcess = $True)] + param ( + [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $True)] + [PSObject]$Datastore + ) + + Process + { + if ($Datastore -is [String]) + { + $Datastore = Get-Datastore -Name $Datastore -ErrorAction SilentlyContinue + } + if ($Datastore -isnot [VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.Datastore]) + { + Write-Error 'Invalid value for Datastore.' + return + } + + if ($Datastore.Type -ne 'VMFS') + { + Write-Error "$($Datastore.Name) is not a VMFS datastore" + return + } + + # Get the Datastore System Manager from an ESXi that has the Datastore + $esx = Get-View -Id ($Datastore.ExtensionData.Host | Get-Random | Select -ExpandProperty Key) + $hsSys = Get-View -Id $esx.ConfigManager.StorageSystem + $hdSys = Get-View -Id $esx.ConfigManager.DatastoreSystem + + $extents = $Datastore.ExtensionData.Info.Vmfs.Extent | Select -ExpandProperty DiskName + + $hScsiDisk = $hdSys.QueryAvailableDisksForVmfs($Datastore.ExtensionData.MoRef) + foreach ($disk in $hScsiDisk) + { + $partInfo = $hsSys.RetrieveDiskPartitionInfo($disk.DeviceName) + $partUsed = ($partInfo[0].Layout.Partition | where{ $_.Type -eq 'VMFS' } | %{ ($_.End.Block - $_.Start.Block + 1) * $_.Start.BlockSize } | + Measure-Object -Sum | select -ExpandProperty Sum)/1GB + if ($extents -contains $disk.CanonicalName) + { + $incType = 'Expand' + $vmfsExpOpt = $hdSys.QueryVmfsDatastoreExpandOptions($Datastore.ExtensionData.MoRef) + $PartMax = ($vmfsExpOpt[0].Info.Layout.Partition | where{ $_.Type -eq 'VMFS' } | %{ ($_.End.Block - $_.Start.Block + 1) * $_.Start.BlockSize } | + Measure-Object -Sum | select -ExpandProperty Sum)/1GB + } + else + { + $incType = 'Extend' + $vmfsExtOpt = $hdSys.QueryVmfsDatastoreExtendOptions($Datastore.ExtensionData.MoRef, $disk.DevicePath, $null) + $partMax = ($vmfsExpOpt[0].Info.Layout.Partition | where{ $_.Type -eq 'VMFS' } | %{ ($_.End.Block - $_.Start.Block + 1) * $_.Start.BlockSize } | + Measure-Object -Sum | select -ExpandProperty Sum)/1GB + } + New-Object PSObject -Property ([ordered]@{ + Datastore = $Datastore.Name + CanonicalName = $disk.CanonicalName + Model = "$($disk.Vendor.TrimEnd(' ')).$($disk.Model.TrimEnd(' ')).$($disk.Revision.TrimEnd(' '))" + DiskSizeGB = $partInfo[0].Layout.Total.BlockSize * $hdPartInfo[0].Layout.Total.Block / 1GB + DiskBlocks = $partInfo[0].Layout.Total.Block + DiskBlockMB = $partInfo[0].Layout.Total.BlockSize/1MB + AvailableGB = [math]::Round($partMax - $partUsed, 2) + Type = $incType + }) + } + } +} + +function New-VmfsDatastoreIncrease +{ + [CmdletBinding(SupportsShouldProcess = $True)] + param ( + [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $True)] + [PSObject]$Datastore, + [int]$IncreaseSizeGB, + [Parameter(Position = 1)] + [string]$CanonicalName, + [Parameter(Mandatory = $true, ParameterSetName = 'Expand')] + [switch]$Expand, + [Parameter(Mandatory = $true, ParameterSetName = 'ExTend')] + [switch]$Extend + ) + + Process + { + if ($Datastore -is [String]) + { + $Datastore = Get-Datastore -Name $Datastore -ErrorAction SilentlyContinue + } + if ($Datastore -isnot [VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.Datastore]) + { + Write-Error 'Invalid value for Datastore.' + return + } + + if ($Datastore.Type -ne 'VMFS') + { + Write-Error "$($Datastore.Name) is not a VMFS datastore" + return + } + + # Get the Datastore System Manager from an ESXi that has the Datastore + $esx = Get-View -Id ($Datastore.ExtensionData.Host | Get-Random | Select -ExpandProperty Key) + $hsSys = Get-View -Id $esx.ConfigManager.StorageSystem + $hdSys = Get-View -Id $esx.ConfigManager.DatastoreSystem + + $extents = $Datastore.ExtensionData.Info.Vmfs.Extent | Select -ExpandProperty DiskName + + $hScsiDisk = $hdSys.QueryAvailableDisksForVmfs($Datastore.ExtensionData.MoRef) + + # Expand or Extend + switch ($PSCmdlet.ParameterSetName) + { + 'Expand' { + $expOpt = $hdSys.QueryVmfsDatastoreExpandOptions($Datastore.ExtensionData.MoRef) + if ($CanonicalName) + { + $dsOpt = $expOpt | where{ $_.Spec.Extent.DiskName -eq $CanonicalName } + } + else + { + $dsOpt = $expOpt | Sort-Object -Property { $_.Spec.Extent.Diskname } | select -first 1 + } + if ($IncreaseSizeGB -ne 0) + { + $lun = $hScsiDisk | where{ $_.CanonicalName -eq $dsOpt.Spec.Extent.DiskName } + $partInfo = $hsSys.RetrieveDiskPartitionInfo($lun.DeviceName) + $partMax = ($vmfsExpOpt[0].Info.Layout.Partition | where{ $_.Type -eq 'VMFS' } | %{ ($_.End.Block - $_.Start.Block + 1) * $_.Start.BlockSize } | + Measure-Object -Sum | select -ExpandProperty Sum)/1GB + $partUsed = ($partInfo[0].Layout.Partition | where{ $_.Type -eq 'VMFS' } | %{ ($_.End.Block - $_.Start.Block + 1) * $_.Start.BlockSize } | + Measure-Object -Sum | select -ExpandProperty Sum)/1GB + if (($partMax - $partUsed) -ge $IncreaseSizeGB) + { + $spec = $dsOpt.Spec + $spec.Partition.Partition[0].EndSector -= ([math]::Floor(($partMax - $partUsed - $IncreaseSizeGB) * 1GB/512)) + } + else + { + Write-Error "Requested expand size $($IncreaseSizeGB)GB not available on $($lun.CanonicalName)" + return + } + } + else + { + $spec = $dsOpt.Spec + } + $hdSys.ExpandVmfsDatastore($Datastore.ExtensionData.MoRef, $spec) + } + 'Extend' { + if ($CanonicalName) + { + $lun = $hScsiDisk | where{ $extents -notcontains $_.CanonicalName -and $_.CanonicalName -eq $CanonicalName } + } + else + { + $lun = $hScsiDisk | where{ $extents -notcontains $_.CanonicalName } | Sort-Object -Property CanonicalName | select -First 1 + } + if (!$lun) + { + Write-Error "No valid LUN provided or found for extent" + return + } + $vmfsExtOpt = $hdSys.QueryVmfsDatastoreExtendOptions($Datastore.ExtensionData.MoRef, $lun.DevicePath, $null) + if ($IncreaseSizeGB -ne 0) + { + $partInfo = $hsSys.RetrieveDiskPartitionInfo($lun.DeviceName) + $partMax = ($vmfsExpOpt[0].Info.Layout.Partition | where{ $_.Type -eq 'VMFS' } | %{ ($_.End.Block - $_.Start.Block + 1) * $_.Start.BlockSize } | + Measure-Object -Sum | select -ExpandProperty Sum)/1GB + if ($partMax -ge $IncreaseSizeGB) + { + $spec = $vmfsExtOpt[0].Spec + $spec.Partition.Partition[0].EndSector = $spec.Partition.Partition[0].StartSector + [math]::Floor($IncreaseSizeGB * 1GB / 512) + } + else + { + Write-Error "No valid LUN for extent with $($IncreaseSizeGB)GB space found" + return + } + } + else + { + $spec = $vmfsExtOpt.Spec + } + + $hdSys.ExtendVmfsDatastore($Datastore.ExtensionData.MoRef, $spec) + } + } + } +} + +Export-ModuleMember -Function Get-VmfsDatastoreInfo,Get-VmfsDatastoreIncrease,New-VmfsDatastoreIncrease From 7392e451c5d528fd2a44d9ca243441ff375f983e Mon Sep 17 00:00:00 2001 From: lucdekens Date: Fri, 29 Jul 2016 15:37:35 +0200 Subject: [PATCH 3/6] Create en-US --- Modules/VMFSIncrease/en-US | 1 + 1 file changed, 1 insertion(+) create mode 100644 Modules/VMFSIncrease/en-US diff --git a/Modules/VMFSIncrease/en-US b/Modules/VMFSIncrease/en-US new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Modules/VMFSIncrease/en-US @@ -0,0 +1 @@ + From b2ba87db865ead8f404af051ab7526cd4c8d828c Mon Sep 17 00:00:00 2001 From: lucdekens Date: Fri, 29 Jul 2016 15:38:13 +0200 Subject: [PATCH 4/6] Delete en-US --- Modules/VMFSIncrease/en-US | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Modules/VMFSIncrease/en-US diff --git a/Modules/VMFSIncrease/en-US b/Modules/VMFSIncrease/en-US deleted file mode 100644 index 8b13789..0000000 --- a/Modules/VMFSIncrease/en-US +++ /dev/null @@ -1 +0,0 @@ - From 7bbec511cbaf3d969450ce05f7e0e6ec64f11bbd Mon Sep 17 00:00:00 2001 From: lucdekens Date: Fri, 29 Jul 2016 15:38:56 +0200 Subject: [PATCH 5/6] Create about_VMFSIncrease.help.txt --- .../VMFSIncrease/en-US/about_VMFSIncrease.help.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 Modules/VMFSIncrease/en-US/about_VMFSIncrease.help.txt diff --git a/Modules/VMFSIncrease/en-US/about_VMFSIncrease.help.txt b/Modules/VMFSIncrease/en-US/about_VMFSIncrease.help.txt new file mode 100644 index 0000000..55f3c0a --- /dev/null +++ b/Modules/VMFSIncrease/en-US/about_VMFSIncrease.help.txt @@ -0,0 +1,13 @@ +TOPIC + VMFSIncrease + +SYNOPSIS + The VMFSIncrease module offers the same functionality that is available +through the Increase button in the vSphere Web Client. + +DESCRIPTION + The VMFSIncrease offers functionality that allows to Expand or Extend + VMFS Datastores. The module uses the vSphere API to implement this functionality. + + SEE ALSO +http://www.lucd.info/2016/07/29/vmfs-datastores-expand-and-extend From 99250732fb33773e67cc909c42ba45188200b03c Mon Sep 17 00:00:00 2001 From: lucdekens Date: Fri, 29 Jul 2016 15:39:10 +0200 Subject: [PATCH 6/6] Add files via upload --- .../en-US/VMFSIncrease.psm1-Help.xml | 473 ++++++++++++++++++ 1 file changed, 473 insertions(+) create mode 100644 Modules/VMFSIncrease/en-US/VMFSIncrease.psm1-Help.xml diff --git a/Modules/VMFSIncrease/en-US/VMFSIncrease.psm1-Help.xml b/Modules/VMFSIncrease/en-US/VMFSIncrease.psm1-Help.xml new file mode 100644 index 0000000..2ff4f26 --- /dev/null +++ b/Modules/VMFSIncrease/en-US/VMFSIncrease.psm1-Help.xml @@ -0,0 +1,473 @@ + + + + + + + + + + Get-VmfsDatastoreInfo + + Provides partition information for all the extents in the datastore. + + + + + Get + VmfsDatastoreInfo + + + + The function will display partition information for all the extents used by the datastore. + + + + + Get-VmfsDatastoreInfo + + Datastore + + The name of the Datastore or a PowerCLI Datastore object + + PSObject + + + + + + + + + Datastore + + The name of the Datastore or a PowerCLI Datastore object + + PSObject + + PSObject + + + + + + + + + + + System.Management.Automation.PSObject + + + + + + + + + + + + + System.Object + + + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS C:\> + + Get-VmfsDatastoreInfo -Datastore MyDS + + Will return partition information for the Datastore named MyDS + + + + -------------------------- EXAMPLE 2 -------------------------- + + PS C:\> + + Get-Datastore -Name My* | Get-VmfsDatastoreInfo + + This example will return partition information for all the Datastore objects that are returned by the Get-Datastore PowerCLI cmdlet + + + + + + + + Get-VmfsDatastoreIncrease + + Displays the increase options for a datastore + + + + + Get + VmfsDatastoreIncrease + + + + The function will provide all the Expand and Extend options for a specific datastore + + + + + Get-VmfsDatastoreIncrease + + Datastore + + The name of the Datastore or a PowerCLI Datastore object + + PSObject + + + + + + + + + Datastore + + The name of the Datastore or a PowerCLI Datastore object + + PSObject + + PSObject + + + + + + + + + + + System.Management.Automation.PSObject + + + + + + + + + + + + + System.Object + + + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS C:\> + + Get-VmfsDatastoreIncrease -Datastore MyDS + + The exmaple will list all Expand and Extend options available for the Datastore, named MyDS + + + + -------------------------- EXAMPLE 2 -------------------------- + + PS C:\> + + Get-Datastore -Name MyDS* | Get-VmfsDatastoreIncrease + + The Expand and Extend options for all Datastore retruned by the PowerCLI Get-Datastore will be returned. + + + + + + + + New-VmfsDatastoreIncrease + + Increase the capacity of a Datastore + + + + + New + VmfsDatastoreIncrease + + + + The capacity of the Datastore in increased through an Expand or an Extend. +To allow successful completion there shall be free capacity on one of the Extents, or there shall be free LUNs available. +With the Expand or Extend switches the caller selects which type of capacity increase is used. + + + + + New-VmfsDatastoreIncrease + + Datastore + + The name of the Datastore or a PowerCLI Datastore object + + PSObject + + + + + CanonicalName + + The Canonical name of the LUN on which to create a new Extent, or the name of the LUN on which to apply the Expansion. +If this parameter is not provided, the function will sort the available LUN alphanumerically on the Canonical names and slect the first one. + + String + + + + + IncreaseSizeGB + + The amount of GB by which to increase the size of the Datastore. +If this parameter is not used, all of the available Expand or Extend diskspace will be used. + + Int32 + + + + + Expand + + A switch to indicate if the Datastore shall be Expanded + + SwitchParameter + + + + + + New-VmfsDatastoreIncrease + + Datastore + + The name of the Datastore or a PowerCLI Datastore object + + PSObject + + + + + CanonicalName + + The Canonical name of the LUN on which to create a new Extent, or the name of the LUN on which to apply the Expansion. +If this parameter is not provided, the function will sort the available LUN alphanumerically on the Canonical names and slect the first one. + + String + + + + + IncreaseSizeGB + + The amount of GB by which to increase the size of the Datastore. +If this parameter is not used, all of the available Expand or Extend diskspace will be used. + + Int32 + + + + + Extend + + A switch to indicate if the Datastore shall be Extended + + SwitchParameter + + + + + + + + + Datastore + + The name of the Datastore or a PowerCLI Datastore object + + PSObject + + PSObject + + + + + + + IncreaseSizeGB + + The amount of GB by which to increase the size of the Datastore. +If this parameter is not used, all of the available Expand or Extend diskspace will be used. + + Int32 + + Int32 + + + + + + + CanonicalName + + The Canonical name of the LUN on which to create a new Extent, or the name of the LUN on which to apply the Expansion. +If this parameter is not provided, the function will sort the available LUN alphanumerically on the Canonical names and slect the first one. + + String + + String + + + + + + + Expand + + A switch to indicate if the Datastore shall be Expanded + + SwitchParameter + + SwitchParameter + + + + + + + Extend + + A switch to indicate if the Datastore shall be Extended + + SwitchParameter + + SwitchParameter + + + + + + + + + + + System.Management.Automation.PSObject + + + + + + + + + + + + + System.Object + + + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS C:\> + + New-VmfsDatastoreIncrease -Datastore MyDS -Expand + + The capacity of the Datastore, named MyDS, will be Expanded with all available free space on the first extent of the Datastore. + + + + -------------------------- EXAMPLE 2 -------------------------- + + PS C:\> + + New-VmfsDatastoreIncrease -Name MyDS -Expand -IncreaseSizeGB 25 + + The capacity of the Datastore, named MyDS, will be Expanded with 25GB on the first extent of the Datastore. +Provided if course, this amount of free space is available. + + + + -------------------------- EXAMPLE 3 -------------------------- + + PS C:\> + + New-VmfsDatastoreIncrease -Datastore 'TestDS' -Expand -IncreaseSizeGB 15 -CanonicalName 'naa.600507680180732f1800000000000011' + + The capacity of the Datastore MyDS will be increased with 15GB on the extent with the Canonicalname naa.600507680180732f1800000000000011 + + + + -------------------------- EXAMPLE 4 -------------------------- + + PS C:\> + + New-VmfsDatastoreIncrease -Datastore MyDS -Expand -CanonicalName 'naa.600507680180732f1800000000000012' + + The capacity of the Datastore MyDS will be increased with all available free space on the extent with the Canonicalname naa.600507680180732f1800000000000012 + + + + -------------------------- EXAMPLE 5 -------------------------- + + PS C:\> + + New-VmfsDatastoreIncrease -Datastore MyDS -Extend + + A new Extent will be added to Datastore MyDS. +All available free space of the LUN will be allocated. +The available LUNs are ordered alphanumerically by their Canonicalname, and the first LUN is used. + + + + -------------------------- EXAMPLE 6 -------------------------- + + PS C:\> + + Get-Datastore -Name MyDS | New-VmfsDatastoreIncrease -Extend -IncreaseSizeGB 50 + + The capacity of the Datastore returned by the PowerCLI Get-Datastore cmdlet will be increased by 50GB. +This is done by adding a new Extent to the Datastore. +The available LUNs are ordered alphanumerically by their Canonicalname, and the first LUN is used. + + + + + + \ No newline at end of file