O servidor de ficheiros da agência vive em cima de quatro HDD SATA baratos de 4 TB, sem controladora RAID no orçamento. A pergunta que se repõe a cada factura — e cada notícia de um disco a falhar — é a mesma: o que acontece quando um deles desiste? A resposta já vive no Windows Server: o Storage Spaces agrega discos comuns num pool de armazenamento e gera discos virtuais com tolerância a falhas a partir dele — Mirror, Parity ou Simple — sem hardware extra e sem licença adicional.

Este guia segue o percurso num servidor único: decidir quando o Storage Spaces compete com o RAID hardware e onde entra o ReFS, escolher o layout, criar o pool e o disco virtual com New-StoragePool e New-VirtualDisk, formatar o volume com New-Partition, decidir entre thin e fixed, substituir um disco avariado e vigiar a saúde do sistema. No fim, uma palavra sobre o Storage Spaces Direct — e por que razão ele não é o caminho da maioria dos escritórios.

💡 Em Resumo

O Storage Spaces junta discos baratos num pool e cria discos virtuais com tolerância a falhas: New-StoragePool agrega os discos em branco, New-VirtualDisk gera o espaço — Mirror para dados em produção, Parity para cópias de segurança e guarda a longo prazo, Simple só para dados recriáveis — e o pipeline Initialize-Disk + New-Partition + Format-Volume entrega a letra de disco. Fixed reserva capacidade na criação, Thin deixa crescer ao ritmo dos ficheiros com monitorização constante. O disco do sistema nunca entra no pool.

1. Quando o Storage Spaces faz sentido — e quando não

Um pool do Storage Spaces compete com uma controladora RAID num cenário preciso: servidor único, dados de partilha, hardware comum. A tabela põe as duas opções lado a lado:

Critério Storage Spaces RAID hardware
Hardware Discos SATA ou SAS comuns — os HDD que já estavam na lista de compras Controladora dedicada com o seu preço, firmware e discos da mesma série
Custo adicional Nenhum — a funcionalidade vive no sistema A placa RAID entra no orçamento junto com o know-how do fabricante
Expansão Novos discos entram no pool e a capacidade cresce Limitada pelas portas e baias da controladora
Arranque do sistema Nunca — os volumes do Storage Spaces não servem de boot nem de sistema Possível em controladoras com espelho de arranque suportado
Gestão PowerShell ou Server Manager, sem ferramenta de fabricante Utilitários do próprio fabricante
Reposição após falha O sysadmin troca o disco e o espaço reconstrói sobre ele O firmware reconstrói sozinho e assinala com LED

O controlador dedicado mantém terreno onde o pool não chega: arranque espelhado do sistema, escritas aleatórias e intensas ao longo do dia inteiro, aplicações que exigem armazenamento em bloco externo. Num servidor de ficheiros com orçamento curto, o Storage Spaces devolve a tolerância a falhas com os discos que já estavam a caminho.

As duas tecnologias não se empilham: os discos que a controladora RAID entrega ao Windows são já discos únicos e abstratos, e o Storage Spaces quer discos físicos inteiros — camadas de abstracção sobre RAID não são compatíveis.

O ReFS (Resilient File System) não compete com o Storage Spaces — vive lá dentro: é o sistema de ficheiros do volume criado sobre o espaço. Num volume NTFS, uma corrupção detectada pede intervenção humana — chkdsk, cópia de segurança, paciência. Num espaço em Mirror ou Parity formatado em ReFS, as cópias alternativas dos dados servem para reparar a corrupção a quente, sem tirar o volume do ar, e o próprio ReFS varre o volume periodicamente à procura de corrupção latente. Para partilhas gerais, o NTFS continua por omissão e é o formato mais compatível — o ReFS entra quando a integridade dos dados vale mais do que qualquer funcionalidade em falta.

Há um travão no ReFS: ele não cobre tudo o que o NTFS tem. Se a carga de trabalho precisa de uma funcionalidade que ainda falta, o NTFS fica.

2. Os três layouts: simple, mirror e parity

O parâmetro -ResiliencySettingName do New-VirtualDisk aceita três valores neste subsistema. Por omissão, um Mirror cria espelho de dois, e um Parity cria paridade simples:

Layout Discos mínimos Tolerância Eficiência Usar para
Simple 1 Nenhuma — uma falha de disco resulta em perda de dados ~100% dos discos Dados temporários, scratch, tudo o que se recria
Mirror (two-way) 2 1 disco 50% — 1 TB útil gasta 2 TB físicos Partilhas em produção, VMs, dados do quotidiano
Mirror (three-way) 5 2 falhas simultâneas ~33% — 1 TB útil gasta perto de 3 TB Quando tens de tolerar duas falhas e os discos abundam
Parity 3 1 disco A mais eficiente em capacidade — menos sobrecarga que o espelho Cópias de segurança, guarda a longo prazo, leitura sequencial

Com os quatro discos de 4 TB deste guia — 16 TB decimais, perto de 14,55 TiB — as contas em TiB ficam assim: o espelho de dois entrega perto de 7,28 TiB úteis (a metade), a paridade de três discos rende na ordem dos 9-10 TiB — o exacto depende das colunas e confirma-se em laboratório — e nenhum aguenta duas falhas. Para as partilhas de quotidiano, o espelho é o layout por omissão: leituras e escritas chegam sem a penalização de paridade. O parity rende no repositório de cópias de segurança e na guarda a longo prazo, onde as escritas são grandes e sequenciais e cada terabyte extra conta.

O espelho com três cópias — -NumberOfDataCopies 3 — aguenta duas falhas simultâneas, mas pede cinco discos para cima.

3. O que acontece quando um disco falha, por layout

A consequência de uma falha depende do layout — e é aqui que a decisão da secção anterior se paga:

  • Simple — o disco desiste e os dados do espaço vão-se com ele. Striping sem redundância não tem cópia nenhuma para recuperar e o volume fica inútil.
  • Mirror — o espaço continua online. O HealthStatus cai para Warning e o estado operacional passa a Degraded: uma cópia ficou para trás. Lê-se e escreve-se, mas a protecção ficou a meio — uma segunda falha antes da reposição leva consigo dados.
  • Parity — o mesmo efeito: espaço online, estado degradado, leitura funcional e escritas penalizadas até à recomputação da paridade. O risco é idêntico: a segunda falha antes da reposição é irreversível.

Nos dois casos resilientes, a reposição reconstrói o que faltou num disco novo — o processo corre sozinho assim que o disco entra no pool e acompanha-se com Get-StorageJob. A receita completa está na secção 8.

⚠ Atenção: o mirror e o parity protegem contra falha de disco, não contra apagamentos, ransomware ou um incêndio no armário. A cópia de segurança continua a precisar de destino fora do servidor — outro equipamento, outro sítio, o que o orçamento permitir.

4. Preparar o servidor e verificar os discos

Antes de qualquer comando os discos têm de cumprir requisitos: estar em branco, sem partições e sem volumes, com pelo menos 4 GB cada, ligados por SAS ou SATA. Controladoras iSCSI ou Fibre Channel só aguentam espaços Simple, sem resiliência. O USB entra para provas de conceito mas não para dados de produção. As caixas JBOD (Just a Bunch of Disks) são opcionais — e todos os discos do mesmo pool têm de partilhar o mesmo tamanho de sector: misturar discos 512e com discos 4Kn (sectores de 4 KB nativos) não funciona.

Num servidor recém-instalado, o primeiro passo é confirmar o que o subsistema quer aceitar no pool:

Get-PhysicalDisk -CanPool $True | Select-Object FriendlyName, MediaType, BusType, HealthStatus
FriendlyName     MediaType BusType HealthStatus
------------     --------- ------- ------------
PhysicalDisk1    HDD       SATA    Healthy
PhysicalDisk2    HDD       SATA    Healthy
PhysicalDisk3    HDD       SATA    Healthy
PhysicalDisk4    HDD       SATA    Healthy

Os quatro discos aparecem com $True em CanPool — elegíveis para a criação. O disco do sistema não aparece na lista: tem volumes, está em uso e não pode entrar.

⚠ Atenção: os volumes do Storage Spaces não servem como boot nem como sistema. O servidor tem de arrancar de um disco próprio, fora do pool — a tolerância a falhas do Storage Spaces é para dados, nunca para o disco onde o Windows vive. Quando a tolerância no arranque é requisito, essa é a parte do RAID hardware.

Quem prefere fixar nomes em vez de confiar no filtro CanPool lista os discos à unidade — (Get-PhysicalDisk PhysicalDisk1, PhysicalDisk2, PhysicalDisk3, PhysicalDisk4) — o caminho certo quando há pen USB ou discos externos ligados e alguém quer garantir que ficam de fora.

5. Criar o pool com PowerShell

À partida, os discos elegíveis moram no primordial pool — o depósito de discos disponíveis que o subsistema Windows Storage* expõe. O New-StoragePool tira os discos de lá e cria o pool:

New-StoragePool -FriendlyName PoolDados -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk PhysicalDisk1, PhysicalDisk2, PhysicalDisk3, PhysicalDisk4)
Get-StoragePool -FriendlyName PoolDados | Select-Object FriendlyName, OperationalStatus, HealthStatus
FriendlyName OperationalStatus HealthStatus
------------ ----------------- ------------
PoolDados    OK                Healthy

O Get-StoragePool confirma o resultado esperado: o pool nasce com OperationalStatus em OK e HealthStatus em Healthy com os quatro discos a somar os 16 TB brutos (4 × 4 TB). O CanPool $True do preview é para conferir, não para criar: no comando apanha o que quer que esteja ligado e elegível — incluindo a pen que ficava no porto — e por isso a lista explícita dos quatro nomes é que vai no New-StoragePool.

Num servidor único, um único pool chega. Quem separa em criação múltipla faz isso por administração delegada — outro grupo responsável por outra fatia dos discos — e não por desempenho: o Storage Spaces trabalha por slabs, aceita tamanhos mistos no mesmo pool e perde eficiência conforme as colunas se distribuem por discos desiguais.

6. Criar o disco virtual

O disco virtual — o espaço — nasce do pool com o layout escolhido. Para as partilhas de produção deste guia: espelho de dois, 8 TB declarados, thin:

New-VirtualDisk -StoragePoolFriendlyName PoolDados -FriendlyName DadosEspelhados -ResiliencySettingName Mirror -ProvisioningType Thin -Size 8TB
Get-VirtualDisk -FriendlyName DadosEspelhados | Select-Object FriendlyName, ResiliencySettingName, ProvisioningType, HealthStatus, Size
FriendlyName      ResiliencySettingName ProvisioningType HealthStatus Size
------------      --------------------- ---------------- ------------ ----
DadosEspelhados   Mirror                Thin             Healthy      8796093022208

O resultado esperado: Mirror em ResiliencySettingName, Thin em ProvisioningType, o espaço em Healthy e o Size em bytes — 8796093022208 são os 8 TiB declarados — o PowerShell lista bytes, o Windows conta em binário. A partir daqui o Windows trata o espaço como qualquer outro disco.

Thin ou fixed: quando o espaço gasta o pool físico

O parâmetro -ProvisioningType decide isso:

Thin Fixed
Capacidade reportada Total logo à criação — o Windows vê os 8 TB Total, e reservada fisicamente no pool
Consumo dos discos Sobe ao ritmo dos ficheiros escritos Alocado no momento da criação
Escolher quando O pool tem de crescer mais depressa do que os dados — e a monitorização assume-se Capacidade garantida no primeiro dia, sem surpresas

Nos 16 TB brutos deste pool, um Fixed com -UseMaximumSize reserva o pool inteiro: cerca de 7,28 TiB úteis em espelho, e os discos rendem exactamente isso. O Thin do guia declara 8 TB e reserva só o que os ficheiros reais consomem:

ℹ Nota: o thin pode declarar mais do que o pool aguenta fisicamente — é assim que funciona. Quando os ficheiros reais se aproximarem dos 7,28 TiB úteis, o pool fica sem margem e as escritas falham sem disco novo a entrar. A monitorização da secção 9 não é opcional num espaço thin.

A variante fixed equivalente troca uma coisa no comando de criação:

New-VirtualDisk -StoragePoolFriendlyName PoolDados -FriendlyName DadosEspelhados -ResiliencySettingName Mirror -ProvisioningType Fixed -UseMaximumSize

Chegado o dia de crescer — mais um disco em branco entra no pool com o Add-PhysicalDisk e um espaço thin aproveita a capacidade nova assim que os ficheiros a pedem. O pool é elástico por design — a expansão não tira o espaço do ar.

7. Criar o volume e formatar

O espaço existe como objecto, mas o Windows ainda não vê um disco formatado. O último elo da cadeia: inicializar o disco virtual, criar a partição e formatar:

Get-VirtualDisk -FriendlyName DadosEspelhados | Get-Disk | Initialize-Disk -Passthru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume
Get-Volume -DriveLetter D | Select-Object DriveLetter, FileSystem, HealthStatus
DriveLetter FileSystem HealthStatus
----------- ---------- ------------
D           NTFS       Healthy

O Initialize-Disk prepara a tabela do disco, o New-Partition -AssignDriveLetter -UseMaximumSize gasta o disco inteiro e troca-lhe a letra — D no resultado — e o Format-Volume formata em NTFS, o sistema de ficheiros por omissão. O Get-Volume devolve o esperado: D em NTFS com Healthy.

Para o ReFS, o formato troca no fim do mesmo pipeline — | Format-Volume -FileSystem ReFS. Sobre um espaço em espelho, o ReFS usa as cópias alternativas para reparar corrupção a quente e varre o volume periodicamente à procura de corrupção latente. O NTFS fica quando a aplicação pede algo que o ReFS ainda não tem.

8. Substituir um disco com falha

O disco doente tem de sair e um novo tem de entrar — por ordem, e sem pressa. Primeiro, confirmar o doente:

Get-PhysicalDisk | Select-Object FriendlyName, HealthStatus
FriendlyName     HealthStatus
------------     ------------
PhysicalDisk1    Healthy
PhysicalDisk2    Healthy
PhysicalDisk3    Unhealthy
PhysicalDisk4    Healthy

O espaço confirma o aviso:

Get-VirtualDisk | Select-Object FriendlyName, HealthStatus, OperationalStatus
FriendlyName      HealthStatus OperationalStatus
------------      ------------ -----------------
DadosEspelhados   Warning      Degraded

Depois, a sequência completa:

  • Trocar o disco fisicamente — hot swap, com o modelo ou capacidade equivalente e o mesmo tamanho de sector.
  • Retirar o objecto morto do pool — a documentação do Remove-PhysicalDisk nota: quando a configuração permita, a ordem preferida é a inversa — o disco novo entra primeiro e o doente sai depois, sem o pool passar mais tempo que o necessário com uma falha em aberto. A sequência abaixo parte do disco já trocado e do objecto doente ainda listado:
$pd = Get-PhysicalDisk -FriendlyName PhysicalDisk3
Remove-PhysicalDisk -PhysicalDisks $pd -StoragePoolFriendlyName PoolDados

O cmdlet pede confirmação antes de retirar o objecto do pool. Em alternativa — ou se o doente já tiver saído — abrir a porta ao disco novo, trocado e em branco:

$pool = Get-StoragePool -FriendlyName PoolDados
Get-PhysicalDisk -CanPool $True | Add-PhysicalDisk -StoragePool $pool

Assim que o disco novo entra no pool, a regeneração arranca tipicamente sozinha, mas acompanha-a: o espaço reconstrói a cópia em falta a partir do que restou, e o O Get-StorageJob mostra a tarefa e a sua percentagem:

Get-StorageJob | Select-Object Name, JobState, PercentComplete
Name          JobState PercentComplete
------------  -------- ---------------
Regeneration  Running  45

No fim, o mesmo filtro do início devolve os quatro discos em Healthy — e o espaço regressa a Healthy sem intervenção extra.

Se o espaço não retomar o estado bom — raro, mas acontece — a reparação despoleta à mão. Um filtro por HealthStatus -eq "Unhealthy" não apanha o estado Warning/Degraded do espaço degradado — vai directo ao nome:

Repair-VirtualDisk -FriendlyName DadosEspelhados
Get-VirtualDisk | Select-Object FriendlyName, HealthStatus

A variante preventiva é deixar uma reserva dentro do próprio pool: o Add-PhysicalDisk aceita -Usage HotSpare e o disco fica à espera de trabalho dentro do pool. A diferença para o S2D é decisiva: no cluster a substituição de disco é automática — aqui, a troca é feita por quem administra.

9. Monitorizar a saúde do armazenamento

A monitorização cabe em dois comandos. O subsistema dá o estado agregado de tudo o que o Storage Spaces gere no servidor:

Get-StorageSubSystem -Model "Storage Spaces" | Select-Object FriendlyName, HealthStatus, OperationalStatus
FriendlyName              HealthStatus OperationalStatus
------------              ------------ -----------------
Storage Spaces on FILE01  Healthy      OK

O resultado esperado leva o nome do servidor no FriendlyName — Storage Spaces on FILE01 — o nome do subsistema tem a forma Windows Storage on <hostname> nas versões actuais e o Windows Storage* do comando é a máscara que cobre ambas — o FILE01 é exemplo, troca pelo teu hostname — com o subsistema em Healthy. Por baixo, os objectos dão o detalhe: Get-VirtualDisk e Get-PhysicalDisk para o estado de cada um.

A rotina que funciona num escritório: uma tarefa agendada semanal que corre os dois comandos e grava a saída num ficheiro de registo, mais uma consulta a olho depois de cada troca de disco e antes de períodos longe do servidor. Um Warning num Get-VirtualDisk significa que a maioria dos discos está boa mas um ou mais já falham pedidos I/O — é o momento de agendar a reposição, não de esperar pela próxima falha.

O espaço não monta depois do arranque (IsManualAttach)

Um caso que quase nunca cai em cima do pool recém-criado — o IsManualAttach nasce False — mas caça a quase todos mais tarde: depois de trocar um disco, importar o pool de outra máquina ou reinstalar o sistema operativo, o disco do espaço aparece Offline no Get-Disk e o volume perde a letra. A propriedade em causa é a IsManualAttach do espaço: quando está em True, o espaço só se anexa por comando manual — um estado típico de pools que chegaram de outra máquina:

Get-VirtualDisk | Select-Object FriendlyName, IsManualAttach
FriendlyName      IsManualAttach
------------      --------------
DadosEspelhados   True
Set-VirtualDisk -FriendlyName DadosEspelhados -IsManualAttach $False

O Set-VirtualDisk define o atributo manual-attach e o auto-attach regressa no arranque seguinte — sem comando a mais, sem disco offline a conferir de manhã.

10. E o Storage Spaces Direct?

O Storage Spaces Direct (S2D) não é uma versão melhorada do servidor de ficheiros deste guia — é outra arquitectura. Agrega os discos internos de 2 a 16 servidores num cluster, reparte cópias e paridades entre máquinas, usa automaticamente os discos mais rápidos como cache e escala com discos ou servidores adicionais. Para chegar lá é preciso mais do que orçamento de discos: edição Datacenter do Windows Server, um cluster de failover com hardware validado de armazenamento e rede rápida com RDMA. E há um matiz que decide a conversa num escritório: o S2D é desenhado para o Scale-Out File Server, com volumes expostos como partilhas SMB3 do cluster — não dá um servidor de ficheiros de uso general num só nó. Para ficheiros partilhados num servidor único com discos baratos, o clássico deste guia é a resposta certa — Para ficheiros partilhados num servidor único com discos baratos, o clássico deste guia é a resposta certa — o S2D entra quando o plano já passa por um cluster de virtualização.

Erros Comuns

  • Meter o disco do sistema no pool — os requisitos excluem-no (os discos têm de estar em branco e sem volumes) e os volumes do Storage Spaces nem sequer servem de boot. O sistema vive num disco próprio, fora do pool.
  • Misturar tamanhos de sector no mesmo pool — 512e ao lado de 4Kn não funciona: todos os discos de um pool partilham o mesmo tamanho de sector.
  • Parity como layout do quotidiano — as escritas aleatórias pequenas pagam a penalização de paridade. Produção no espelho, cópias de segurança e guarda a longo prazo no parity.
  • Thin sem vigilância — o espaço declara mais do que o pool aguenta fisicamente e as escritas falham quando o físico esgota. Quem corre thin consulta o estado do pool com regularidade.
  • Arrastar a reposição de um disco unhealthy em espelho — o espaço fica degradado e a segunda falha leva consigo os dados.
  • Empilhar camadas — um pool por cima de discos entregues por controladora RAID, ou por cima de discos em pass-through para VM, topa com abstracções que o Storage Spaces não suporta.

Checklist final

  • Discos em branco e sem partições, com pelo menos 4 GB, no mesmo tamanho de sector
  • Disco do sistema fora do pool — o arranque nunca vive num volume Storage Spaces
  • Get-StoragePool devolve o pool criado com OK e Healthy
  • Get-VirtualDisk mostra o espaço em Mirror + Thin (ou Fixed) com Healthy
  • Volume com letra atribuída e Get-Volume em Healthy
  • IsManualAttach em False — o espaço regressa sozinho a cada arranque
  • Rotina semanal de Get-StorageSubSystem e Get-VirtualDisk gravada em ficheiro de registo
  • Plano de reposição conhecido: hot swap, Remove-PhysicalDisk, Add-PhysicalDisk e Get-StorageJob a acompanhar
  • Cópias de segurança com destino fora do servidor — o mirror protege de falha de disco, não de apagamentos

Fontes Oficiais

Artigos Relacionados