O disco virtual espelhado no pool de armazenamento não pode se expandir após adicionar a unidade no Windows Server 2012 R2

4

Recentemente, convertei alguns arrays RAID1 espelhados em um grande pool de armazenamento. Eu tenho dois discos de 2 TB e dois discos de 3 TB, totalmente 10 TB, que quando espelhados deve me dar 5 TB de espaço utilizável.

Iniciei o pool de armazenamento com os dois discos de 2 TB e um dos dois discos de 3 TB, usando o disco final de 3 TB como backup dos dados antigos para passar para o novo armazenamento em pool. Configurei o disco virtual como "espelhado" no topo do novo pool e tinha um pouco menos de 3 TB de espaço utilizável.

Depois de mover o backup da unidade extra de 3 TB para o novo pool, limpei-o e adicionei-o ao pool. No entanto, agora não consigo estender o disco virtual espelhado para aproveitar o espaço adicionado.

Infelizmente, não posso postar imagens devido à minha reputação inicial, mas meu pool é exibido com capacidade de 9.09 TB e 2.64 TB de espaço livre. Ao tentar estender o disco virtual, o tamanho máximo permitido é de 3,22 TB, apenas um pouco mais de cabelo antes de adicionar a unidade de 3 TB. Os discos físicos mostram que quase nenhum disco novo está sendo usado, enquanto o restante está cheio.

Eu li em outro lugar que o número de colunas pode restringir como você pode estender discos virtuais, mas meu número de colunas é definido como 1, o que deve permitir a extensão para qualquer número de discos.

Aqui está a saída do powershell do meu disco virtual:

ObjectId                          : {1}\SERVER\root/Microsoft/Windows/Storage/Providers_v2\SPACES_VirtualDisk.ObjectId
                                    ="{fdf741fe-cae8-11e4-80b4-806e6f6e6963}:VD:{d734cabd-cabf-11e4-80bf-000c41ebb9a3}{
                                    d734cad6-cabf-11e4-80bf-000c41ebb9a3}"
PassThroughClass                  :
PassThroughIds                    :
PassThroughNamespace              :
PassThroughServer                 :
UniqueId                          : D6CA34D7BFCAE41180BF000C41EBB9A3
Access                            : Read/Write
AllocatedSize                     : 3545495502848
DetachedReason                    : None
FootprintOnPool                   : 7090991005696
FriendlyName                      : McAfee Primary
HealthStatus                      : Healthy
Interleave                        : 262144
IsDeduplicationEnabled            : False
IsEnclosureAware                  : False
IsManualAttach                    : False
IsSnapshot                        : False
LogicalSectorSize                 : 4096
Name                              :
NameFormat                        :
NumberOfAvailableCopies           :
NumberOfColumns                   : 1
NumberOfDataCopies                : 2
OperationalStatus                 : OK
OtherOperationalStatusDescription :
OtherUsageDescription             :
ParityLayout                      : Unknown
PhysicalDiskRedundancy            : 1
PhysicalSectorSize                : 4096
ProvisioningType                  : Fixed
RequestNoSinglePointOfFailure     : False
ResiliencySettingName             : Mirror
Size                              : 3545495502848
UniqueIdFormat                    : Vendor Specific
UniqueIdFormatDescription         :
Usage                             : Other
WriteCacheSize                    : 0
PSComputerName                    :

E aqui está a saída do PowerShell para o pool:

PS H:\> Get-StoragePool -FriendlyName "McAfee Primary Pool"

FriendlyName            OperationalStatus       HealthStatus            IsPrimordial            IsReadOnly
------------            -----------------       ------------            ------------            ----------
McAfee Primary Pool     OK                      Healthy                 False                   False


PS H:\> Get-StoragePool -FriendlyName "McAfee Primary Pool" | FL


ObjectId                          : {1}\SERVER\root/Microsoft/Windows/Storage/Providers_v2\SPACES_StoragePool.ObjectId
                                    ="{fdf741fe-cae8-11e4-80b4-806e6f6e6963}:SP:{d734cabd-cabf-11e4-80bf-000c41ebb9a3}"
PassThroughClass                  :
PassThroughIds                    :
PassThroughNamespace              :
PassThroughServer                 :
UniqueId                          : {d734cabd-cabf-11e4-80bf-000c41ebb9a3}
AllocatedSize                     : 7092601618432
ClearOnDeallocate                 : False
EnclosureAwareDefault             : False
FriendlyName                      : McAfee Primary Pool
HealthStatus                      : Healthy
IsClustered                       : False
IsPowerProtected                  : False
IsPrimordial                      : False
IsReadOnly                        : False
LogicalSectorSize                 : 4096
Name                              :
OperationalStatus                 : OK
OtherOperationalStatusDescription :
OtherUsageDescription             :
PhysicalSectorSize                : 4096
ProvisioningTypeDefault           : Fixed
ReadOnlyReason                    : None
RepairPolicy                      : Parallel
ResiliencySettingNameDefault      : Mirror
RetireMissingPhysicalDisks        : Auto
Size                              : 9998683865088
SupportedProvisioningTypes        : {Thin, Fixed}
SupportsDeduplication             : False
ThinProvisioningAlertThresholds   : {70}
Usage                             : Other
Version                           : Windows Server 2012 R2
WriteCacheSizeDefault             : Auto
WriteCacheSizeMax                 : 107374182400
WriteCacheSizeMin                 : 0
PSComputerName                    :
FileSystem                        : Unknown

Alguma idéia de como posso recuperar meu espaço?

    
por Hayden McAfee 17.03.2015 / 21:12

2 respostas

3

Eu encontrei o mesmo problema. O comentário de Neograph é irrelevante neste caso, ele está falando sobre o espelhamento de disco tradicional do Windows Server, não sobre espaços de armazenamento. O provisionamento thin também é bastante irrelevante neste caso. Você pode usá-lo como uma solução alternativa, mas acho que um planejamento mais cauteloso será melhor tanto no orçamento quanto no desempenho, basta ler e você verá.

Depois de algum tempo gasto lendo e brincando no Server Manager, acho que descobri o que está acontecendo. A coisa é, SS tem essa coisa chamada "colunas". Isso define quantos dados de discos são distribuídos. Se o seu disco virtual foi criado com 4 colunas, os dados são distribuídos apenas em 4 discos com layout Simple (ou seja, RAID0) ou 8 discos com Espelho bidirecional (isto é, RAID10) , nem todos eles. Agora isso pode ser confuso para alguém que vem do HW RAID tradicional (como eu), mas é assim.

Observação: a partir de agora, vou me referir ao número de colunas como tamanho da coluna porque é muito mais intuitivo para mim dessa maneira.

Assim, o tamanho da coluna também define como você pode estender um disco virtual. Obviamente, se o seu VD atual tiver grupos de 4 discos (= o tamanho da coluna é 4), você não poderá adicionar um grupo "meio" adicionando dois novos discos. Portanto, o número de discos necessários para expansão é basicamente

n x NumberOfColumns x NumberOfDataCopies

Portanto, se você tiver um espelho bidirecional e um tamanho de coluna de 1, só poderá adicionar pares de discos. Se o seu espelho tiver um tamanho de coluna de 3, você só poderá adicionar 6, 12, 18 ou mais discos.

Pelo que entendi, o tamanho da coluna padrão de um VD é o número de discos dividido pela contagem de cópias, mas 8 no máximo, por exemplo, se você tiver 10 discos em um espelho bidirecional, o tamanho da coluna será 5, se você tiver 16 discos, o tamanho da coluna será 8, mas se você tiver 24 discos, o tamanho da coluna ainda será 8 - por padrão. Nota: você pode verificar esses números em propriedades VD ( NumberOfColumns e NumberOfDataCopies propriedades undes Detalhes ).

E aqui vem muita dor de cabeça:

  • o tamanho da coluna padrão exige que você dobre a contagem de discos se quiser expandir o VD (na maioria dos casos)
  • você só pode selecionar o tamanho da coluna se o uso do disco estiver definido como Manual durante a criação do pool
  • o uso do disco padrão é Automático (claro)
  • você não pode alterar o tamanho da coluna depois que os VDs forem criados
  • você não pode alterar o uso do disco para Manual depois que o pool é criado

Para que isso seja configurado corretamente, você precisa excluir:

  • o volume
  • o disco virtual
  • o pool de armazenamento

i.e. tudo. Como um sidenote, o tamanho da faixa (chamado Interleave size no SS) também não estará disponível se o uso do disco estiver definido como automático.

Agora você pode se perguntar por que alguém usaria algo maior que 1 para o tamanho da coluna. A resposta é claro, desempenho. Quanto maior o tamanho da coluna, melhor será o desempenho obtido. Na verdade, pode ser bastante dramático, aqui está um benchmark com tamanho de coluna 1 e 6:

Vocêprecisaplanejarcomsabedoria.Useapenasumtamanhodecolunaaltosetivercertezadequepoderácomprarumgrandenúmerodediscosdepoisqueoespaçoemdiscoacabar.

Algumasboasleiturassobreoassunto:

por 09.09.2015 / 20:36
-1

Eu não posso recusar até agora, mas eu quero resumir, que a informação básica dada em bviktors post está errada - ele ainda está pensando em Raid dizendo que você não pode estender com metade de um diskgroup :

  • Se você tiver um pool de armazenamento com 4 colunas, poderá usar qualquer número de discos, começando com 4.
  • Espaços de armazenamento sempre utilizam todos os discos que você tem!
  • A contagem de colunas apenas define quanto os dados dos discos são gravados ao mesmo tempo (isso é chamado de distribuição )
  • A próxima Stripe (por padrão, 256 KB de tamanho, chamada Interleave ), no entanto, pode (e será) gravada em 4 discos diferentes!

Portanto, para estender um pool de armazenamento de quatro colunas, não é necessário adicionar discos com apenas quatro discos. Você só precisa ter certeza de ter quatro discos com espaço restante em disco restante. na piscina !

Assim, se 1 estiver cheio, mas 3 tiverem espaço restante, o pool voltará a funcionar depois de adicionar Um disco!

(Isso permite misturar capacidade conforme desejado - não há necessidade de manter a restrição de raid de tamanhos de disco iguais)

Como Best-Practice , você deve sempre adicionar mais discos, do que #NumberOfDataCopies * #NumberofColumns seria:

Considere um disco de cópia de 2 colunas 2 - requer um mínimo de 4 discos. Se você perder um disco, você ainda pode acessar seus dados - mas você não pode mais escrever nada, porque você não tem mais 4 colunas onde os dados podem ser armazenados!

Considere que você teria adicionado 5 Discos a esse pool (que serão usados com base em Tamanho pelo Subsistema de Espaços de Armazenamento, preenchidos da melhor maneira possível para fazer todos os discos atingirem 100% ao mesmo tempo) - perdendo um disco ainda retém seus dados - e mantém seu Pool trabalhando para novas gravações, porque você ainda tem o mínimo de 4 colunas restantes.

Além disso, isso permite que você reconstrua o pool imediatamente se um disco falhar, sem ter que comprar um novo disco primeiro!

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

Os dados serão "movidos" para os discos restantes, se houver espaço suficiente. Após a reconstrução:

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

(Você pode usar os comandos same para retirar discos "funcionais" e mover dados para outros discos - isso permitirá algum tipo de redistribuir os dados, uma vez que você adicionar um disco - mas no final você sempre terá um disco "vazio". No entanto, no seu caso, não iria funcionar, devido ao pequeno número de discos. Em 10 pool de discos, por exemplo, você pode liberar um disco de 2 TB, distribuindo tão pouco quanto 200 MB para todos os outros discos.Repletando a operação irá agora escrever preferida para o disco vazio.Espaços de armazenamento basicamente sempre diz: "Eu tenho que escrever: 8 blocos (NumberOfColumns * NumberOfDataCopies) com um tamanho de 64 KB (Interleave / Number of Columns) cada - me dê 8 discos distintos dos 10 discos com o menor uso percentual, para que eu possa lançar os dados lá! ")

No seu exemplo mencionado:

I started the storage pool with the two 2TB disks and one of the two 3TB disks, using the final 3TB disk as a backup of the old data to move to the new pooled storage. I set up the virtual disk as "mirrored" on top of the new pool, and had a little under 3TB of usable space.

Você começou com 2 + 2 + 3 TB - os Espaços de Armazenamento agora colocariam cerca de 1/3 mais dados no disco de 3 TB, em Outros discos, enquanto manter o espelho obrigatório, para que eles sejam preenchidos até equaly.

("2 Datacopies, 1 Column: Eu tenho que escrever: 2 Blocks (NumberOfColumns * NumberOfDataCopies) com um tamanho de 256 KB (Interleave / Number of Columns) cada - me dê 2 discos distintos dos 3 discos com o menos uso percentual, então eu posso jogar os dados lá! ")

Physical disks show that almost none of the new disk is being used, while the rest are full.

Agora, seus discos estão "quase cheios" e você adicionou um "novo" disco:

disk | size | usage
1    | 2TB  | 1.9 TB
2    | 2TB  | 1.9 TB
3    | 3TB  | 2.8 TB
4    | 3TB  | 0 TB

Agora, lembre-se de que você tem um disco virtual espelhado: Se você pretende estender esse disco, os Espaços de armazenamento precisam de dois com pelo menos 1MB em dois discos, para estender o disco virtual por 1MB

Seu Pool agora fará o seguinte: EVERY Os dados gravados vão para o disco 4 - e cada COPY escrito vai para 1,2 ou 3, pois isso fornecerá o mais espaço em disco utilizável.

Ao estender um (fixo) isso, a seguinte equação seria avaliada:

MAX_EXTEND = Math.MIN(100+100+200 , 3000) = 400 MB

Um thin provisioned pode ser estendido além do tamanho físico disponível - ele simplesmente parará de aceitar dados, uma vez que 400 MB tenham sido escritos!

Assim, com o espaço livre em disco de 100 + 100 + 200 - Seu Disco Virtual só pode ser aumentado em 400MB, porque então o disco 1,2,3 está cheio - e o disco 4 tem 2,6 TB Espaço deixado. Não há mais armazenamento para manter um espelho duplo operacional.

Agora, você só precisa adicionar 1 disco - digamos 8 TB para poder estender seu disco virtual novamente em 2,6 TB (2,6 no disco 4 e 2,6 no "novo disco de 8 TB")

    
por 05.04.2016 / 18:40