Eu tenho uma máquina FreeBSD 11 que possui três drives físicos em um espelho ZFS, criptografados com GELI. Tudo isso foi basicamente criado magicamente pelo instalador do FreeBSD quando eu construí a máquina pela primeira vez, então eu tive muito pouca informação sobre ele ou conhecimento sobre os detalhes dele.
O SMART começou a relatar alguns erros em uma das unidades. Ainda não está morto, mas quero adicionar uma nova unidade ao espelho e, em seguida, remover a unidade antiga antes que ela realmente falhe. Depois de alguns googling, eu acho que eu tenho um pouco de compreensão sobre como fazer a maior parte disso, mas eu quero passar por todas as pessoas do passado para ter certeza de que não estou fazendo algo errado ou omitindo alguma coisa. Além disso, mais especificamente, eu realmente não tenho certeza sobre a parte de swap (que também é criptografada).
Cada uma das minhas três unidades atuais (ada0, ada1, ada2) se parece com isso em gpart show
:
=> 40 1953525088 ada0 GPT (932G)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 50331648 2 freebsd-swap (24G)
50333696 1903190016 3 freebsd-zfs (908G)
1953523712 1416 - free - (708K)
zpool status
:
pool: zroot
state: ONLINE
scan: scrub repaired 0 in 2h7m with 0 errors on Mon Feb 20 14:43:08 2017
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ada0p3.eli ONLINE 0 0 0
ada1p3.eli ONLINE 0 0 0
ada2p3.eli ONLINE 0 0 0
/ etc / fstab:
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/swap.eli none swap sw 0 0
swapinfo
:
Device 1K-blocks Used Avail Capacity
/dev/mirror/swap.eli 25165820 142220 25023600 1%
gmirror status
:
Name Status Components
mirror/swap COMPLETE ada0p2 (ACTIVE)
ada1p2 (ACTIVE)
ada2p2 (ACTIVE)
Então, acho que faço o seguinte:
(1) Instale fisicamente a nova unidade.
(2) Talvez o SMART verifique, talvez preencha com dados aleatórios.
(3) gpart destroy
, gpart create
e gpart add
, dando-lhe basicamente o mesmo layout que gpart show
mostra para minhas outras unidades - boot, free, swap, zfs, free. Uma diferença é que eu intencionalmente comprei uma unidade maior para que, à medida que eu substitua gradualmente as unidades com falha, eventualmente tenha mais espaço na piscina. Então eu faço a partição freebsd-zfs maior do que nas unidades existentes, mesmo que muito dela seja inutilizável até que eu eventualmente substitua todas as unidades menores atuais (certo?). E devo ter certeza de manter algum espaço livre significativo no final para considerar a possibilidade de tamanhos de unidade um pouco diferentes para unidades futuras (certo?).
(4) geli init
da partição freebsd-zfs. Pergunta secundária específica aqui: Neste momento, todas as minhas três unidades físicas têm a mesma senha da GELI. Quando a máquina inicializa, só peço uma senha, em vez de uma para cada unidade. Eu gosto disso. Se eu usar a mesma senha novamente para a nova unidade, isso acontecerá magicamente, ou será que devo dizer ao FreeBSD que o processo de inicialização deve tentar a senha que eu insiro para essa nova unidade também?
(5) geli attach
para a partição freebsd-zfs.
(6) zpool attach
a nova partição criptografada; algo como zpool attach zroot ada0p3.eli ada3p3.eli
(7) Entendo que o FreeBSD agora vai me dizer para executar gpart bootcode
na nova unidade. Faça isso.
(8) Aguarde até que o resilvering seja concluído.
(9) Remova fisicamente a unidade antiga. Após a reinicialização, remova-o do zpool também.
Eu ... acho que é o que eu faço? Mas, como eu disse acima, não tenho certeza sobre a troca. Será que de alguma forma magicamente se tornou parte do /dev/mirror/swap.eli? Eu tenho que adicionar de alguma forma? Da mesma forma, o espaço de troca da unidade antiga desaparece magicamente? Tenho que removê-lo de alguma forma?
Agradecemos antecipadamente por qualquer ajuda.