Hallo,
anlässlich des aktuellen Distribution-Upgrades auf Leap 15.2 führe ich gerade eine Diskussion auf der Wiki-Seite, inwieweit das Verschieben von /var/cache zu einem separaten Subvolume ein nötiger Schritt ist. Mir erscheint die Anleitung sehr kompliziert (s.u.). Deshalb habe ich beim Upgrade darauf verzichtet und hatte damit an sich auch keine Probleme im laufenden System. Jetzt hat sich herausgestellt, dass zwei meiner Systeme bereits schon das empfohlene Subvolume für /var enthalten. Bei einem dritten, was ich schon länger betreibe, besteht offenbar Handlungsbedarf.
Deshalb meine Frage: ist die hier angeführte Anleitung vollständig (ich bin mir unsicher konkret in Bezug auf das Editieren der fstab und die korrekte Verwendung der UUID)?
Alternativ: wie müsste ich vorgehen, um das empfohlene Subvolume für /var zu erhalten (dazu bedarf es wohl insbesondere auch der nötigen Unterverzeichnisse in var)? Hier würde ich mich über eine detaillierte Anelitung freuen!
Besten Dank für die Aufmerksamkeit,
Fips
–
https://de.opensuse.org/SDB:Distribution-Upgrade
Verschieben von /var/cache zu einem separaten Subvolume
Notiz: Wenn das root-Dateisystem nicht Btrfs ist, diesen Abschnitt überspringen und weiter zu Schritt 4.
/var/cache beinhaltet viele sehr unbeständige Daten, wie z.B. den Zypper-Cache mit RPM-Paketen in unterschiedlichen Versionen für jedes Update. Als Resultat der Datenspeicherung, was meistens redundant aber auch unbeständige ist, kann die Menge an Festplattenplatz, die ein Snapshot belegt, sehr schnell wachsen.
Um dieses Problem zu beheben wird /var/cache auf ein separates Subvolume verschoben. Bei frischen Installationen von openSUSE Leap wird das automatisch gemacht. Für eine Konvertierung des existierenden root-Dateisystems führt man folgende Schritte durch:
- Finde den Geräte-Namen (z.B. /dev/sda2 oder /dev/sda3) des root-Dateisystems heraus:
df /
- Identifiziere das Eltern-Subvolume aller anderen Subvolumes. Für Installationen auf Basis von openSUSE 15.x ist das ein Subvolume mit @ im Namen. Zur Überprüfung, ob es ein Subvolume mit @ haben, verwendet man:
btrfs subvolumelist / | grep ‘@’
- Wenn die Ausgabe von diesem Befehl leer ist, existiert kein Subvolume mit @ im Namen. In diesem Fall kann man mit der Subvolume-ID 5, die in älteren Versionen von openSUSE verwendet wird, weitermachen.
- Wenn ein Subvolume mit einem @ im Namen exitiert, wird es in einem temporären Mountpoint gemountet:
mount /dev/<root-device> -o subvol=@ /mnt
Hat man kein Subvolume mit einem @ im Namen haben, mountet man stattdessen die Subvolume-ID 5: mount /dev/<root-device> -o subvolid=5 /mnt
- /mnt/var/cache kann schon existieren und es könnte das gleiche Verzeichnis wie /var/cache sein. Um Datenverlust zu vermeiden, kann man es verschieben:
mv /mnt/var/cache /mnt/var/cache.old
- Dann erstellt man ein neues Subvolume:
btrfs subvol create /mnt/var/cache
- Wenn jetzt ein Verzeichnis /var/cache.old vorhanden ist, wird es an den neuen Ort verschoben:
mv /var/cache.old/* /mnt/var/cache
Ist das nicht der Fall, gibt man stattdessen folgendes ein: mv /var/cache/* /mnt/var/cache/
- Nach dem Verschieben kann man /mnt/var/cache.old entfernen:
rm -rf /mnt/var/cache.old
- Dann hängt man das Subvolume aus dem temporären Mountpoint aus:
umount /mnt
- Das neue Subvolume /var/cache erhält einen Eintrag in der /etc/fstab. Man kann dafür das schon vorhandenes Subvolume als Template kopieren. Die UUID muss unberührt bleiben (das ist die UUID des Root-Dateisystems) und der Name vom Subvolume und seinem Mountpoint einheitlich zu /var/cache geändert werden.
- Das neue Subvolume mus so wie in /etc/fstab festgelegt gemountet werden:
mount /var/cache