
Eu construí um equipamento FreeNAS em um pequeno HP ProLiant MicroServer.
Em termos de armazenamento, criei um pool ZFS de 3 discos usando RAIDZ1. Comecei com 3 discos pequenos, enquanto me familiarizava com o FreeNAS, mas finalmente decidi substituir meu NAS doméstico por ele.
Então comprei novos discos de 2 TB e substituí cada disco por um maior, um de cada vez, deixando o pool resilver após cada substituição.
O pool original, criado por meio da GUI, usava referências GPTID. zpool status
mostraria algo semelhante a isto:
pool: vol2
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
vol2 ONLINE 0 0 0
gptid/96857d85-6c2f-11e3-9387-78acc0f794bd ONLINE 0 0 0
Quando substituí os discos do pool por zpool replace
, acabei usando os nomes GEOM (adaN) em vez de. Para ser sincero, achei muito mais fácil e intuitivo dessa forma.
Mas parece que referenciar os discos usando nomes GEOM apresenta o risco de suas unidades serem renomeadas na reinicialização,ZFS confusoe possivelmente corrompendo seus pools ZFS no processo.
Achei que poderia "offline" cada um dos discos e substituí-los por zpool replace
, usando seus GPTIDs, que presumo que exigirão resilvering, colocando assim meus dados em risco enquanto isso ocorre.
No entanto, não consigo encontrar nenhum GPTID para meus discos "ada". ls /dev/gptid
apenas lista meu quarto disco, atualmente não utilizado. glabel list
retorna o mesmo disco/GPTID e várias partições FreeNAS.
- Existe realmente algum sentido em substituir os nomes GEOM referenciados por GPTIDs?
- Por que não consigo ver os GPTIDs dos novos discos? Preciso fazer alguma coisa antes que os GPTIDs sejam atribuídos e
glabel list
retornem seus nomes? - Existe uma maneira mais segura de fazer isso, que não envolva resilvering?
Obrigado!
Responder1
•Faz sentido substituir os nomes GEOM referenciados por GPTIDs?
Os nomes GEOM são gerados a partir dos slots do controlador, portanto, se você trocar os conectores dos discos, os nomes GEOM também serão trocados. Os nomes GPTID são baseados em números de série do disco e são iguais em todos os lugares.
•Por que não consigo ver os GPTIDs dos novos discos? Preciso fazer alguma coisa antes que os GPTIDs sejam atribuídos e a lista glabel retorne seus nomes?
Quando o disco é usado por um ID (GEOM em zpool no seu caso), outros IDs (incluindo GPTID) são bloqueados. Então, quando você desconecta o disco do zpool ou simplesmente o coloca off-line - aparecerá o gptid ausente em /dev/gptid
•Existe uma maneira mais segura de fazer isso, que não envolva resilvering?
A única maneira é desconectar o disco e anexá-lo ao pool novamente com outro nome. A resilvering não é tão perigosa quanto você imagina, porque é apenas um processo de verificação e sincronização de espelho. Ele copia apenas dados que estão fora de sincronia, portanto você só corre o risco de alterações feitas entre a desconexão e a reconexão do disco.
Responder2
O ZFS foi projetado com o objetivo de validade de dados: ele não fornecerá dados corrompidos, mas nenhum se não puder produzir dados corretos (comportamento padrão configurável). Mover os discos do pool não confundirá o ZFS, desde que ele possa localizá-los. Esse link, (parcialmente em alemão) é bastante útil. Esta é apenas uma dica incompleta - considere assim.