Neues bei Fedora 13, Teil 1: Dateisystem-Rollbacks mit Btrfs-Snapshots

27.05.2010

 

Zu den neuen Features von Fedora 13 gehören Rollbacks des Dateisystems mit Btrfs-Snapshots. Damit wird das Filesystem im aktuellen Zustand eingefroren und der Administrator kann später zu diesem Zustand zurückkehren, indem er den Snapshot mountet. Durch die Copy-on-Write-Strategie von Btrfs nimmt jeder Snapshot nur soviel Platz in Anspruch, wie die Änderungen gegenüber der Vorversion belegen.

Um davon Gebrauch zu machen, muss eine Partition in Btrfs formatiert sein, was sich mit "mkfs.btrfs" erreichen lässt. Im Beispiel haben wir Fedora gleich auf einer Btrfs-Partition installiert, um ein reales Anwendungsszenario nachzubilden. Achtung: Wer das nachmachen will, sollte sich im klaren darüber sein, dass Btrfs noch nicht völlig ausgereift ist, es also zu Datenverlusten kommen kann. Um Fedora 13 auf ein Btrfs zu installieren, muss man die Installations-DVD mit dem Boot-Parameter "btrfs" starten. Später steht dann im Disk-Tool auch Btrfs zur Auswahl. Wir haben sowohl die Root- wie auch die Home-Partition auf Btrfs installiert, allerdings ist dann noch eine Boot-Partition beispielsweise mit Ext3 nötig, weil die stabile Version von Grub kein Btrfs beherrscht (es gibt allerdings bereits experimentelle Patches). Das Ergebnis der Installation sieht folgendermaßen aus:

/dev/sdc9 on / type btrfs (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") /dev/sdc8 on /boot type ext4 (rw) /dev/sdc7 on /home type btrfs (rw) ...

Jetzt lässt sich jederzeit mit dem Befehl "btrfsctl" ein neuer Snapshot anlegen:

btrfsctl -s /snapshot2 /

Das dauert nur eine Sekunde und nimmt auch keinen zusätzlichen Speicherplatz in Anspruch, solange sich die Snapshots nicht unterscheiden:

Die Fedora-Entwickler hatten für die Snapshots einen besonderen Zweck im Sinn. Sie wollten nämlich insbesondere bei der Software-Installation den Rollback zu einer früheren System-Version ermöglichen. Deshalb haben sie ein Yum-Plugin entwickelt, das automatisch bei jeder Paketinstallation einen Snapshot anlegt. Der folgende Befehl installiert dieses Plugin:

yum install yum-plugin-fs-snapshot

Wenn Sie nun mit Yum ein Paket installieren, erzeugt das Programm automatisch einen Btrfs-Snapshot, wie der folgende Screenshot zeigt:

Tatsächlich schießt das Programm etwas übers Ziel hinaus und macht sogar einen Snapshot der Home-Partition.

Schwieriger wird es nun, zum vorigen Zustand zurückzukehren, denn leider konnten die Fedora-Entwickler ihren Plan nicht ganz fertig stellen. Eigentlich sollte das Festplatten-Verwaltungsprogramm Palimpsest dem Administrator eine Auswahl von Snapshots anbieten, die Fedora beim nächsten Booten als Root-Dateisystem verwendet. Die entsprechende Seite im Fedora-Wiki vermerkt aber "Palimpsest code is not finished, and will be deferred until F14."

Für Testzwecke bleibt aber noch der manuelle Weg über einen Bootparameter für den Kernel. Dazu muss man im Grub-Menü dem Kernel den passenden Parameter mitgeben, um ein Subvolume zu mounten, was in dieser Hinsicht einem Snapshot entspricht:

linux vmlinuz-2.6.33.3-85.fc13.i686.PAE root=/dev/sdc8 rootflags=subvol=yum_20100526201416

Wer beim Shell-Skripten geschickt ist, kann sich relativ leicht ein Skript schreiben, das eine Auswahl von Snapshots anbietet und dann die Grub-Konfiguration entsprechend umschreibt.  Fertig ist das auf Btrfs basierende Root-Dateisystem mit platzsparender und schneller Rollback-Funktion.

Mehr Informationen zu Btrfs gibt es im Btrfs-Wiki.

 

 

 

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019