Sistema de arquivos de dispositivo de bloco compartilhado (sistema de arquivos em cluster sem rede)

Sistema de arquivos de dispositivo de bloco compartilhado (sistema de arquivos em cluster sem rede)

Existe algum sistema de arquivos que possa ser montado várias vezes e suporte acesso simultâneo a arquivos para Linux? Basicamente, quero algo como um sistema de arquivos em cluster, mas sem a necessidade de uma rede em execução para um gerenciador de bloqueios distribuído. Isso pode ser muito útil em conexão com máquinas virtuais que podem compartilhar dados com o host ou outra VM sem a necessidade de criar um link de rede. Quero evitar isso para manter a arquitetura de rede segura (máquina virtual na DMZ), mas compartilhar arquivos grandes. Não há necessidade de ampliar, apenas duas máquinas que montam o mesmo dispositivo de bloco.

Não deveria ser possível ter informações de bloqueio de arquivos diretamente no disco?

Responder1

Eu acho que você pode fornecer N VMs e acesso ao mesmo dispositivo de bloco, mas apenas leitura. Você nota essa palavra adivinha.

As coisas irão falhar rapidamente se alguma das VMs começar a modificar as coisas, uma vez que qualquer disco que armazene em cache as outras VMs agora será inválido.

A dificuldade de ter informações de bloqueio de arquivos no disco é que ninguém fez isso ainda. Sem pensar profundamente, a ideia de uma transação atômica de leitura/modificação/gravação em um disco é provavelmente o problema básico.

Eu acho que você poderia pegar um sistema de arquivos típico que já é multithread, descobrir onde o (s) bloqueio (s) é (s) usado (s) e mudar isso para algum tipo de operação de leitura/modificação/gravação no disco.

O outro problema com leitura/modificação/gravação no disco é que se você fizer muitos bloqueios, seu desempenho será muito ruim, pois cada alteração em qualquer coisa no disco requer:

  • bloquear o disco (buscar, ler/modificar/gravar)
  • leia o setor que deseja alterar (buscar/ler)
  • faça a alteração e escreva (escreva)
  • desbloquear o disco (buscar, ler/modificar/gravar)

Provavelmente não ajuda, mas eu consideraria algo como BSD Jails como um sistema VM mais leve se você realmente não quiser conectar-se em rede.

Responder2

Para dar uma resposta à minha própria pergunta: na situação de (para)virtualização, existem alguns sistemas de arquivos compartilhados em evolução que podem ser usados ​​para compartilhar arquivos sem rede entre instâncias. XenFS é uma abordagem que não está em desenvolvimento ativo, eu acho. Mas para KVM, e esperamos que em breve para XEN, existe um mecanismo de compartilhamento de pastas baseado na biblioteca virtio chamado9p_virtio.

informação relacionada