Gemeinsam genutzter Speicher in KVM wird nicht synchronisiert

Gemeinsam genutzter Speicher in KVM wird nicht synchronisiert

Ich habe KVM auf einem Debian 10-Host eingerichtet.

Es laufen 2 virtuelle Maschinen.

Die virtuelle Maschine Nr. 1 enthält OMV.
Die virtuelle Maschine Nr. 2 enthält reines Debian.

Jede virtuelle Maschine wird in ihrer eigenen qcow2-Imagedatei installiert.
Diese beiden Maschinen teilen sich einen zusätzlichen Speicher, eine RAW-Speicherdatei. Auf beiden Maschinen ist dieser Speicher als „Gemeinsam nutzbar“ gekennzeichnet.

Das aktuelle Problem, das mir aufgefallen ist, ist, dass die Dateitabelle nicht im laufenden Betrieb aktualisiert wird. Das heißt, wenn Sie mit diesem Speicher in einer VM etwas tun, werden die Änderungen in der anderen VM erst sichtbar, wenn diese neu gestartet wird (höchstwahrscheinlich bewirkt ein erneutes Einhängen dasselbe).

Wenn beide VMs Änderungen vornehmen, beginnt OMV später, einige SMB-bezogene Fehler auszugeben.

Durch den Neustart von OMV wurde die Dateitabelle nicht aktualisiert, durch den Neustart der Debian-Maschine gingen jedoch alle Daten verloren.

OMV hostet Samba-Freigabe.

Hat jemand Erfahrung mit gemeinsam genutztem Speicher und weiß, wie man die Dateitabelle zumindest manuell aktualisiert, ohne den Speicher erneut bereitzustellen?

Antwort1

kurz und knapp:Haben Sie Ihre einfache Debian-VM (virtuelle Maschine Nr. 2)Mounten Sie die Samba-Freigabegehostet auf Ihrer OpenMediaVault-VM (virtuelle Maschine Nr. 1). Verbinden Sie nur die Rohspeicherdatei mit der virtuellen Maschine Nr. 1.


Erläuterung

Was Sie eingerichtet haben, ist vergleichbar damit, ein Flash-Laufwerk gleichzeitig an zwei Computer anzuschließen. Ich habe bereits früher darüber geschrieben:

Wenn Sie das Dateisystem auf der Festplatte irgendwo auf beiden Computern mounten, weiß keiner der beiden Computer, dass der andere das Dateisystem ebenfalls verwendet. Dies kann dazu führen,schwerwiegende Datenbeschädigungweil jeder Computer dem anderen in die Quere kommt.

Aus:Wie kann ich den iSCSI-Initiator dazu bringen, Änderungen zu propagieren?

Um dies zu beheben, benötigen Sie eine Schicht zwischen der Speicherfestplatte (auf dem Server) und den mehreren darauf zugreifenden Maschinen (Clients), die erkennt, dass mehrere Clients auf denselben Speicher zugreifen können.

Zwei gängige Möglichkeiten, dies einzurichten, sindNFSUndCIFS(Samba), dieNetzwerkdateisysteme.

Ich sehe, dass Sie bereits einen Samba-Server eingerichtet haben. Um den Speicher freizugeben, müssen Sie lediglich Ihre VMs anders machen und eine Verbindung zu diesem einen Samba-Server herstellen. Sie sollten nur die virtuelle Festplatte mit dem Samba-Server verbinden.

Sie könnten noch einen Schritt weiter gehen und eineverteiltes Dateisystem, eine Möglichkeit, Speicher von mehreren Servern zu bündeln und über ein einziges Netzwerkdateisystem darauf zuzugreifen.

Alternativ ist es auch möglich, die virtuelle Festplatte freizugeben, wie Sie es ursprünglich versucht haben. Sie benötigen dazu aber trotzdem ein Dateisystem, das erkennt, dass mehrere Computer gleichzeitig Daten ändern können. Diese andere Antwortschlägt vorShared-Disk-Dateisysteme, die gemeinsam genutzten Speicher auf einer niedrigeren Ebene abstrahieren als Netzwerkdateisysteme.


Ressourcen

Offizielle Dokumentation

Anleitungen

Darüber hinaus: Verteilte Dateisysteme

Antwort2

Durch das gleichzeitige Mounten eines Ext4-Dateisystems mit Lese-/Schreibzugriff auf zwei Knoten wird der Inhalt nicht für beide verfügbar gemacht, sondern das Dateisystem wird beschädigt.

Wenn Sie die Festplatte im Virt-Manager als gemeinsam nutzbar markieren, wird lediglich verhindert, dass Sie eine Warnung vom Hypervisor erhalten – dies geschieht auf der Ebene der virtuellen Hardware, nicht auf der Ebene des Dateisystems.

Wenn Sie gemeinsam genutzte Festplatten wünschen (und dafür gibt es gute Gründe), verwenden Sie GFS oder OCF2 (die einfachste Wahl für Anfänger).

verwandte Informationen