Hoje vamos falar sobre hot spare que é um dispositivo físico(HD) que deixamos fazendo parte do array mas sem ser usado, fica apenas no banco de reservas. Se um dos discos do array vier a queimar o disco marcado como hot spare substituirá o disco danificado automaticamente.
Temos para esse post 3 discos de 100MB cada
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 12G 0 disk sdb 8:16 0 100M 0 disk sdc 8:32 0 100M 0 disk sdd 8:48 0 100M 0 disk
Nosso Ambiente Atual
Num artigo anterior criamos o pool com:
zpool create meuPool sdb sdc
O comando acima cria um raid-0, onde são somados os tamanhos dos dos discos(sdb e sdc), porém não há redundância e nem tolerância a falhas!
Hoje temos o seguinte esquema:
Um pool formado pelos discos /dev/sdb e /dev/sdc. Apensar de acima exibir apenas “sdb e sdc” mas todos estão dentro de /dev.
elder@server02:~$ sudo zpool status pool: meuPool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM meuPool ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 errors: No known data errors
Só para testes, removi o disco /dev/sdb e olha o que aconteceu abaixo. Avisa que “não há pool disponíveis”
elder@server02:~$ sudo zpool status no pools available
trabalhamos até aqui usando um raid-0, sem tolerância a falhas! O correto seria usar os dispositivos sdb e sdc espelhados(mirror) e teríamos evitado isso.
E se Houvéssemos inserido um terceiro disco como “hot spare”? Não funcionaria! Hot Spare não pode ser usado em raid-0!
Criando RAIDZ-1
Criaremos um raidz-1, espelhando os discos, porém teremos, infelizmente, que destruir o meuPool atual. Sempre tenha e faça backup!
Destrua o pool atual. iremos perder todos os dados.
elder@server02:~$ sudo zpool destroy meuPool
Criei um novo pool. Darei o mesmo nome, meuPool. Dessa vez usei a opção “mirror sdb sdc” para espelhar os discos
elder@server02:~$ sudo zpool create meuPool mirror sdb sdc
Visualize detalhes do pool e veja que sdb e sdc fazem parte do mirror-0. Se um dos dois falhar não correremos perigo.
elder@server02:~$ sudo zpool status pool: meuPool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM meuPool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 errors: No known data errors
Em contrapartida não temos a soma da capacidade dos discos: 100MB + 100MB. Possuimos apenas o valor de um dos discos, veja abaixo
elder@server02:~$ sudo zpool list NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT meuPool 80M 104K 79,9M - - 3% 0% 1.00x ONLINE -
Adicionando o Hot Spare
Iremos adicionar o sdd como hot spare. Poderíamos tê-lo adicionado acima na criação do pool, bastava usar: “zpool create meuPool mirror sdb sdc spare sdd”. Mas fiz dessa forma para aprendizagem apenas.
Adicionando sdd como hot spare
elder@server02:~$ sudo zpool add meuPool spare sdd
Vendo o resultado
elder@server02:~$ sudo zpool status pool: meuPool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM meuPool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 spares sdd AVAIL
Conclusão
Somente os discos sdb e sdc espelhados bastaria para dar segurança; se um deles danificasse nem perceberíamos, o sistema continuaria funcinando. Mas um disco á mais, de reserva, marcado como hot spare também é uma confiança à mais que temos.