btrfs

Backup mit btrfs und Performance mit dm-crypt

Logo btrfsIch hatte letztens beschrieben, dass ich auf einem Linux-Rechner als Dateisystem btrfs verwende, das wiederum in einem mit dm-crypt verschlüsselten Container installiert ist. btrfs ist für mich als Dateisystem noch relativ neu und ich sammle gerade meine Erfahrungen damit. Es hat für mich einen großen Vorteil gegenüber Ext4: man kann damit sehr bequem inkrementielle Backups machen, ähnlich wie rsnapshot oder Apples Time Machine. Diese Programme ermöglichen es einem, im Hintergrund ein beispielsweise stündliches Backup anfertigen zu lassen. Allerdings kommt es zu größeren Problemen, wenn man damit Verzeichnisstrukturen mit vielen Dateien sichern will. Ich habe beispielsweise meine E-Mails in einer Maildir-Struktur abgelegt. Aktuell befinden sich darin 148.677 Dateien, die zusammen rund 4,8 GB Speicherplatz belegen. rsync-basierte Backupsysteme stoßen hier an eine Grenze, die den Rechner minutenlang ausbremsen.

Probleme mit der Samuns 840 Evo oder doch mit dem Dateisystem?

Ich habe zu Hause seit ca. einem Jahr einen Server mit einer 250GB-SSD und einer 3TB-Festplatte laufen. Ber der SSD handelt es sich um die Samsung 840 Evo, die in der Vergangenheit durch Performance-Probleme aufgefallen war (siehe z.B. heise: Samsung arbeitet an Patch für 840-Evo-Firmware). Seit einiger Zeit treten bei mir nun ebenfalls mit dieser SSD Probleme auf, ich bin mir aber nicht sicher ob es an der Hardware, dem Dateisystem oder an etwas anderem liegt. Die Symptome passen nicht so richtig zu dem bekannten Problem ds Samsung-Gerätes.

Kurz zum Aufbau des Systems: Auf derm Server ist ein Arch Linux installiert, die Festplatten  sind mit dm-crypt verschlüsselt un die verschlüsselten Container sind mit dem Dateisystem btrfs bespielt. Für die SSD ist TRIM aktiviert.

Das hat eine ganze Zeit wunderbar funktioniert. Bis vor ein paar Wochen. Mit einem Mal war eine  bestimmte Datei von der Festplatte nicht mehr lesbar:

# file /usr/lib/perl5/core_perl/auto/Encode/Encode.so
/usr/lib/perl5/core_perl/auto/Encode/Encode.so: ERROR: cannot read `/usr/lib/perl5/core_perl/auto/Encode/Encode.so' (Input/output error)

Das ist eine Datei die zur Perl-Installation gehört. Wenn ich Perl erneut installiere, landet diese Datei auch wieder auf der Festplatte und ist wieder lesbar: