Server 2016 存储空间最佳实践以及奇偶校验和扩展建议

Server 2016 存储空间最佳实践以及奇偶校验和扩展建议

嗨,大家好,

我在存储空间和基于硬件的 LSI 控制器之间切换了一段时间。硬件控制器提供 8 个端口,我的板载 LSI sas 有 16 个,我的机箱有 12 个驱动器插槽。目前我正在运行 MS Server 2016 Datacenter。

我想知道我是否可以从 6x4Tb Raid 5(硬件控制器)切换到更灵活的 SS 解决方案,其中 7x4 TB + 5x2 TB(HDD)+ 2x256Gb SSD 作为缓存。我过去使用 SS 的体验并不好,有很多驱动器消失和问题 + 数据丢失,而且 MS 的警报系统非常糟糕(我认为 SS 完全没有问题) - 但大多数 HDD 问题是由我的 PSU 引起的,现在已经解决了 - 所以我决定试试 SS,因为我可以将所有驱动器放在一个控制器上 + 摆脱 HW 控制器。板载 LSI(XEON D 板)运行良好,包括 HDD 待机。

我读过这篇文章 在 Windows Server 2012 R2 上添加驱动器后,存储池上的镜像虚拟磁盘无法扩展

我将引用一些非常有趣的发现:

因此,要扩展 4 列的存储池 - 您不需要添加 4 个磁盘 - 您只需要确保池中还有 4 个磁盘且剩余磁盘空间!

因此,如果 1 已满,但 3 有剩余空间,则添加一个磁盘后,该池将再次运行!

现在我通过以下方式测试了池和磁盘:-> 创建了一个带有 3x2 TB + 2x256GB SSD 的池(在 GUI 中)

    -> Get-StoragePool MyStoragePool | New-StorageTier –FriendlyName SSDTier –MediaType SSD
    -> Get-StoragePool MyStoragePool | New-StorageTier –FriendlyName HDDTier –MediaType HDD

    -> Get-StoragePool MyStoragePool | Set-ResiliencySetting -Name Mirror -NumberOfColumnsDefault 1

    -> $SSD = Get-StorageTier -FriendlyName SSDTier
    -> $HDD = Get-StorageTier -FriendlyName HDDTier

    -> $vd1 = New-VirtualDisk -StoragePoolFriendlyName MyStoragePool -FriendlyName Mirror -StorageTiers @($SSD) -StorageTierSizes @(175GB) -ResiliencySettingName Mirror -WriteCacheSize 0GB
    -> $vd1 = New-VirtualDisk -StoragePoolFriendlyName MyStoragePool -FriendlyName Parity -StorageTiers @($HDD) -StorageTierSizes @(3700GB) -ResiliencySettingName Parity -WriteCacheSize 1GB

在 Powershell 中运行良好,但在 GUI 中没有提供正确的设置。当我执行

    -> Get-VirtualDisk | Format-List

我明白了

    PS C:\Users\Administrator> Get-VirtualDisk | Format-List
    ObjectId                          : {1}\\HOMESERVER\root/Microsoft       /Windows/Storage/Providers_v2\SPACES_VirtualDisk.ObjectId="{ae6f3b40-843d-11e6-8239-806e6f6e6963}:VD:{4b713005-eb2e-4ac4-bf03-71a8ae7e05dc}{018a9f90-33a5-4c4e-a8e
                            b64e55}"
    PassThroughClass                  :
    PassThroughIds                    :
    PassThroughNamespace              :
    PassThroughServer                 :
    UniqueId                          : 909F8A01A5334E4CA8E4E55ECBB64E55
    Access                            : Read/Write
    AllocatedSize                     : 3972844748800
    AllocationUnitSize                :
    ColumnIsolation                   :
    DetachedReason                    : None
    FaultDomainAwareness              :
    FootprintOnPool                   : 5963025219584
    FriendlyName                      : Parity
    HealthStatus                      : Healthy
    Interleave                        :
    IsDeduplicationEnabled            : False
    IsEnclosureAware                  :
    IsManualAttach                    : False
    IsSnapshot                        : False
    IsTiered                          : True
    LogicalSectorSize                 : 512
    MediaType                         :
    Name                              :
    NameFormat                        :
    NumberOfAvailableCopies           :
    NumberOfColumns                   :
    NumberOfDataCopies                :
    NumberOfGroups                    :
    OperationalStatus                 : OK
    OtherOperationalStatusDescription :
    OtherUsageDescription             :
    ParityLayout                      :
    PhysicalDiskRedundancy            :
    PhysicalSectorSize                : 4096
    ProvisioningType                  :
    ReadCacheSize                     : 0
    RequestNoSinglePointOfFailure     : False
    ResiliencySettingName             :
    Size                              : 3972844748800
    UniqueIdFormat                    : Vendor Specific
    UniqueIdFormatDescription         :
    Usage                             : Other
    WriteCacheSize                    : 1073741824
    PSComputerName                    :

    ObjectId                          : {1}\\HOMESERVER\root/Microsoft/Windows/Storage/Providers_v2\SPACES_VirtualDisk.ObjectId="{ae6f3b40-843d-11e6-8239-806e6f6e6963}:VD:{4b713005-eb2e-4ac4-bf03-71a8ae7e05dc}{bc5374c5-e4c0-4fbe-b4d
                            094b26}"
    PassThroughClass                  :
    PassThroughIds                    :
    PassThroughNamespace              :
    PassThroughServer                 :
    UniqueId                          : C57453BCC0E4BE4FB4D9036AED094B26
    Access                            : Read/Write
    AllocatedSize                     : 472446402560
    AllocationUnitSize                :
    ColumnIsolation                   :
    DetachedReason                    : None
    FaultDomainAwareness              :
    FootprintOnPool                   : 472446402560
    FriendlyName                      : SSD_VD
    HealthStatus                      : Healthy
    Interleave                        :
    IsDeduplicationEnabled            : False
    IsEnclosureAware                  :
    IsManualAttach                    : False
    IsSnapshot                        : False
    IsTiered                          : True
    LogicalSectorSize                 : 512
    MediaType                         :
    Name                              :
    NameFormat                        :
    NumberOfAvailableCopies           :
    NumberOfColumns                   :
    NumberOfDataCopies                :
    NumberOfGroups                    :
    OperationalStatus                 : OK
    OtherOperationalStatusDescription :
    OtherUsageDescription             :
    ParityLayout                      :
    PhysicalDiskRedundancy            :
    PhysicalSectorSize                : 4096
    ProvisioningType                  :
    ReadCacheSize                     : 0
    RequestNoSinglePointOfFailure     : False
    ResiliencySettingName             :
    Size                              : 472446402560
    UniqueIdFormat                    : Vendor Specific
    UniqueIdFormatDescription         :
    Usage                             : Other
    WriteCacheSize                    : 0

发现 1:我对这里缺失的大量数据感到疑惑。

发现 2:以 150MB/s 的速度运行顺畅 + 将 MP3 复制到新驱动器。得益于 1 Gb WBC,存储空间奇偶校验写入性能非常好。

我的目标是一开始就拥有一个可扩展的池,其中至少有 6 个 4 TB 驱动器 + 2 个 256 GB SSD,并利用 SSD 上的写回缓存,这在我上面的示例中运行良好。我可以将奇偶校验固定到 HDD,将镜像固定到 SSD(因为我的 Vms 不会一直唤醒我的 HDD)

使用 6 个磁盘时,我可以将奇偶校验的列号设置为 3 吗?我是否可以再添加 3 个 4TB 磁盘,以便轻松扩展我的池?例如 6x4TB -> 9x4TB = 8x4TB 可用于奇偶校验……?

假设我将 6 个 4 TB 和 5 个 2 TB 以及 2 个 SSD 放在一个池中... 最大奇偶校验卷是多少?我可以通过随后更换 2 TB 驱动器来扩展它吗?引用的帖子的意思是:

我现在不能投反对票,但我想概述一下,bviktors 帖子中给出的基本信息是错误的 - 他仍然在思考 Raid,说你不能用半个磁盘组进行扩展:

如果您有一个有 4 列的存储池 - 您可以使用任意数量的磁盘,从 4 开始。存储空间将始终使用您拥有的所有磁盘!列数仅定义同时写入多少磁盘数据(这称为条带化)下一个条带(默认大小为 256 KB,称为交错)但是可以(并且将)写入 4 个不同的磁盘!

因此,要扩展 4 列的存储池 - 您不需要添加 4 个磁盘 - 您只需要确保池中还有 4 个磁盘且剩余磁盘空间!

因此,如果 1 已满,但 3 有剩余空间,则添加一个磁盘后,该池将再次运行!

(这允许按需要混合容量 - 无需保持相等磁盘大小的 raid 约束)

作为最佳实践,您应该始终添加更多磁盘,而不是#NumberOfDataCopies * #NumberofColumns:

考虑 2 列 2 复制磁盘 - 它至少需要 4 个磁盘。如果您丢失了一个磁盘,您仍然可以访问您的数据 - 但您无法再写入任何内容,因为您没有剩余的 4 列来存储数据!

假设您已向该池添加了 5 个磁盘(存储空间子系统将根据大小使用这些磁盘,以最佳方式填充以使所有磁盘同时达到 100%) - 丢失一个磁盘仍会保留您的数据 - 并使您的池继续进行新的写入,因为您仍然至少剩下 4 列。

此外,如果一个磁盘出现故障,您可以立即重建池,而无需先购买新磁盘!

Set-PhysicalDisk -FriendlyName“BrokenDisk”-Usage Retired Get-PhysicalDisk -FriendlyName“BrokenDisk”| Get-VirtualDisk | Repair-VirtualDisk -AsJob

如果剩余空间足够,数据现在将被“移动”到剩余磁盘。重建后:

$disk = Get-PhysicalDisk -FriendlyName "BrokenDisk" Remove-PhysicalDisk -StoragePoolFriendlyName "我的池" -PhysicalDisks $disk

(您可以使用相同的命令来淘汰“功能性”磁盘并将数据移动到其他磁盘 - 一旦添加磁盘,这将允许某种形式的数据重新分配 - 但最后您将始终有一个磁盘“空”。但是,由于磁盘数量较少,因此在您的情况下它不起作用。例如,在 10 个磁盘池中,您可以通过将少至 200 MB 的数据分配给其他每个磁盘来释放 2 TB 磁盘。重新运行该操作现在将优先写入空磁盘。存储空间基本上总是说:“我必须写入:8 个块(列数 * 数据副本数),每个块的大小为 64 KB(交错/列数) - 从 10 个磁盘中给我 8 个使用率最低的不同磁盘,这样我就可以把数据放在那里!”)

如果能够将所有数据从 2TB 驱动器转移到其他池设备(当空间可用时),然后向池中添加新驱动器,那就太好了。我想知道存储空间是否可以进行内部迁移 - 但重要的是列是固定的。如果我从 6x4 Tb 切换到 12x4TB(所有奇偶校验),存储空间会做什么?列呢?在标准中应该是 6(使用 6x4TB),- MS 指南告诉我我需要再扩展 6 个驱动器(这很糟糕)。

性能不是那么关键,因为我受到 1 Gbit Lan 的限制(即使 3x2 Tb Parity 和 1GB WBC 也运行得足够快)。因此列数可以尽可能低。

我愿意通过简单的冗余(奇偶校验)从该池中提取最大容量。我的 8 TB 驱动器上有一个额外的备份,每 3 天运行一次,因此我的重要数据无论如何都会得到保存。

感谢您提供答案和想法。

相关内容