Dateiserver-VM auf einem Btrfs-Host

1179
xpto

Ich möchte einen Dateiserver / NAS mit btrfs erstellen, um die Daten zu schützen (vor Bitrot), aber ich möchte meinen vorhandenen KVM / QEMU-Server (debian mit btrfs raid1) verwenden und eine VM für diesen Zweck erstellen.

Wenn ich die VM erstelle und die Daten in einem ext4-Dateisystem speichere, erkennt die btrfs-Prüfsumme auf dem Host-Server eine Beschädigung der Daten auf der VM?

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

Wenn die vorherige Antwort nein ist, müsste ich die VM auch mit btrfs als Dateisystem erstellen?

In diesem Fall müsste ich, um die Selbstheilungsfunktion von btrfs beizubehalten, mindestens zwei virtuelle Festplatten erstellen, um btrfs in raid1 zu haben.

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

Aber auf diese Weise würde ich viel Platz verschwenden ... raid1 in Hostserver plus raid1 in VM.

Oder vielleicht ist es die beste Lösung, den Dateiserver direkt auf dem Hostserver zu implementieren (obwohl ich es vorziehen würde, zwischen diesen beiden Rollen etwas zu trennen)?

Update 1
Obwohl ich eine Vorliebe für Btrfs habe, geht es mir in erster Linie um die Nützlichkeit von Btrfs / zfs beim Erkennen und Korrigieren der unbeaufsichtigten Beschädigung von VM-Festplatten. Wie können diese Dateisysteme die unbeaufsichtigte Beschädigung von normalen Festplattenschreibvorgängen auf der virtuellen Festplatte unterscheiden?

Update 2
Nachdem ich ein bisschen mehr gegoogelt hatte, konnte ich nur ein paar weitere Informationen zu dieser Frage von Serverfault finden .
Gemäß einigen Kommentaren wäre das virtuelle Gastsystem ebenfalls gefährdet, sofern nicht ein komplexeres Dateisystem implementiert wurde (wahrscheinlich ein Gast-Dateisystem von raid1 in einem Host-Dateisystem von raid1).

Meine Idee ist also jetzt:

  • Richten Sie den Dateiserver auf dem kvm-Hostserver ein
  • Halten Sie die kritischen Daten auf dem Dateiserver (der bereits btrfs verwendet) sicher und geben Sie sie über NFS an die VMs weiter
  • Deaktivieren Sie COW für den VM-Image-Ordner
  • Erstellen Sie kvm-Snapshots der VMs und sichern Sie ihre Konfigurationsdateien auf den NFS-Freigaben

Ist das eine vernünftige Lösung oder vergesse ich wichtige Details?

1
Gemäß [diesem Artikel] (http://www.ilsistemista.net/index.php/virtualization/47-zfs-btrfs-xfs-ext4-and-lvm-with-kvm-a-storage-performance-comparison.html ? start = 10), Btrfs wird nicht zum Speichern von virtuellen Maschinen empfohlen. ZFS funktioniert möglicherweise besser und schützt Ihre Daten dennoch vor unbeaufsichtigter Beschädigung. Deltik vor 8 Jahren 0

1 Antwort auf die Frage

1
xpto

Ich stütze mich hauptsächlich auf diesen Serverfehler-Beitrag, aber ich versuche, mich selbst zu beantworten.

Wenn ich die VM erstelle und die Daten in einem ext4-Dateisystem speichere, erkennt die btrfs-Prüfsumme auf dem Host-Server eine Beschädigung der Daten auf der VM?

Nein. Nach meiner Erfahrung kann das Hostsystem auf keinen Fall eine Beschädigung der Daten im VM-Dateisystem erkennen.

Wenn die vorherige Antwort nein ist, müsste ich die VM auch mit btrfs als Dateisystem erstellen?

Ja.

Oder vielleicht ist es die beste Lösung, den Dateiserver direkt auf dem Hostserver zu implementieren (obwohl ich es vorziehen würde, zwischen diesen beiden Rollen etwas zu trennen)?

In meinem Fall lautet die Lösung:

  • Richten Sie den Dateiserver auf dem kvm-Hostserver ein
  • Halten Sie die kritischen Daten auf dem Dateiserver (der bereits btrfs verwendet) sicher und geben Sie sie über NFS an die VMs weiter
  • Deaktivieren Sie COW für den VM-Image-Ordner
  • Erstellen Sie kvm-Snapshots der VMs und sichern Sie ihre Konfigurationsdateien auf den NFS-Freigaben