Converte o espelho ZFS com 3 discos ativos em 2 + 1 hot spare

1

Depois de instalar o Proxmox VE 3.4 com o ZFS e o raid1 usando três discos, recebo o seguinte conjunto:

root@pve:~# zpool status
  pool: rpool
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        rpool       ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            sda3    ONLINE       0     0     0
            sdb3    ONLINE       0     0     0
            sdc3    ONLINE       0     0     0

Se eu entendi a configuração corretamente, todos os dados serão espelhados em três discos. Mesmo que isso suporte falha simulatenous de 2 unidades de uma vez eu suponho que há uma penalidade de desempenho para gravar tudo em dois discos. Eu acho que dois seriam suficientes.

Como faço para converter sdc3 para servir como um hot spare. Eu quero que ele seja ativado automaticamente e substitua o disco quebrado em caso de falha da unidade.

    
por Bo Aphran 14.03.2015 / 13:48

2 respostas

4

Observação: usar um hot spare nessa situação provavelmente não é a melhor ideia. Veja abaixo o raciocínio por trás disso, abaixo da resposta à pergunta, conforme solicitado.

A resposta à pergunta feita:

Antes de reduzir a redundância do conjunto, sugiro veementemente que uma execução completa do scrub funcione para garantir que todos os dispositivos estejam funcionando e que não haja erros de dados latentes:

# zpool scrub rpool
... wait for it to finish, check zpool status for the status of the scrub ...

Os espelhos ZFS permitem adicionar e remover os lados do espelho (chamados de anexar e desanexar), portanto, liberar o sdc3 é fácil:

# zpool detach rpool sdc3

Você pode adicioná-lo como sobressalente. Talvez seja necessário liberar o rótulo primeiro (caso contrário, o ZFS pode reclamar que faz parte de um pool existente):

# zpool labelclear /dev/sdc3

Observe que, após o labelclear, o ZFS não fará idéia de como ler o dispositivo, portanto, isso exclui todos os dados dele. Por isso, tenha cuidado com o comando acima.

Depois, veja o que adicionar como hot spare, sem fazer alterações:

# zpool add -n rpool spare /dev/sdc3

O resultado do acima deve ser uma configuração semelhante a:

    NAME        STATE     READ WRITE CKSUM
    rpool       ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        sda3    ONLINE       0     0     0
        sdb3    ONLINE       0     0     0
      spares
        sdc3    AVAIL

Observe que a seção "peças de reposição" pode não aparecer; o que é importante aqui é que você não adiciona outro vdev no mesmo nível que o mirror-0 . Em outras palavras, o exemplo abaixo está errado:

    NAME        STATE     READ WRITE CKSUM
    rpool       ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        sda3    ONLINE       0     0     0
        sdb3    ONLINE       0     0     0
      sdc3      ONLINE       0     0     0

Quando estiver certo de que o comando fará o que você pretende, remova o -n para efetuar a alteração. Particularmente, não passe -f para zpool add a menos que você esteja absolutamente certo de que vai fazer o que você quer fazer.

Observe que o acima apenas lida com a configuração real do dispositivo como sobressalente. Eu não sei como configurá-lo como uma substituição sobressalente e automática do hot no Proxmox VE.

Por que isso pode não ser a melhor ideia:

Lembre-se de que o hot spare exigirá um resilver quando for necessário e não estiver disponível para atender a solicitações de leitura durante a operação normal, portanto, fazendo isso , você está realmente reduzindo a resiliência do seu pool ao fracasso, bem como reduzir potencialmente o desempenho de leitura. Atualmente, se qualquer um dos sd [abc] 3 falhar, você ainda terá dois drives funcionando, fornecendo redundância; com a configuração do hot spare, se qualquer um dos sd [ab] 3 falhar, a única unidade remanescente será necessária para suportar a resilver completa no sdc3 do hot spare sem erros. Se qualquer erros de leitura forem encontrados na única unidade funcional durante o processo de resilver no hot spare para atualizá-lo, você perderá os dados.

Supondo que o HBA é capaz de acompanhar a carga, um espelho N terá o desempenho de gravação de uma única unidade, independentemente do número de dispositivos no espelho, já que todos devem ser atualizado antes que a gravação possa ser considerada concluída e as gravações sejam realizadas paralelamente nos dispositivos físicos. Em leitura, dependendo das particularidades você pode obter desde o desempenho de uma unidade, até o desempenho de todas as unidades N.

Se sua carga de trabalho for pesada em gravação síncrona, que é o que eu esperaria é mais provável que cause contenção de desempenho de gravação, considere adicionar um bom SSD para usar como SLOG. Isso deve melhorar o desempenho de gravação em gravações síncronas. Se a maioria de suas gravações é assíncrona (que normalmente é o padrão, exceto para coisas como NFS), então você não verá muita diferença, mas você também não verá muito impacto no desempenho pelo espelho de três direções tendo a gravação desempenho de apenas uma unidade até ficar sem ARC RAM e um espelho bidirecional não será mais rápido; se esse for o caso, considere adicionar mais RAM para o ZFS usar como ARC.

    
por 14.03.2015 / 14:07
3

Não é uma boa idéia usar um disco como reserva nesta configuração: você perderá a velocidade de leitura do terceiro disco, ganhando quase nada na velocidade de gravação. O ponto chave a ser entendido é que as gravações são escritas simultaneamente, portanto, não há (quase) nenhuma lentidão em ter um espelho de 3 discos contra um de 2 discos.

    
por 14.03.2015 / 15:02

Tags