![Sistema de arquivos de dispositivo de bloco compartilhado (sistema de arquivos em cluster sem rede)](https://rvso.com/image/567644/Sistema%20de%20arquivos%20de%20dispositivo%20de%20bloco%20compartilhado%20(sistema%20de%20arquivos%20em%20cluster%20sem%20rede).png)
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.