Wie bekomme ich ein NTFS-ähnliches Snapshot-Verhalten in BTRFS?

912
Thorsten Schöning

Ich möchte BTRFS verwenden, um VMs in VirtualBox zu hosten, um Snapshots ohne LVM oder ähnliches verwenden zu können. Theoretisch brauche ich CoWaus Leistungsgründen nicht die ganze Zeit Verhalten, und nodatacowes scheint, dass ich es nicht brauche. Was ich stattdessen gerne hätte, ist ein Ansatz aus meinem Verständnis von Windows und NTFS scheint zu verwenden: Die Daten werden ständig geändert CoW, aber wenn Sie einen Dateisystem-Snapshot erstellen, werden die aktuellen Daten in diesem Snapshot gespeichert, indem Sie die Daten wegkopieren wenn es in irgendeiner Weise geändert werden soll. Es scheint wichtig zu sein, dass dies nur genau einmal pro Momentaufnahme geschieht und wirklich nur für die modifizierten Blöcke. Nachdem ein zu modifizierender Block zunächst wegkopiert wurde, werden alle nachfolgenden Änderungen an demselben Block nur noch ohne CoWVerhalten angewendet .

Abgesehen vom Kopieren des ursprünglichen Blocks geänderter Daten an einen sicheren Ort ist dies aus Performance-Sicht für mich sehr sinnvoll, und ich möchte genau dieses Verhalten haben, um meine VMs zu hosten. Diese schreiben ständig Daten und ich sehe einfach nicht, wie ich CoWfür all diese Änderungen ein Verhalten brauche .

Ich möchte nur, CoWnachdem ich einen Dateisystem-Snapshot erstellt habe, z. B. für Sicherungszwecke. Danach muss ich CoWnatürlich meine Schnappschüsse konsistent halten, solange ich es brauche. Aber auch nach der Erstellung der Momentaufnahmen würde ich nicht CoWfür alle Daten die Ewigkeit brauchen, sondern nur einmal für die danach geänderten Blöcke. Alle Änderungen nach der ersten Änderung können einfach ohne übernommen werden CoW.

Wenn ich die BTRFS-Dokumente verstehe, CoWpassiert dies, wenn es einmal in einer Datei geschieht, immer für immer. Aber ich könnte natürlich falsch liegen ...

Also, was hätte ich mit BTRFS überhaupt möglich?

0
Haben Sie tatsächlich Leistungsprobleme mit CoW gehabt oder sind Sie über theoretische Probleme besorgt? Daniel B vor 7 Jahren 0
@DanielB Ich bin nur besorgt und denke über Dinge nach, weil man sehr unterschiedliche Aussagen bezüglich CoW und Anwendungsfällen mit VMs oder Datenbanken lesen kann. Thorsten Schöning vor 7 Jahren 0
Sprechen Sie über FS- oder VM-Snapshots? Seth vor 7 Jahren 0
Momentaufnahmen auf @Seth-Dateisystemebene. Thorsten Schöning vor 7 Jahren 0
CoW ist ein echter Killer für Datenbanken, stimme ich zu. Dynamisch wachsende VM-Images unterliegen jedoch ohnehin einer Fragmentierung. Daniel B vor 7 Jahren 0
Nur zur Information, das ist nicht wirklich eine Funktion von NTFS. Die Volume-Schattenkopie befindet sich über dem Volume-Treiber und unter dem Dateisystemtreiber. Als solches ist es ein Dateisystem-Agnostiker. Es interessiert nicht die Dateisystem-Metadaten, den Dateiinhalt oder irgendetwas davon. Es wird alles in Bezug auf logische Blöcke (Blöcke innerhalb eines Volumes) gemacht. Jamie Hanrahan vor 7 Jahren 1

1 Antwort auf die Frage

1
Kamil Maciorowski

Wenn CoWeine Datei einmal vorkommt, wird sie für immer weiter ausgeführt. Aber ich könnte natürlich falsch liegen.

Ich denke du liegst falsch. Ich habe diese Frage über das Erstellen von Momentaufnahmen eines BTRFS-Volumes gefunden, das mit geladen wurdenodatacow . Es gibt dort ein Zitat (aus der BTRFS-Mailingliste ), das für Ihren Fall entscheidend ist:

In einer NOCOW-Datei muss der erste Schreibzugriff auf einen Dateiblock (4096 Byte) nach einem Snapshot immer noch COW sein, da der Snapshot die alte Version an Ort und Stelle sperrt. Jetzt hat sich der Dateiblock geändert, sodass er trotz der NOCOW-Anweisung anderswo geschrieben werden muss um den Schnappschuss so zu behalten, wie er war. Die Datei behält jedoch das NOCOW-Attribut bei, und zusätzliche Schreibvorgänge in demselben Dateiblock sind an Ort und Stelle ... bis zum nächsten Snapshot natürlich.

Es sieht so nodatacowaus, als würden Sie mit der Option mount genau das bekommen, was Sie möchten. Denken Sie daran, dass es Einschränkungen gibt:

nodatacow
Daten für neu erstellte Dateien nicht kopieren, vorhandene Dateien sind davon nicht betroffen. Dies deaktiviert auch die Prüfsumme! […] Möglicherweise teilweise aktualisierte Dateien bei Systemfehlern. […] Schaltet die Komprimierung aus!

Quelle: BTRFS-Einhängeoptionen .

Tolle Quelle, danke! Die Einschränkungen sind vielleicht überhaupt kein Problem, indem ich zB ext4 oder NTFS verwende, habe ich bereits dasselbe und kann möglicherweise mit diesen leben. Am Ende ist es einfach gut zu wählen. :-) Thorsten Schöning vor 7 Jahren 0