Btrfs-Dateisystem

3. November 2013

Lang: cs en de es

Ein Dateisystem ist etwas, auf das wir beim Speichern von Daten nicht verzichten können. Der durchschnittliche Benutzer kümmert sich natürlich nicht um das Dateisystem, solange der Computer funktioniert. Die Erfahreneren wissen, dass sie so etwas haben, oft FAT oder NTFS genannt, die wirklich Erfahrenen kennen andere Dateisysteme. Ein Insider weiß, dass das Dateisystem ein sehr wichtiger Teil des Betriebssystems ist, und da es zum Speichern/Lesen von Daten verwendet wird, hat jedes Problem oder jeder Vorteil große Auswirkungen auf die Funktionalität des gesamten Systems.

Unterschiedliche Dateisysteme

Wer eine Lösung für die Wahl der Festplatte findet, sollte auch eine Lösung für das Dateisystem finden, aber leider ist das nicht der Fall. Das Dateisystem FAT (FAT32) ist sehr veraltet. Außerdem ist es für Wechselmedien wie SD-Karten und USB-Sticks ungeeignet, aber leider wird es hier dank Windows immer noch verwendet. Mit der Einführung der NT-Plattform führte Microsoft das NTFS-Dateisystem ein, das sich dann mit der Veröffentlichung von Windows XP durchsetzte. Dies war eine ordentliche Verbesserung von Microsoft gegenüber FAT, aber leider auch eine Verschlechterung, dass Windows-Benutzer bis heute nicht in der Lage sind, die Vorteile dieser Funktionen zu nutzen. Aber auch NTFS ist inzwischen veraltet und hat nicht die gleichen Möglichkeiten wie die neuen Linux-Dateisysteme. Ich sage Linux, aber viele von ihnen wurden ursprünglich für verschiedene Unix-Systeme entwickelt, aber sie wurden auch auf Linux portiert. Das wahrscheinlich am meisten verwendete Dateisystem unter Linux ist ext (derzeit Version 4), und ReiseFS wird viel benutzt, das aber wahrscheinlich im Schwinden begriffen ist. Andere Dateisysteme sind zum Beispiel XFS oder das von mir verwendete JFS. Diese Dateisysteme sind modern, leistungsfähig, stabil und wurden so konzipiert so konzipiert, dass der Benutzer in Zukunft nicht an seine Grenzen stoßen wird. Aufgrund von mobilen Geräten und Flash-Laufwerken, die sich in ihrer Funktionalität von normalen Laufwerken unterscheiden, wurden andere neue Dateisysteme entwickelt, die speziell für Flash-Speicher entwickelt wurden. Als Hauptbeispiel, mit dem ich Erfahrung habe, möchte ich JFFS anführen.

Neuheiten bei Dateisystemen

Aber es ist sinnlos, still zu stehen. Eine weitere neue Dateisystem-Idee in einem realen Einsatz wurde von Sun (jetzt Oracle) mit ZFS gebracht. Seine Verwendung in Linux ist jedoch aus lizenzrechtlichen Gründen problematisch, und ein ähnliches Dateisystem war weder für Linux noch für ein anderes Betriebssystem verfügbar. Daher wurde das Btrfs-Dateisystem entwickelt. Die Fähigkeiten von Btrfs sind breit gefächert, es kann Snapshots erstellen und verwendet COW. Mich hat jedoch die Tatsache fasziniert, dass es sowohl für traditionelle Spinning Disks als auch für Flash-Laufwerke optimiert ist, RAID ist direkt im Dateisystem implementiert (bisher nur RAID0 und RAID1) und für mich das Interessanteste, ist, dass es Prüfsummen über einzelne Datenblöcke durchführt.

Festplattenqualität

Eine kleine Abschweifung über Festplatten

In letzter Zeit geht es mit der Qualität von Festplatten immer weiter bergab und mein Vertrauen in sie ist gering.
Mit zunehmender Kapazität und damit zunehmender Datendichte steigt auch das potentielle Problem mit der Festplatte. Auch bei Festplatten gab es schon immer eine versteckte Datenverschlechterung. Nichts ist dauerhaft, alles ändert sich mit der Zeit... Die Festplatten selbst führen Prüfsummen durch und sind so in der Lage, die Daten zu korrigieren und dann das Problem zu melden. Allerdings ist die Reparatur nicht immer erfolgreich, so dass die betreffende Datei irreversibel beschädigt sein kann. Die Festplatten-Firmware führt diese Prüfungen durch und zeichnet die Informationen auf. Dies wird von S.M.A.R.T.. Aber S.M.A.R.T. ist nicht immer zuverlässig. Ich bin sogar auf Informationen gestoßen, dass einige Laufwerke von Western Digital diese Probleme heimlich lösen. Wenn es nicht gelingt, den Block zu reparieren, wird ein leerer Datenblock zurückgegeben und und das Laufwerk informiert Sie überhaupt nicht über das Problem. Möglicherweise gibt es noch andere Probleme mit dem Laufwerk, die aber nicht unbedingt durch das Laufwerk selbst verursacht werden. Das Problem kann in einem anderen Teil der Computerhardware liegen, wie z. B. ein IDE/SATA-Controller, ein defektes Kabel oder ein Softwarefehler.

Ich habe derzeit das Problem, dass sich nach der Überprüfung der Integrität von RAID1 herausgestellt hat, dass einige Blöcke nicht übereinstimmen, aber es ist im Grunde unmöglich zu sagen, um welche Blöcke es sich handelt und zu welcher Datei sie gehören. Bei der Verwendung von RAID1 und Btrfs, das Prüfsummen durchführt, funktioniert dies jedoch viel besser. Wenn ein fehlerhafter Datenblock gelesen wird, wird der Fehler erkannt und der Block wird von der zweiten Platte gelesen und der fehlerhafte Block auf der ersten Platte repariert :-). Und das ist meine Motivation, mit Btrfs zu arbeiten.

Test Btrfs

Ein einfacher Test von Btrfs in RAID1 und durch Überprüfung der realen Daten.
Durchgeführt auf Mageia3 Distribution: Btrfs v0.20-rc1, Kernel 3.8.13.4-desktop-1.mga3.

Erstellen eines Btrfs-Dateisystems mit RAID1 auf zwei Partitionen verschiedener Festplatten:
mkfs.btrfs -m raid1 -d raid1 /dev/sdb2 /dev/sdc2 -L btrfs2
Hängen Sie das Dateisystem ein:
mount /dev/sdc2 /mnt/btrfs2/
Daten kopieren:
cp Mageia-4-alpha3-i586-DVD.iso /mnt/btrfs2/
Überprüfen des RAID-Status, der Informationen über volle Festplatten und anderer Informationen:
btrfs dateisystem df /mnt/btrfs2
btrfs filesystem show
Mit diesem Befehl habe ich eine Datenbeschädigung auf einer Platte durchgeführt:
dd if=/dev/zero of=/dev/sdb2 bs=1MB count=1000
So führe ich einen Datenlesevorgang durch:
cat /mnt/btrfs2/Mageia-4-alpha3-i586-DVD.iso-copy >/dev/null
Dann im Kernel-Log (für mageia /var/log/kernel/info.log ), debian (/var/log/kern.log), können wir Informationen über nicht übereinstimmende Prüfsummen und Informationen über den Ort des Blocks sehen. Und dann Informationen über Patches und welche Sektoren betroffen sind:
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671612928 csum 2566472073 private 2778140509
Oct 25 15:28:49 localhost kernel: btrfs csum fehlgeschlagen ino 260 off 671617024 csum 2566472073 private 2800729912
Oct 25 15:28:49 localhost kernel: btrfs csum fehlgeschlagen ino 260 aus 671621120 csum 2566472073 privat 1522128662
Oct 25 15:28:49 localhost kernel: btrfs csum fehlgeschlagen ino 260 off 671674368 csum 2566472073 private 2448968283
Oct 25 15:28:49 localhost kernel: btrfs csum fehlgeschlagen ino 260 aus 671752192 csum 2566472073 privat 1296282567
Oct 25 15:28:49 localhost kernel: btrfs csum fehlgeschlagen ino 260 off 671756288 csum 2566472073 private 2828806260
Oct 25 15:28:49 localhost kernel: btrfs csum fehlgeschlagen ino 260 off 671760384 csum 2566472073 private 1593117388
Oct 25 15:28:49 localhost kernel: btrfs csum fehlgeschlagen ino 260 off 671764480 csum 2566472073 private 4136347329
Oct 25 15:28:49 localhost kernel: btrfs csum fehlgeschlagen ino 260 aus 671817728 csum 2566472073 privat 2889709515
Oct 25 15:28:49 localhost kernel: btrfs csum fehlgeschlagen ino 260 aus 671821824 csum 2566472073 privat 3334484093
Oct 25 15:28:49 localhost kernel: btrfs bad tree block start 0 18904940544
Oct 25 15:28:53 localhost kernel: btrfs Lesefehler korrigiert: ino 260 off 674168832 (dev /dev/sdb2 sector 1849600)
Oct 25 15:28:53 localhost kernel: btrfs Lesefehler korrigiert: ino 260 off 674172928 (dev /dev/sdb2 sector 1849608)
Oct 25 15:28:53 localhost kernel: btrfs Lesefehler korrigiert: ino 260 off 679321600 (dev /dev/sdb2 Sektor 1859664)
Oct 25 15:28:53 localhost kernel: btrfs Lesefehler korrigiert: ino 260 aus 671481856 (dev /dev/sdb2 Sektor 1844352)
Oct 25 15:28:53 localhost kernel: btrfs Lesefehler korrigiert: ino 260 off 679243776 (dev /dev/sdb2 Sektor 1859512)
Oct 25 15:28:53 localhost kernel: btrfs Lesefehler korrigiert: ino 260 aus 671485952 (dev /dev/sdb2 Sektor 1844360)
Oct 25 15:28:53 localhost kernel: btrfs Lesefehler korrigiert: ino 260 off 679247872 (dev /dev/sdb2 Sektor 1859520)
Oct 25 15:28:53 localhost kernel: btrfs Lesefehler korrigiert: ino 260 off 679747584 (dev /dev/sdb2 Sektor 1860496)
Oct 25 15:28:53 localhost kernel: btrfs Lesefehler korrigiert: ino 260 off 671490048 (dev /dev/sdb2 Sektor 1844368)
Oct 25 15:28:53 localhost kernel: btrfs Lesefehler korrigiert: ino 260 off 679751680 (dev /dev/sdb2 Sektor 1860504)

Btrfs einrichten

Ich habe mich also entschieden, Btrfs auf der Backup-Platte und auf der Home-Partition einzusetzen. Nicht auf der Datenpartition, weil ich dort RAID5 habe, was Btrfs noch nicht direkt kann, aber es ist bereits in Entwicklung. Aktuelle Version in Debian Wheezy: Kernel 3.2.0-4-686-pae, Btrfs v0.19.

Ich plane auch, Btrfs-Funktionen für Backups zu nutzen, sowohl auf der Home-Partition als auch auf der Backup-Platte.
Bei Btrfs ist es kompliziert mit dem belegten und freien Speicherplatz, aber es ist eine Schande, dass sogar im Dump, wenn man RAID1 benutzt, die Größe der gesamten Platte nicht korrekt angezeigt wird, Es wird die Summe angezeigt, als ob es ein RAID0 gäbe.

Im Falle eines Problems kann das Dienstprogramm btrfs-recover verwendet werden, um die Daten wiederherzustellen.

Nach meinen ersten erfolgreichen Erfahrungen mit BTRFS setze ich es seit 2014 wo immer möglich ein. Sowohl auf der Systempartition, der Datenpartition als auch auf den Backup-Platten. Dank BTRFS ist es sehr einfach und effizient, sowohl System als auch Daten in kürzester Zeit zu sichern.

Weitere Links mit Informationen:
abclinux - Btrfs
Die offizielle Btrfs-Seite von Oracle
Anfänger-Leitfaden zu Btrfs

OpenAlt 2017 - BTRFS Vortrag

Eine Aufzeichnung meines Vortrags über Btrfs und Backup:

Schulung

Um Ihre IT-Abteilung weiterzuentwickeln, können Sie mich gerne kontaktieren, um eine BTRFS-Dateisystem-Schulung anzufordern.

Video zur Verwendung von BTRFS

Live-Stream auf BTRFS-Dateisystem gefilmt mit Eken H9R:

RAID1 und Blöcke

Die grundlegende Implementierung von RAID1 in einem Btrfs-Dateisystem ist, dass sich ein Block immer auf zwei Platten befindet. Das ist ein Unterschied zu traditionellen Implementierungen, bei denen sich der Block bei RAID1 immer auf N von N Platten befindet, wenn mehrere Platten verwendet werden. Im Fall von Btrfs und dem Basis-RAD1-Dateisystem befindet sich der Block immer auf zwei von N Festplatten.
Wenn der Block auf mehreren Platten liegen soll, gibt es weitere neue RAID-Implantate RAID1C3, RAID1C4 usw..

Hinweise

Microsoft hat mit Windows Server 2012 ReFS-Dateisystem, das nun moderner ist und Dinge wie Snapshots beherrschen sollte. Ich bin jedoch ein Linux- und Linux-Server-Experte, daher bewerte ich das ReFS-Dateisystem nicht, da ich keine Erfahrung damit habe.

Btrfs verwendet Synology als Standard-FS für NASs. Aber RAID wird mit mdadm aufgelöst.

RadHat hat die Brfs-Unterstützung aus dem Kernel seiner Linux-Distribution entfernt.

phoronix.com: Linux 5.5 SSD RAID 0/1/5/6/10 Benchmarks von Btrfs / EXT4 / F2FS / XFS

Ein interessantes Backup-Tool, das das Btrfs-Dateisystem als Basis nutzt, ist btrfs-sxbackup und hier ist fork btrfs-sxbackup .

Das Rockstor-Projekt verwendet das BTRFS-Dateisystem. Rockstor ist eine Software, die einen PC in ein NAS verwandelt. Es ist sicherlich eine interessante Alternative zu Synology, QNAP oder FreeNAS, das ZFS verwendet.

Wie geht es weiter?

Wenn Sie mehr über das BTRFS-Dateisystem erfahren möchten, lesen Sie meinen How-to-Serie zum Btrfs-Dateisystem.
Wenn Sie lernen wollen, wie man Btrfs benutzt, können Sie es effektiv lernen unter Btrfs-Dateisystemschulung.
Für . Beratung und individuellem Service können Sie mich gerne per E-Mail kontaktieren.

Artikel zu einem ähnlichen Thema

VMware vs. Proxmox: Leistungsvergleich
GitLab CI/CD: Testautomatisierung und Anwendungsbereitstellung
VPS von VMware zu Proxmox migrieren
VMware-Lizenzierungsänderung
Ausführen von Microsoft SQL Server unter Linux
Sicherung: der Proxmox Backup Server
Linux als Router und Firewall
Hochladen eines Docker-Images in die Docker-Registry
Linux: Verwaltung logischer Datenträger
Linux-Software-RAID
Ausführen einer Webanwendung hinter einem Proxy
Migration von Postfächern
Mehrstufige Docker-Erstellung
Sichern Ihrer Daten durch Einschalten des Computers
Podman
Importieren von Windows in die Proxmox-Virtualisierung
Docker und PHP-Mail
Proxmox-Virtualisierung
Docker und Cron
Lenovo ThinkPad X1 Carbon: Inbetriebnahme des LTE-Modems EM7544
Yocto-Projekt: Erstellen eines eigenen Betriebssystems für eingebettete Geräte
Vorbereiten eines Linux-Servers für die Ausführung einer Webanwendung in Python
Wie man eine schlechte Dateifreigabeleistung in Docker behebt
Wie man Docker richtig einsetzt
Installation von Linux auf einem dedizierten HPE ProLiant DL320e Server
Wie man eine Webanwendung einem Belastungstest unterzieht
Warum das JFS-Dateisystem verwenden
Booten von einer 4TB-Festplatte mit GTP unter UEFI
Raspberry PI
WINE - Ausführen von Windous Programmen unter Linux
GNU/Linux-Betriebssystem

Newsletter

Wenn Sie daran interessiert sind, gelegentlich Neuigkeiten per E-Mail zu erhalten.
Sie können sich registrieren, indem Sie Ihre E-Mail-Adresse eingeben News-Abonnement.


+