Server 2016 Storage Spaces - Melhores Práticas e Sugestões para Paridade e Expandir

1

oi pessoal,

Estou alternando entre espaços de armazenamento e um controlador LSI baseado em hardware por um tempo. O controlador HW oferece 8 portas, meu LSI interno sas 16 e meu gabinete 12 slots de unidades. Atualmente estou executando o MS Server 2016 Datacenter.

Será que eu mudo do meu 6x4Tb Raid 5 (controlador HW) para uma solução SS mais flexível com 7x4 TB + 5x2 TB (HDDs) + 2x256GB SSDs como Cache. Minha experiência com SS não era tão boa no passado, tinha muitos problemas e problemas de desaparecimento + perda de dados e um péssimo sistema de alerta de MS (SS não me lembro completamente) - mas a maioria dos problemas de HDD foram causados por minha PSU resolvido agora - então eu decidi dar uma tentativa SS como eu posso ter todas as minhas unidades em um controlador + se livrar do controlador HW. O LSI Onboard (XEON D Board) funciona bem, incluindo o HDD Standby.

Eu li este post Virtual espelhado disco no pool de armazenamento não pode expandir após adicionar a unidade no Windows Server 2012 R2

que citarei algumas descobertas muito interessantes:

Hence, to extend a Storage Pool of 4 Columns - you don't need to add 4 disks - you only need to make sure, that you have 4 disks with remaining diskspace left in the pool!

So, if 1 is full, but 3 have remaining space, the pool will become operational again after adding One Disk!

Por enquanto eu fiz um pool de teste e disco por este: - > criou um Pool com SSD 3x2 TB + 2x256GB (na 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

funciona absolutamente bem no Powershell, mas não me fornece a configuração correta na GUI. Quando eu faço um

    -> Get-VirtualDisk | Format-List

Eu obtenho

    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

Descobertas 1: Eu imagino muitos dados faltando aqui.

Descobertas 2: funciona suavemente a 150MB / s + copiando MP3s para essa nova unidade. Isso é muito bom para um desempenho de gravação de Paridade de Espaços de Armazenamento graças ao WBC de 1 Gb.

Meu objetivo é ter um pool extensível com unidades de pelo menos 6x4 TB + SSDs de 2x256 GB no começo e fazer uso do Write Back Cache no SSD, o que funciona bem no meu exemplo acima. Eu posso fixar a paridade para os HDDs e o Mirror para o SSD (para o meu VMS não acordar meus HDDs o tempo todo)

Posso definir o No da coluna de paridade como, por exemplo, 3 ao usar 6 discos? Posso adicionar 3 discos de 4 TB para estender minha piscina facilmente? Como 6x4TB - > 9x4TB = 8x4TB utilizável em paridade ...?

Digamos que eu coloque 6x 4 TB e 5x2 TB em um pool junto com 2 SSDs ... qual seria o Max Volume de Paridade e posso estendê-lo substituindo os 2 TB drives depois? A postagem citada significava:

I can't downvote by now, but I want to outline, that the basic information given in bviktors post is wrong - he is still thinking in Raid by saying you can't extend with half a diskgroup:

If you have a Storage Pool with 4 Columns - you can use any number of disks, starting with 4. Storage Spaces will always utilize all the Disks you have! The Column count just defines on how much Disks data is written at the same time (This is called striping) The next Stripe (by default 256 KB in Size, called Interleave) however can (and will) be written to 4 different Disks!

Hence, to extend a Storage Pool of 4 Columns - you don't need to add 4 disks - you only need to make sure, that you have 4 disks with remaining diskspace left in the pool!

So, if 1 is full, but 3 have remaining space, the pool will become operational again after adding One Disk!

(This allows to mix capacity as desired - there's no need to keep the raid-constraint of equal disk-sizes)

As a Best-Practice, you should always add more disks, than #NumberOfDataCopies * #NumberofColumns would be:

Consider a 2 Column 2 Copy Disk - It requires a minimum of 4 disks. If you loose one Disk, you could still access your data - but you cannot write anything anymore, cause you don't have 4 columns left where data could be stored!

Consider you would have added 5 Disks to that pool (which will be used based on Size by the Storage Spaces Subsystem, filled up in the best possible way to make all disks hit 100% at the same time) - loosing one Disk still retains your data - and keeps your Pool working for new writes, because you still have the minimum of 4 Columns left.

Also, this allows you to rebuild the pool immediately if one disk fails, without having to purchase a new disk first!

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

The data will now be "moved" to the remaining disks, if enough space is left. After the rebuild:

$disk = Get-PhysicalDisk -FriendlyName "BrokenDisk" Remove-PhysicalDisk -StoragePoolFriendlyName "My Pool" -PhysicalDisks $disk

(You can use the same commands to retire "functional" disks and move data to other disks - this will allow some sort of redistributing the data, once you add a disk - but at the end you will always have one disk "empty". However in your case it would not work, due to the small number of disks. In 10 disk pool for instance, you could free up a 2 TB Disk, by distributing as little as 200 MB to every other disk. Re-Running the operation will now write prefered to the empty disk. Storage Spaces basically always says: "I have to write: 8 Blocks (NumberOfColumns * NumberOfDataCopies) with a size of 64 KB (Interleave / Number of Columns) each - give me 8 distinct disks out of the 10 disks with the least percentual usage, so I can throw the data there!")

Seria bom poder deslocar todos os dados de uma unidade de 2 TB para os outros dispositivos da Pool (enquanto o espaço é livre) e depois adicionar uma nova unidade ao Pool. Gostaria de saber se os Espaços de Armazenamento podem fazer uma migração interna, mas o grande problema parece ser que as colunas são fixas. O que os espaços de armazenamento farão se eu mudar de 6x4 Tb para 12x4TB? (toda a paridade). O que as colunas? Em padrão, deve ser 6 (usando 6x4TB), - as diretrizes da MS me dizem que eu preciso de mais 6 unidades para estender (o que é uma porcaria).

O desempenho não é tão crítico quanto im limitado por 1 Gbit Lan (mesmo um 3x2 Tb Parity com 1 GB WBC executa rápido o suficiente). Então, as colunas podem ser o menor possível.

Estou disposto a extrair a capacidade máxima desse conjunto com redundância simples (paridade). Eu tenho um backup adicional na minha unidade de 8 TB, que é executado a cada três dias para que meus dados importantes sejam salvos mesmo assim.

Obrigado por fornecer respostas e ideias.

    
por Krautmaster 14.03.2017 / 10:47

0 respostas