Eu tenho dois PCs rodando linux, um disco de 2 TB cada e um pequeno switch gigabit. Para construir um sistema altamente disponível com baixo custo, recorri a esta pilha:
- kernel 5.6 personalizado com ZFS e DRBD9 em ambos os PCs.
- um zvol em uma partição de cada disco local de cada PC - compactação habilitada, dedup desabilitada (tentei habilitar a compactação, tudo trava mal)
- DRBD9 primário duplo para espelhar entre eles
- OCFS2 na parte superior, para montar o dispositivo resultante em ambos os PCs
Uma terceira máquina muito antiga atua como árbitro DRBD sem espaço em disco real participando do espelho DRBD.
Um segundo switch e uma segunda NIC estão chegando para melhorar a disponibilidade.
Gostaria de entender se existe uma pilha mais simples para alcançar o mesmo resultado. Já descartei algumas opções, baseado no meu conhecimento atual: Lustre (muito complexo para ambientes pequenos), BeeGFS (não atualizado), GlusterFS (não funciona com dispositivos brutos, apenas com pastas montadas)
EDIT - me pediram para me concentrar em uma pergunta. Como a primeira foi respondida, mantive a segunda.
Você está confundindo Sistemas de Arquivos de Cluster com Sistema de Arquivos Distribuído.
O que você conseguiu com sua configuração ZVOL+DRBD+OCFS2 é um sistema de arquivos em cluster "shared-nothing", onde o DRBD emula uma verdadeira SAN de bloco compartilhado e o OCFS2 (ou GFS2) fornece várias montagens simultâneas por vários nós principais. Nesta configuração, você não pode trocar as camadas 2 e 3 (ou seja: DRBD+ZVOL+OCFS2) porque o ZFS não é um sistema de arquivos de cluster - se montado em dois hosts diferentes, ele se corromperá muito rapidamente (isso é verdade mesmo para ZVOLs, que são pouco mais do que arquivos ocultos no conjunto de dados ZFS raiz).
Lustre, Gluster, Ceph, etc. são sistemas de arquivos distribuídos: eles usam sistemas de arquivos/campos/bancos de dados individuais em cada host, que são combinados no nível do espaço do usuário como um único sistema de arquivos de vários hosts (ou seja: distribuído).
Como você pode selecionar entre as duas abordagens? Depende de vários fatores:
se a replicação assíncrona for suficiente, você pode usar
zfs send/recv
e encerrar o diase a replicação em tempo real for necessária, mas não for necessário HA rígido/imediato e o failover manual for uma opção, você poderá usar o DRBD no modo primário único e ignorar completamente a sobrecarga de um sistema de arquivos de cluster (ou seja: usar um XFS simples em vez de OCFS2/ GFS2)
se usado para armazenamento de arquivos grandes (ou seja: imagens vm) e com apenas um punhado de hosts, sua abordagem atual é provavelmente a melhor (ao custo de complexidade adicional e desempenho reduzido). Se tiver muitos nós, o GlusterFS (com as opções certas -
sharding
sendo o primeiro) pode ser uma escolha razoável, mas certifique -se de seguir a lista de discussão (tem muitas pegadinhas)se você precisar de um "NAS grande" para armazenar muitos arquivos de tamanho médio (1-128M), o GlusterFS no modo de réplica pode ser a escolha certa (novamente, certifique-se de seguir a lista de discussão)
se tiver muitos nós e um grande recurso sysadmin (leia-se: uma equipe dedicada), você pode considerar Lustre ou Ceph, que são as opções mais avançadas no sistema de arquivos distribuído.
Aconselho vivamente a manter as coisas o mais simples possível, mesmo na cara ou disponibilidade reduzida (a menos que realmente precise): a administração de armazenamento é uma tarefa complexa, que requer uma compreensão profunda de todas as partes móveis para evitar queimar-se (e comendo seus dados).
NOTA: você pode ler aqui para informações complementares