SquashFS und AuFS

Mein Ubuntu 8.10 vom Mini (eeePC 900) hab ich nachträglich mit einem komprimierten Dateisystem ausgestattet. Der Vorteil soll sein, dass es schneller ist und weniger Strom verbraucht, inwiefern das aber auch für die SSDs gilt, weiß ich nicht. Ich habe mich dabei an eine Anleitung von ubuntuforums.org gehalten, die ich kurz auf Deutsch zusammen fassen möchte. Wer an seinem System rumfummelt, tut dies auf eigene Gefahr!

Update zur Performance am Ende

  • Vorbereitung: SquashFS und AuFS installieren.
  • Die Verzeichnisse, die man komprimieren möchte, in ein Image komprimieren. Das Beispiel beschränkt sich auf /usr, man sollte aber schon wissen, welche Verzeichnisse gefahrlos mitspielen, wenn man mehr komprimiert haben möchte.
sudo aptitude install squashfs-tools aufs-tools
sudo mksquashfs /usr /.usr.sqfs -check_data

Der zweite Befehl hat bei mir locker 20 Minuten gedauert, also ruhig mal Kaffee machen. Danach muss man auf die Root-Shell. Dazu System neu starten und nach dem BIOS, wenn man für das Bootmenü zum Escape-drücken aufgefordert, Escape drücken. In der “kernel”-Zeile “quiet splash” entfernen, “S” anfügen und mit ENTER bestätigen. Danach B drücken. In der Liste “Root” auswählen und wieder mit Enter bestätigen. Dann befindet man sich auf der Root-Shell, wo es dann normal weiter geht.

  • Alte /usr retten
  • Neues (leeres) /usr für den Mountpunkt anlegen
  • Zwei Verzeichnisse zum Mounten des Image und als Zielverzeichnis für Schreiboperationen anlegen
  • fstab editieren, damit Image entsprechend gemounted wird und damit das gemountete Image und das Schreibziel in /usr zusammengeführt.
mv /usr /usr-old
mkdir /usr
mkdir -p /var/squashed/{ro,rw}
nano -w /etc/fstab

In die fstab werden nun folgende Zeilen eingefügt.

/.usr.sqfs  /var/squashed/ro  squashfs  loop,ro  0 0
aufs  /usr  aufs  br:/var/squashed/rw=rw:/var/squashed/ro=ro  0 0

Mit strg+x speichern und beenden.

Das war es auch schon. Jetzt sollte nach einem Neustart (in der Root-Shell exit) alles so sein, wie vorher. Auf näheres geht der Original-Beitrag, der oben verlinkt ist, ein. Wenn nun alles rund läuft, kann man auch /usr-old entfernen.

Updates werden fortan in /var/squashed/rw geschrieben. Da aber die vermeintlich ersetzten Dateien weiterhin (auch) im schreibgeschützen Image liegen, möchte man vielleicht das Image aktualisieren. Dazu kann man einfach das /usr-Verzeichnis erneut komprimieren und auf der Root-Shell das alte, durch das neue ersetzen und /var/squashed/rw leeren. Auch hier empfiehlt es sich zuerst das alte Verzeichnis und Image nur zu verschieben, falls es zu Problemen kommt.

Grüße,
KingCrunch

Update1:
Der eeePC lief eindeutig nicht schneller. Eine Aufzeichnung per BootChart zeigte auch, dass der kleine Prozessor auch schon bei unkomprimierten Dateisystemen das Nadelöhr darstellte, die SSD war nur für ungefähr 1 bis 2 Sekunden der Engpass. Das hat sich allerdings auch mit komprimierten Dateisystemen nicht wesentlich verändert. Zum Test hab ich wie im oben verlinkten Benchmark-Beitrag auch /lib, /bin, /sbin und /opt verpackt.


Bad Behavior has blocked 112 access attempts in the last 7 days.