VM do servidor de arquivos em um host btrfs

VM do servidor de arquivos em um host btrfs

Quero construir um servidor de arquivos/NAS enquanto uso o btrfs para proteger os dados (do bitrot), mas gostaria de usar meu servidor KVM/QEMU existente (debian com btrfs raid1) e criar uma VM para essa finalidade.

Se eu criar a VM e armazenar os dados em um sistema de arquivos ext4, a soma de verificação do btrfs no servidor host detectaria corrupção de dados na VM?

--------------------
|    KVM server    |
|   btrfs - raid1  |
|   -----------    |
|   | VM-ext4 |    |
|   -----------    |
|------------------|

Se a resposta anterior for não, eu teria que criar a VM com btrfs também como sistema de arquivos?

Nesse caso, para manter o recurso de "autocura" do btrfs, eu teria que criar pelo menos 2 discos virtuais para ter o btrfs no raid1.

---------------------
|     KVM server    |
|    btrfs - raid1  |
|   ------------    |
|   | VM-btrfs |    |
|   | 2 x vda  |    |
|   ------------    |
|-------------------|

Mas assim eu estaria desperdiçando muito espaço... raid1 no servidor host mais raid1 na VM.

Ou talvez a melhor solução seja implementar o servidor de arquivos diretamente no servidor host (embora eu prefira manter alguma separação entre essas duas funções).

atualização 1
Embora eu tenha preferência pelo btrfs, minha principal questão é sobre a utilidade do btrfs/zfs na detecção e correção de corrupção silenciosa em discos VM. Como esses sistemas de arquivos podem distinguir a corrupção silenciosa das gravações normais no disco virtual?

atualização 2
Depois de pesquisar um pouco mais no Google, só consegui encontrar mais algumas informações sobre issopergunta do serverfault.
De acordo com alguns dos comentários, o sistema convidado virtual também estaria em risco, a menos que um sistema de arquivos mais complexo fosse implementado (provavelmente um sistema de arquivos convidado raid1 dentro de um sistema de arquivos host raid1).

Então minha ideia agora é esta:

  • configure o servidor de arquivos no servidor host kvm
  • mantenha os dados críticos seguros no servidor de arquivos (que já usa btrfs) e compartilhe-os com as VMs via NFS
  • desabilitar COW para a pasta de imagem de disco VM
  • crie instantâneos kvm das VMs e faça backup de seus arquivos de configuração nos compartilhamentos NFS

Esta é uma solução razoável ou estou esquecendo algum detalhe importante?

Responder1

Estou me baseando principalmente nissopostagem de falha no servidor mas vou tentar responder sozinho.

Se eu criar a VM e armazenar os dados em um sistema de arquivos ext4, a soma de verificação do btrfs no servidor host detectaria corrupção de dados na VM?

Não. Pelo que percebi, não há como o sistema host detectar corrupção de dados no sistema de arquivos da VM.

Se a resposta anterior for não, eu teria que criar a VM com btrfs também como sistema de arquivos?

Sim.

Ou talvez a melhor solução seja implementar o servidor de arquivos diretamente no servidor host (embora eu prefira manter alguma separação entre essas duas funções).

No meu caso a solução será:

  • configure o servidor de arquivos no servidor host kvm
  • mantenha os dados críticos seguros no servidor de arquivos (que já usa btrfs) e compartilhe-os com as VMs via NFS
  • desabilitar COW para a pasta de imagem de disco VM
  • crie instantâneos kvm das VMs e faça backup de seus arquivos de configuração nos compartilhamentos NFS

informação relacionada