ubuntuusers.de

Funktionsweise? Copy on write bei btrfs

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Henryy

Anmeldungsdatum:
22. Juni 2016

Beiträge: Zähle...

Hi zusammen,

ich habe eine Frage zur Copy on Write Funktionalität von btrfs.

Wenn ich das richtig verstanden habe, dann wird zum Beispiel beim Kopieren einer Datei (sagen wir mal diese ist 4GB groß) von Ordner A in Ordner B nur per Pointer auf die "virtuelle Datei" in Ordner B gezeigt. Tatsächlich physisch vorhanden ist, aber nur die Datei in Ordner A und das System verbraucht auch nur 4 statt 8 GB. Soweit richtig?

Wenn die Datei, die ich in Ordner B geöffnet habe, geändert wird, dann wird die Datei im Ordner B komplett geschrieben. Ist das richtig? Sind dann quasi 8 GB belegt?

Und was genau passiert, wenn ich wie oben beschrieben eine Kopie in Ordner B habe (und sagen wir mal noch ich habe auch eine Kopie in die Ordner C und D gemacht...) und nun wird die "Basisdatei" im Ordner A, geändert............werden nun für die Ordner B,C und D, wo eine virtuelle Kopie liegt, in eine richtige Datei geschrieben???

Wäre dankbar, wenn mir das jemand kurz erklären könnte bzw. ob mein Gedankengang richtig ist.

Gruß+danke

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4448

Wird hier gut beschrieben:

"Erst wenn man anschließend eine der Kopien verändert wird entsprechend Speicherplatz gebraucht, aufgrund der Funktionsweise aber auch nur so viel, wie tatsächlich verändert wurde. CoW ermöglicht dadurch unter anderem auch die effiziente Verwaltung von Snapshots...!"

http://kopfkrieg.org/2016/06/19/dateisysteme-fuenfte-generation/

Henryy

(Themenstarter)

Anmeldungsdatum:
22. Juni 2016

Beiträge: 2

Danke für deine Antwort, kannte die Seite noch gar nicht, sieht schon mal informativ aus - lese ich mir gleich alles durch.

Demnach ist meine Aussage, dass nach der Änderung an Datei B 8 GB vorhanden sind, falsch - richtig? Es werden ja nur die Änderungen zur Datei A gespeichert.?!

Die Frage beantwortet das leider noch nicht ganz. Wenn die Kopie verändert wird - ja, aber was passiert wenn ich die Stamm/Hauptdatei aus der die Kopie entstand - geändert wird??

JörnS Team-Icon

Anmeldungsdatum:
25. November 2010

Beiträge: 2107

Dann werden auch nur die Änderungen gespeichert. Stelle es dir so vor: die Originaldatei ist ein Aktenordner. Die kopierte Datei ist ein Aktenordner, in dem nur die Änderungen eingeheftet werden. Wenn dann in dem Ordner mit dem Original etwas geändert wird, wandert die entsprechende Seite zum Ordner der Kopie, weil sie nur noch dort Sinn macht bzw richtig ist.

Wobei das Beispiel für Copy-on-write allgemein schon zu komplex ist. Btrfs ist für SSDs und andere Flashmedien gedacht, zumindest in erster Linie. Nun ist es bei den Flashmedien so, dass man nicht einfach beschriebene Zellen überschreiben kann. Die Zellen müssen vorher explizit gelöscht werden - und das dauert länger als das eigentliche Schreiben. Also spart man sich Zeit: statt Löschen und Überschreiben erstellt der Controller intern eine Kopie einer geänderten Datei (bzw geänderten Zellen) in einem freien Bereich. Das ist das eigentliche CoW. Dann wird halt intern festgehalten, dass die alten Daten nicht mehr verwendet und deswegen gelöscht werden können. Das übernimmt dann TRIM.

glasenisback

Avatar von glasenisback

Anmeldungsdatum:
20. November 2011

Beiträge: 1603

Wohnort: Fernwald (Gießen)

JörnS schrieb:

[..] Btrfs ist für SSDs und andere Flashmedien gedacht, zumindest in erster Linie. [..]

Wie kommst du denn auf diese Idee?

JörnS Team-Icon

Anmeldungsdatum:
25. November 2010

Beiträge: 2107

glasenisback schrieb:

JörnS schrieb:

[..] Btrfs ist für SSDs und andere Flashmedien gedacht, zumindest in erster Linie. [..]

Wie kommst du denn auf diese Idee?

Hab ich irgendwo gelesen. Bis dato hab ich das auch nicht in Frage gestellt, CoW kommt Flashmedien ja auch von der Funktionsweise her entgegen.

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17530

glasenisback schrieb:

Wie kommst du denn auf diese Idee?

Ist technisch auch korrekt. SSDs mögen es wenn man möglichst die Schreibzyklen über die ganze Platte verteilt. COW nimmt auch ständig neue Blöcke (stark vereinfacht gesagt) bevor es alte wieder überschreibt. Zusätzlich hat btrfs ja noch 1-2 Mount Optionen wegen SSDs, um das verhalten für diese Datenträgertypen weiter zu optimieren.

mfg Stefan Betz

Antworten |