# ext4-Journaling für Nutzdaten / Schnelleres syncen?

## sprittwicht

Gerade ist mir schon wieder der Kernel abgeschmiert, als ich einen USB-Stick unmounten wollte, und diesmal sind die frisch auf Platte gezogenen Daten auch schön über den Jordan gegangen.

Ein wunderbarer Anlass zu erfahren, dass das Journaling des ext4-Dateisystems relativ für'n Popo ist, weil es anscheinend nur dafür sorgt, dass die Metadaten konsistent sind?

Nun habe ich viele tolle Mount-Optionen gesehen, Patches, die es angeblich in den Kernel geschafft haben, Optionen, die per Default aus sind und ich aber keinen Dunst habe wie man sie aktiviert, kurzum: Ich habe den Überblick verloren.

Kann man ext4 irgendwie so konfigurieren, dass bei einem Crash keine Nutzdaten verloren gehen? Wie entscheidet ext4, wann Daten tatsächlich auf Platte geschrieben werden, wenn ein Programm nicht explizit synct, gibt es da irgendwelche konfigurierbaren Zeitintervalle?

In meinem konkreten Fall hatte ich Dateien im Dolphin (KDE4) von einer SD-Karte per USB auf Platte kopiert, Dolphin geschlossen, und beim anschließenden Unmounten der Karte ist das System eingefroren.

----------

## Max Steel

Vor dem unmounten hochsensibler Daten evtl lieber ein "sync" ansetzen vor dem unmount.

Wenn der durchgelaufen ist (also wieder an den Prompt übergibt) sind alle Daten aus den Caches auf die Platten geschrieben.

----------

## sprittwicht

Mit Unmounten meinte ich natürlich das entsprechende Symbol in diesem KDE-Wechselmedien-WidgetTaskbarPlasmoidDings.  :Wink: 

Und das tut auch eigentlich immer ganz brav warten bis das Medium nicht mehr benutzt wird. Mir ging's ja jetzt eher um die Festplatten-/ext4-Seite allgemein, das USB-Problem ist jetzt (hoffentlich) mit dem neuesten Kernel erledigt.

----------

## Max Steel

Es gibt auch die Mountoption sync, das heißt dann das jede kopier-option direkt auf den USB-Stick geschrieben wird, ohne Umwege über einen cash. könnte genauso interessant sein.

Nur leidet der USB-Stick dann bei sporadischen Schreibaktionen (etwa bei einem Lied oder ähnliches) möglicherweiße stärker als ohne.

(async bewirkt das Gegenteil und ist meines Wissens nach standard)

Nur wie das eingestellt wird, ob im Plasmoid oder möglicherweiße bei udev... kann ich nicht sagen.

----------

## astaecker

 *sprittwicht wrote:*   

> Kann man ext4 irgendwie so konfigurieren, dass bei einem Crash keine Nutzdaten verloren gehen? Wie entscheidet ext4, wann Daten tatsächlich auf Platte geschrieben werden, wenn ein Programm nicht explizit synct, gibt es da irgendwelche konfigurierbaren Zeitintervalle?

 

Mit der Mountoption "commit" kann die Zeit eingestellt werden, wie häufig gesynct werden soll. Standard ist alle 5 Sekunden.

Mit der Mountoption "data" kann eingestellt werden, wie Daten und Metadaten vom Journal auf die Platte wandern. Die sicherste Methode ist "data=journal", wo die Daten und Metadaten erstmal ins Journal und erst danach ins Dateisystem kopiert werden. Ist aber auch die langsamste. Siehe dazu /usr/src/linux/Documentation/filesystems/ext4.txt .

----------

## sprittwicht

Hm, witzige Geschichte: Mein ext4-Dateisystem hatte überhaupt kein Journal.  :Smile: 

Hab jetzt mit tune2fs eins angelegt, aber sobald ich data=journal als Option in die /etc/fstab eintrage rastet er beim Neustart völlig aus. Root remounten als R/W klappt nicht, irgendwas mit ungültiger Parameter, und anstatt den einfach zu ignorieren sperrt er mich einfach komplett aus meinem System aus, dankeschön.

Ich werd's wohl jetzt so lassen (data=ordered), schließlich scheinen sich meine Probleme mit Abstürzen bei USB-/NFS-Partitionen mit dem 3.0-Kernel gelegt zu haben.

Trotzdem danke für die Hinweise, aber Dateisysteme unter Linux werden mir immer ein Buch mit sieben Siegeln bleiben...

----------

## schachti

 *sprittwicht wrote:*   

> Hab jetzt mit tune2fs eins angelegt, aber sobald ich data=journal als Option in die /etc/fstab eintrage rastet er beim Neustart völlig aus. Root remounten als R/W klappt nicht, irgendwas mit ungültiger Parameter, und anstatt den einfach zu ignorieren sperrt er mich einfach komplett aus meinem System aus, dankeschön.

 

Du musst, wenn Du grub als Bootloader verwendest, dort schon die entsprechende mount-Option angeben - wenn ich mich recht erinnere durch Anhängen von

```
rootflags=data=journal
```

an die mit kernel beginnende Zeile in /boot/grub/grub.conf. Zu dem Zeitpunkt, zu dem /etc/fstab ausgewertet wird, wird das root-Dateisystem in der Regel schon gemountet sein... Alternativ kann man die entsprechende journaling-Option mittels tune2fs auch als Standard setzen (müsste die Option -o journal_data sein).

----------

## sprittwicht

 *schachti wrote:*   

> Zu dem Zeitpunkt, zu dem /etc/fstab ausgewertet wird, wird das root-Dateisystem in der Regel schon gemountet sein...

 

Aber zunächst doch nur als readonly. Kann er das da nicht schon auswerten und dann beim Remounten entsprechend berücksichtigen?

Naja, ist mir eh alles zuviel Voodoo, ich bleib jetzt bei den Defaults...

----------

