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.
Neste artigo
- 1. Quando o Storage Spaces faz sentido — e quando não
- 2. Os três layouts: simple, mirror e parity
- 3. O que acontece quando um disco falha, por layout
- 4. Preparar o servidor e verificar os discos
- 5. Criar o pool com PowerShell
- 6. Criar o disco virtual
- 7. Criar o volume e formatar
- 8. Substituir um disco com falha
- 9. Monitorizar a saúde do armazenamento
- 10. E o Storage Spaces Direct?
- Erros Comuns
- Checklist final
- Fontes Oficiais
- Artigos Relacionados
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
HealthStatuscai paraWarninge o estado operacional passa aDegraded: 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-StoragePooldevolve o pool criado com OK e HealthyGet-VirtualDiskmostra o espaço em Mirror + Thin (ou Fixed) com Healthy- Volume com letra atribuída e
Get-Volumeem Healthy IsManualAttachem False — o espaço regressa sozinho a cada arranque- Rotina semanal de
Get-StorageSubSystemeGet-VirtualDiskgravada em ficheiro de registo - Plano de reposição conhecido: hot swap,
Remove-PhysicalDisk,Add-PhysicalDiskeGet-StorageJoba acompanhar - Cópias de segurança com destino fora do servidor — o mirror protege de falha de disco, não de apagamentos
Fontes Oficiais
- Storage Spaces overview — os três layouts, os overheads de cada um e as diferenças para o S2D.
- Deploy Storage Spaces on a stand-alone server — os pré-requisitos de disco, a tabela de resiliência e os comandos equivalentes ao Server Manager.
- Storage Spaces Direct overview — o que é o S2D, os 2–16 servidores e a cache automática de cluster.
- Deploy Storage Spaces Direct on Windows Server — o percurso completo do S2D, com a exigência da edição Datacenter.
- Plan volumes on Azure Local and Windows Server clusters — eficiências de cada tipo de resiliência e a recomendação de ReFS em cluster.
- List the functionalities, benefits and use cases of Storage Spaces — as limitações oficiais, incluindo os volumes de boot e sistema e os tamanhos de sector.
- Resilient File System (ReFS) overview — a integridade por checksums, a reparação com as cópias do Storage Spaces e o varrimento do scrubber.
- New-StoragePool — a sintaxe do pool e o pipeline completo de criação até volume formatado.
- New-VirtualDisk — os parâmetros de resiliência, provisioning e tamanho do disco virtual.
- Set-VirtualDisk — o atributo IsManualAttach e o exemplo oficial de auto-attach.
- Get-StorageSubSystem — o estado agregado do subsistema Storage Spaces com o exemplo de saída.
- Add-PhysicalDisk — a entrada de discos no pool e o valor HotSpare.
- Remove-PhysicalDisk — a saída controlada do disco morto do pool.
- Get-StorageJob — as tarefas de reparação em curso e a sua percentagem.
- Repair-VirtualDisk — a reparação manual dos espaços unhealthy.