【问题标题】:PowerShell. Create 2 Storage Space Pools with right disks电源外壳。使用正确的磁盘创建 2 个存储空间池
【发布时间】:2020-06-21 01:11:01
【问题描述】:

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

$disks = Get-PhysicalDisk -CanPool $true | select -first ((Get-PhysicalDisk -CanPool $true).count/2)
New-StoragePool -FriendlyName "DataPool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks $disks | New-VirtualDisk -FriendlyName "DataDisk" -UseMaximumSize -NumberOfColumns $disks.Count -ResiliencySettingName "Simple" -ProvisioningType Fixed | Initialize-Disk -Confirm:$False -PassThru | New-Partition -DriveLetter S –UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "SQLDATA" -AllocationUnitSize 65536 -Confirm:$false            

$disks2 = Get-PhysicalDisk -CanPool $true
New-StoragePool -FriendlyName "LogsPool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks $disks2 | New-VirtualDisk -FriendlyName "LogsDisk" -UseMaximumSize -NumberOfColumns $disks.Count -ResiliencySettingName "Simple" -ProvisioningType Fixed | Initialize-Disk -Confirm:$False -PassThru | New-Partition -DriveLetter L –UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "SQLLOGS" -AllocationUnitSize 65536 -Confirm:$false   

我怎样才能让它工作?

【问题讨论】:

  • Pool1 必须有 LUN0、LUN1、LUN2、LUN3 的磁盘。但是在 deploymen1 上,根据屏幕截图 2,它有 LUN4、LUN3、LUN6、LUN2。在部署 2 中,它具有 LUN 3、LUN 1、LUN 2、LUN 5。因此无法设置正确的缓存。我可以做嵌套部署工作,但我正在寻找 PowerShell 代码,所以它更...有效?
  • 好吧,我没有能力复制你的环境,但你为什么不过滤它们呢?
  • 不知道能不能。所有值都完全相同。 i.stack.imgur.com/Bq7n9.png 至少在 SQL Server 2016 上,在 SQL Server 2014 上的值可能不同(但我需要 2016)。
  • 你能显示Get-PhysicalDisk -CanPool $true | gm的输出吗

标签: powershell


【解决方案1】:

您能否按 deviceId 对它们进行排序以获得正确的磁盘?

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

或者以其他方式使用 deviceId 明确指定磁盘 0-3 和 4-7

【讨论】:

    【解决方案2】:
    $disks = (get-physicaldisk -canpool $true).PhysicalLocation | sort
    

    试试这个来排序

    【讨论】:

    • 嘿,恐怕没有用 :( pastebin.com/4aNDQa6N 我的猜测是预期值是这样的:Msft Virtual Disk True OK Healthy Auto-Select 1023 GB (with Get-PhysicalDisk) 但实际值​​是这样的:Integrated : Adapter 3 : Port 0 : Target 0 : LUN 2(与(get-physicaldisk -canpool $true).PhysicalLocation | sort
    【解决方案3】:

    有点晚了,但是:我使用驱动器序列号或唯一 ID 来确保我得到正确的驱动器。

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多