Btrfs / snapper und Tools

Über dieses Datei-System und seine Tools wird ja viel geredet und spekuliert, ich möchte heute ein bißchen Praktisches und Kommandos zeigen und was man im Alltag gut brauchen kann.
Vorraussetzung ist das das Paket btrfs-procs und Abhängigkeiten installiert sind, das ist auch schon alles.
man btrfs zeigt die Möglichkeiten von btrfs und die Optionen/Schalter die es gibt.
Partitionen und UUID’s kann man so anschauen:
root:~ # btrfs filesystem show /      -> oder  abgekürzt btrfs fi sh /
Label: none uuid: 957ad303-786f-4456-95b6-1942e5d1943d
Total devices 1 FS bytes used 23.90GiB
devid 1 size 40.00GiB used 26.63GiB path /dev/sda2

————————
Speicherplatz-Belegung:
root ~ # btrfs fi df /
Data, single: total=23.01GiB, used=22.75GiB
System, DUP: total=64.00MiB, used=16.00KiB
Metadata, DUP: total=1.75GiB, used=1.14GiB
GlobalReserve, single: total=400.00MiB, used=0.00B

————————
btrfs scrub start /
liest alle Daten vom Root Filesystem und verifiziert / prüft die Checksum der Dateien im Filesystem
btrfs scrub status /
gibt den derzeitigen Status von scrub ob es Fehler in den Checksums gibt z.B.
scrub status for 957ad303-786f-4456-95b6-1942e5d1943d
scrub started at Tue Apr 5 13:35:17 2016 and finished after 00:04:16<
total bytes scrubbed: 25.03GiB with 0 errors

————————
Es gibt noch mehr Schalter z.B subvolume mit dem Subvolumes aufgelistet erzeugt werden können.
root:~ # btrfs subvolume list /
ID 257 gen 115 top level 5 path @
ID 258 gen 13814 top level 257 path @/.snapshots
ID 259 gen 13839 top level 258 path @/.snapshots/1/snapshot
ID 260 gen 4138 top level 257 path @/boot/grub2/i386-pc

————————
So kommen wir jetzt mal zu Snapper (Snapshot-Tool)
http://snapper.io/
Snapper wird bei SLES (SUSE) oder openSUSE automatisch mit installiert fürs Root-Dateisystem aktiviert, so das sofortige Änderungen am System als neuer Snapshot gespeichert werden. Diese werden normalerweise unter „/.snapshots/0 angelegt.
Für andere Linux-Distributionen wie Debian und Fedora muss wahrscheinilich installiert werden.
root:~ # snapper list
Type | # | Pre # | Date | User | Cleanup | Description | Userdata
-------+-----+-------+--------------------------+------+---------+-----------------------+--------------
single | 0 | | | root | | current |
single | 1 | | Fri Mar 4 13:01:15 2016 | root | | first root filesystem |
single | 2 | | Fri Mar 4 13:14:12 2016 | root | number | after installation | important=yes
pre | 3 | | Fri Mar 4 13:25:06 2016 | root | number | zypp(zypper) | important=yes
post | 4 | 3 | Fri Mar 4 14:00:49 2016 | root | number | | important=yes

————————
Konfig anschauen:
root:~ # snapper get-config
Key | Value
-----------------------+------
ALLOW_GROUPS |
ALLOW_USERS |
BACKGROUND_COMPARISON | yes
EMPTY_PRE_POST_CLEANUP | yes
EMPTY_PRE_POST_MIN_AGE | 1800
FSTYPE | btrfs
NUMBER_CLEANUP | yes
NUMBER_LIMIT | 10
NUMBER_LIMIT_IMPORTANT | 10
NUMBER_MIN_AGE | 1800
SUBVOLUME | /
SYNC_ACL | no
TIMELINE_CLEANUP | yes
TIMELINE_CREATE | no
TIMELINE_LIMIT_DAILY | 10
TIMELINE_LIMIT_HOURLY | 10
TIMELINE_LIMIT_MONTHLY | 10
TIMELINE_LIMIT_WEEKLY | 0
TIMELINE_LIMIT_YEARLY | 10
TIMELINE_MIN_AGE | 1800

Eine tolle ausführliche Beschreibung zu weiteren Funktionen gibt’s auf:
https://en.opensuse.org/openSUSE:Snapper_Tutorial
————————
Schönste Funktion: ROLLBACK
mit snapper rollback snapshotnumber kann man das System auf einen älteren Stand zurücksetzen..
Falls ein Update oder andere System-Probleme z.b nach einer Paket-Installation  (Kernel) fehlschlägt oder das System nicht mehr  funktionstüchig ist, kann man auf den letzten Snapshot, das System wieder auf den Stand vor dem Fehler  zurückdrehen.
Es wird vor dem Rollback noch ein Snapshot von dem „aktuellen Stand”(defeketen) gemacht und dann auf dem gewünschten Snapshot zurückgerollt.
Diese Rollback-Funktion geht nur mit dem BTRFS Datei-System und nur beim Root-Filesystem.
Es ist auch möglich von einer anderen Partition z.B. /home einen Snapper -Config zu erstellen um so automatische Snappschüsse von Home-Verzeichnis zu erhalten.
snapper -c home create-config /home
Um Dateien von einem älteren Snapshot vom /home/.snapshots/1/.. zu bekommen, muss man sich den Snapshot mounten:

mount -o subvolid=XY /dev/sdXY /mnt/

Die subvolid bekommt man durch:
root:~ # btrfs subvolume list /
ID 257 gen 115 top level 5 path @

————————
Unterschiede von zwei Snapshots:
root:~ # snapper diff 3..4 | head
Binary files /.snapshots/3/snapshot/bin/tar and /.snapshots/4/snapshot/bin/tar differ
--- /.snapshots/3/snapshot/boot/.vmlinuz-4.1.15-8-default.hmac 1970-01-01 01:00:00.000000000 +0100
+++ /.snapshots/4/snapshot/boot/.vmlinuz-4.1.15-8-default.hmac 2016-01-21 10:52:47.000000000 +0100
@@ -0,0 +1 @@
+e8eaf8b2f82bb5549f9be63183feeb09ae6e5f87d737c56ee7d00d38cfa882d6
--- /.snapshots/3/snapshot/boot/System.map-4.1.15-8-default 1970-01-01 01:00:00.000000000 +0100
+++ /.snapshots/4/snapshot/boot/System.map-4.1.15-8-default 2016-01-21 10:03:17.000000000 +0100
@@ -0,0 +1,74925 @@
+0000000000000000 D __per_cpu_start
+0000000000000000 V irq_stack_union

Welche Dateien zwischen Snapshots hinzugekommen sind:
root:~ # snapper status 3..4 | head
c..... /bin/tar
+..... /boot/.vmlinuz-4.1.15-8-default.hmac
+..... /boot/System.map-4.1.15-8-default
+..... /boot/config-4.1.15-8-default
+..... /boot/do_purge_kernels
c..... /boot/grub2/grub.cfg
c..... /boot/initrd
c..... /boot/initrd-4.1.12-1-default
+..... /boot/initrd-4.1.15-8-default
+..... /boot/symvers-4.1.15-8-default.gz

————————
Löschen von Snapshots:
snapper delete 25
snapper delete  25-30  -> löscht snapshots 25 bis 30
Ich persönlich finde das Tool Klasse, es hat mir schon mal sehr wichtige Daten gerettet.
Giv’ em a try!!

Johannes Carraro
Johannes Carraro
Support Engineer

Bevor Johannes bei NETWAYS anheuerte war er knapp drei Jahre als Systemadministrator in Ansbach tätig. Seit Februar 2016 verstärkt er nun unser Managed Services Team als Systems Engineer. In seiner Freizeit spielt Johannes E-Gitarre in einer Metalband, bastelt an Linux Systemen zuhause herum und ertüchtigt sich beim Tischtennisspielen im Verein, bzw. Mountainbiken, Inlinern und nicht zuletzt Skifahren.

Meine erste Woche bei NETWAYS

meine ersten Tage bei NETWAYS waren sehr aufregend und boten einiges an Input.

Alles war neu und man weiß nicht was einem erwartet, zum Glück war ich nicht der einzige neue, mit mir waren es noch 4 weitere Kollegen aber in anderen Teams, die bei NETWAYS im Februar anfingen.

Woche KW05:
Uns wurden alle Bereiche in der Firma gezeigt, auch wo der Kaffeeautomat steht und wie der funktioniert (wichtig).

Sehr interessant war auch der Rundgang im Rechenzentrum (RZ), Kesselhaus, Dachterrasse und Lager. Vor allem das RZ war eine Sicht wert, viele Serverschränke aus denen viele LED blinkten mit ziemlich lauten Gebläse – das Ganze war schon beeindruckend.

Am Nachmittag zeigt Azubi Marius uns die Tools mit den wir in Zukunft arbeiten werden und wie man sie bedient und was man zu beachten hat. Jeder von den neuen Kollegen sollte über eins unserer Produkte ein 15 min. Referat ausarbeiten und das Produkt erklären, mein Part war OpenNebula, die Open Source Cloud, was mir sehr Spaß gemacht hat.

An den zwei restlichen Tagen der Woche rauchte uns der Kopf, denn Sebastian erklärte Tim und mir im groben die Netzwerk-Struktur von NETWAYS und einige Produkte (z.B. VLAN’s, Firewalls, Icinga, OpenNebula, Puppet, Foreman, Ceph), wie funktioniert was, viel Stoff und Input, aber sehr interessant.

Ich finde es Klasse, dass man bei NETWAYS als neuer Mitarbeiter Schulungen/Trainings bekommt, da könnte sich so manche Firma eine Scheibe abschneiden. Natürlich kann auch jeder andere Interessent auf unsere Schulungen kommen.

Woche KW06:
Anfang dieser Woche fand bei uns die Übergabe eines großen Kunden-Setups und ein Podium zu CoreOS in unserem Team statt.

Von Dienstag bis Donnerstag machen wir eine 3 tägige Puppet-Fundamentals Schulung. Dort bin ich natürlich auch dabei, ohne Puppet geht bei uns nichts 🙂

Ich bin im Support-Team und für technischen Anfragen unserer Kunden zuständig und befinde mich derzeit in der Einarbeitung. Schon bald werde ich auch die Anfragen unserer Kunden bearbeiten.

Übrigens – wir sind noch immer auf der Suche nach neuen Kollegen, vielleicht ist hier auch was dabei.

Johannes Carraro
Johannes Carraro
Support Engineer

Bevor Johannes bei NETWAYS anheuerte war er knapp drei Jahre als Systemadministrator in Ansbach tätig. Seit Februar 2016 verstärkt er nun unser Managed Services Team als Systems Engineer. In seiner Freizeit spielt Johannes E-Gitarre in einer Metalband, bastelt an Linux Systemen zuhause herum und ertüchtigt sich beim Tischtennisspielen im Verein, bzw. Mountainbiken, Inlinern und nicht zuletzt Skifahren.