O ZFS usando snaphots pode substituir o DRBD usando o protocolo de sincronização A?

6

Esta questão está relacionada com um anterior, mais genérica , mas desta vez eu gostaria de perguntar mais especificamente se o ZFS pode substituir o DRBD em um caso de uso como o meu. Isso é dois servidores, ambos hospedando suas próprias VMs ou outros serviços enquanto replicam as VMs ou alguns outros dados entre si, para reduzir o tempo de inatividade em caso de falha de hardware ou manutenção. Esta configuração é a desejada, eu quero leituras / escritas locais preferidas e posso viver com perda potencial de dados em algum tempo arbitrário.

O DRBD suporta esse cenário com diferentes protocolos de espelhamento, onde o protocolo de replicação A é assíncrono como eu preciso. O principal benefício do DRBD em minha configuração é que a mudança para um protocolo mais de sincronização é fácil, simplesmente uma questão de configuração e reinicialização. Além disso, é possível colocar o dm-crypt em cima do dispositivo de bloco DRBD e colocar um sistema de arquivos em dm-crypt para que todos os dados sejam criptografados.

O problema do DRBD, por outro lado, é que ele precisa de dispositivos de bloco e é preciso se preocupar com sua disponibilidade e tamanho usando outras tecnologias como RAID, LVM e outras coisas. Especialmente o redimensionamento parece interessante, pois meus servidores possuem slots livres para anexar mais discos no futuro. Para suportar redimensionamento , eu precisaria usar o LVM no DRBD, para primeiro adicionar armazenamento usando o LVM e depois redimensionar o DRBD para levar o novo armazenamento em conta. Do que eu ainda preciso lidar com dm-crypt, o próprio sistema de arquivos, etc. Isso me parece bastante complexo e um pouco propenso a erros.

Por outro lado, sistemas de arquivos como o ZFS já fornecem seu próprio LVM e são capazes de enviar / receber instantâneos incrementais. Então, em teoria, o ZFS deve ser capaz de implementar o mesmo protocolo. Uma abordagem como o DRBD faz sem a necessidade de usar RAID, LVM, etc. Basta adicionar armazenamento aos servidores, levar isso aos pools do ZFS e ficar imediatamente disponível para hospedar mais / VMs maiores ou o que for. O envio / recebimento de instantâneos soa tão eficiente quanto o que o DRBD está fazendo, porque são apenas dados binários incrementais com a sobrecarga necessária para descrever as alterações a serem entendidas no ZFS receptor. Já li pessoas usando loops infinitos sem tempo de espera enviando / recebendo snapshots do ZFS e excluindo-os diretamente na fonte novamente, porque eles são necessários apenas para replicação de curto prazo.

A criptografia parece um problema para o ZFS, no entanto. O dm-crypt pode funcionar em coisas como o zvols e, no futuro, o suporte criptografia diretamente , mas atualmente não. Além disso, o envio / recebimento de snapshots parece ser sempre assíncrono, não há como implementar um protocolo de sincronização como o DRBD fornece, se necessário. Isso pode ser aceitável, por não precisar usar o LVM e facilitar a configuração geral.

Ou estou errado, existe alguma outra maneira, além de enviar / receber instantâneos, de como o ZFS é capaz de encaminhar dados para outros hosts imediatamente e apenas para o ZFS?

Você vê alguma diferença ou limitação de desempenho fundamental no envio / recebimento de instantâneos usando o ZFS com muita frequência em curtos períodos de tempo em comparação com os protocolos de espelhamento do DRBD? O último pode ser um pouco mais eficiente por causa do nível de bloco, eu acho.

Quaisquer outras diferenças entre o DRBD e o ZFS em que você possa pensar? Lembre-se que eu não preciso do material de HA do DRBD atualmente, estou focando na replicação de dados por enquanto.

Obrigado!

    
por Thorsten Schöning 27.05.2017 / 13:00

1 resposta

3

Eu fiz uma pergunta semelhante (ainda que diferente) recentemente

Em suma, tudo depende do destino de replicação que você deseja alcançar e se o ZoL se adapta ao seu caso de uso:

  • se a replicação point-in-time for adequada, o envio de instantâneos incrementais é uma estratégia muito boa
  • se for necessária uma sincronização em tempo real próxima ou total, você deve usar o DRBD ou para configurar um zpool espelhado na rede (consulte o link da pergunta acima)
  • Ao escolher usar o ZoL, considere que, para fornecer o ARC, ele basicamente reimplementa uma grande parte do código "pagecache" por si só. Isso significa maior consumo de memória pelo código do sistema de arquivos. Além disso, sendo um sistema de arquivos CoW, o ZFS tem seu comportamento / requisitos de desempenho específicos.

Por outro lado, eu sugiro que você não use ZVOLs, que escondem alguns surpresas desagradáveis .

    
por 27.05.2017 / 13:24