PowerShell。使用正确的磁盘创建2个存储空间池

PowerShell。使用正确的磁盘创建2个存储空间池,powershell,Powershell,我正在尝试创建一个脚本,该脚本将创建2个存储空间池,每个池有4个磁盘。但是,由于缓存要求,我需要使用带有LUN0-3的磁盘用于pool1,使用带有LUN4-7的磁盘用于pool2。我使用以下脚本创建2个池,但每次运行它时,它都会从不同的磁盘创建池(请参见屏幕截图): 我怎样才能让它工作? 尝试此操作对这些磁盘进行排序您能按设备ID对它们进行排序以获得正确的磁盘吗 $disks = Get-PhysicalDisk -CanPool $true | Sort-Object deviceid

我正在尝试创建一个脚本,该脚本将创建2个存储空间池,每个池有4个磁盘。但是,由于缓存要求,我需要使用带有LUN0-3的磁盘用于pool1,使用带有LUN4-7的磁盘用于pool2。我使用以下脚本创建2个池,但每次运行它时,它都会从不同的磁盘创建池(请参见屏幕截图):

我怎样才能让它工作?


尝试此操作对这些磁盘进行排序

您能按设备ID对它们进行排序以获得正确的磁盘吗

$disks = Get-PhysicalDisk -CanPool $true | Sort-Object deviceid | select -first ((Get-PhysicalDisk -CanPool $true).count/2)

或者以其他方式使用deviceId显式指定磁盘0-3和4-7有点晚,但是:我使用驱动器序列号或唯一ID来确保获得正确的驱动器

下面是一个使用serialnumber的真实示例。这是我创建奇偶校验空间的日志,我总是记录我如何创建存储空间。我在这里省略了不用于存储空间的驱动器:

Get-PhysicalDisk | ft friendlyname,canpool,cannotpoolreason,size,uniqueid,SerialNumber,Usage

friendlyname            canpool CannotPoolReason               size uniqueid         SerialNumber    Usage
------------            ------- ----------------               ---- --------         ------------    -----
ST33000651AS               True                       3000592982016 5000C5002DFAB4EE 9XK0EC9S        Auto-Select
WDC WD30EFRX-68AX9N0       True                       3000592982016 50014E6EADFAE1EF WD-WMC1T3418930 Auto-Select
WDC WD30EFRX-68AX9N0       True                       3000592982016 50014E6E58A5BD05 WD-WMC1T3536082 Auto-Select

New-StoragePool -FriendlyName Pool-F -StorageSubSystemFriendlyName "Windows Storage*" -LogicalSectorSizeDefault 4096 -PhysicalDisks (Get-PhysicalDisk | ?{"9XK0EC9S;WD-WMC1T3418930;WD-WMC1T3536082".Contains($_.SerialNumber)})
    
FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly    Size AllocatedSize
------------ ----------------- ------------ ------------ ----------    ---- -------------
Pool-F       OK                Healthy      False        False      8.19 TB        768 MB
我可以使用唯一ID:

New-StoragePool -FriendlyName Pool-F -StorageSubSystemFriendlyName "Windows Storage*" -LogicalSectorSizeDefault 4096 -PhysicalDisks (Get-PhysicalDisk | ?{"5000C5002DFAB4EE;50014E6EADFAE1EF;50014E6E58A5BD05".Contains($_.uniqueid)})
在您的情况下,您也可以使用PhysicalLocation或ObjectID作为选择器。。。下面列出了它现在的外观以及物理位置:

Get-PhysicalDisk | ft friendlyname,canpool,cannotpoolreason,size,uniqueid,SerialNumber,PhysicalLocation,Usage

friendlyname            canpool CannotPoolReason               size uniqueid         SerialNumber    PhysicalLocation                                                Usage
------------            ------- ----------------               ---- --------         ------------    ----------------                                                -----
WDC WD30EFRX-68AX9N0      False In a Pool             3000592982016 50014E6EADFAE1EF WD-WMC1T3418930 PCI Slot 1 : Bus 4 : Device 0 : Function 0 : Adapter 1 : Port 1 Auto-Select
WDC WD30EFRX-68AX9N0      False In a Pool             3000592982016 50014E6E58A5BD05 WD-WMC1T3536082 Integrated : Bus 1 : Device 0 : Function 1 : Adapter 0 : Port 3 Auto-Select
ST33000651AS              False In a Pool             3000592982016 5000C5002DFAB4EE 9XK0EC9S        Integrated : Bus 1 : Device 0 : Function 1 : Adapter 0 : Port 4 Auto-Select

池1必须具有LUN0、LUN1、LUN2、LUN3的磁盘。但在deploymen1上,根据屏幕截图2,它有LUN4、LUN3、LUN6、LUN2。在部署2中,它有LUN 3、LUN 1、LUN 2和LUN 5。使得无法设置正确的缓存。我可以做嵌套部署工作,但我正在寻找PowerShell代码,所以它更。。。有效吗?我没有能力复制你的环境,但你为什么不过滤它们呢?我不知道我能不能。所有值都完全相同。至少在SQL Server 2016上,在SQL Server 2014上的值可能不同(但我需要2016)。您能否在这里显示
Get PhysicalDisk-CanPool$true | gm
的输出?嘿,恐怕这不起作用:(我猜预期值是这样的:
Msft虚拟磁盘True OK Health Auto Select 1023 GB
(使用
Get PhysicalDisk
),但实际值是:
Integrated:Adapter 3:Port 0:Target 0:LUN 2
(使用
(Get PhysicalDisk-canpool$True).PhysicalLocation |排序
New-StoragePool -FriendlyName Pool-F -StorageSubSystemFriendlyName "Windows Storage*" -LogicalSectorSizeDefault 4096 -PhysicalDisks (Get-PhysicalDisk | ?{"5000C5002DFAB4EE;50014E6EADFAE1EF;50014E6E58A5BD05".Contains($_.uniqueid)})
Get-PhysicalDisk | ft friendlyname,canpool,cannotpoolreason,size,uniqueid,SerialNumber,PhysicalLocation,Usage

friendlyname            canpool CannotPoolReason               size uniqueid         SerialNumber    PhysicalLocation                                                Usage
------------            ------- ----------------               ---- --------         ------------    ----------------                                                -----
WDC WD30EFRX-68AX9N0      False In a Pool             3000592982016 50014E6EADFAE1EF WD-WMC1T3418930 PCI Slot 1 : Bus 4 : Device 0 : Function 0 : Adapter 1 : Port 1 Auto-Select
WDC WD30EFRX-68AX9N0      False In a Pool             3000592982016 50014E6E58A5BD05 WD-WMC1T3536082 Integrated : Bus 1 : Device 0 : Function 1 : Adapter 0 : Port 3 Auto-Select
ST33000651AS              False In a Pool             3000592982016 5000C5002DFAB4EE 9XK0EC9S        Integrated : Bus 1 : Device 0 : Function 1 : Adapter 0 : Port 4 Auto-Select