Das Verzeichnis VAR inkl. allen Logs auf einen USB-Stick auslagern.
Jetzt werde sich sicher ein paar Leute fragen warum ich das machen sollte. Das wäre eine berichtigte Frage. Wirklich notwendig ist das nicht. Es geht mir nur darum wie man Lebensdauer der im Pi eingestzten SD-Karte verlängern kann. Wie sich die meisten wissen werden in dem "/var" Verzeichnis unter anderem alle Log Dateien geschrieben und zu viele Schreibvorgänge zerstören irgendwann die SD-Karte. Darum ist es sinnvoll die Dateien in denen wirklich viel geschrieben wir entweder auszulagern oder die Schreibvorgänge enorm zu reduzieren. Bei dem reduzieren habt Ihr natürlich den Nachteil das nicht alles protokolliert wird was eine Fehlersuche enorm erschwert bzw. unmöglich macht. Darum ist dann sinnvoll diese Dateien auszulagern.
So nun aber genug geschrieben.
1.) Als erstes müssen wir den Namen des USB-Sticks herausfinden.
ls -Al /dev/disk/by-uuid
Nun wissen wir das der Stick sda1 (Ich nehme jetzt einfach mal an der USB-Stick heißt "sda1") heißt. Zusätzlich sehen wir auch die UUID des Sticks, diese benötigen wir später noch.
2.) Als nächstes formatieren wir den USB-Stick mit dem filesystem ext4
sudo mkfs.ext4 /dev/sda1
Variante1
Als erstes wechseln wir zu dem Benutzer root.
sudo su
3.) Dann legen wir ein Verzeichnis an und mounten den USB-Stick auf diese Verzeichnis
mkdir /mnt/var
mount /dev/sda1 /mnt/var
4.) Wenn das erledigt ist wechseln wir in den „single-user“ Modus. Damit verhindern wir das irgendetwas gerade in das Verzeichnis „var“ schreibt.
init 1
5.) Nun wechseln wir in das Verzeichnis „var“ und kopieren dies auf den USB-Stick.
cd /var
cp -ax * /mnt/var
6.) Jetzt werden wir den Ordner „var“ umbenennen, damit wir eine Sicherungskopie dieses Ordners haben und erstellen hier wieder das Verzeichnis „var“ neu.
cd
sudo mv /var /var.old
mkdir /var
7.) Wir hängen den USB-Stick wieder aus und mounten als nächstes dann den Stick neu aber auf das neue "var" Verzeichnis.
umount /dev/sda1
mount /dev/sda1 /var
8.) Damit das zukünftig automatisch nach jedem Bootvorgang passiert schreiben wir folgendes in die /etc/fstab:
sudo nano /etc/fstab
UUID=Hier muss Eure UUID stehen /var ext4 defaults,noatime,nodiratime,relatime 0 2
Die UUID haben wir vorhin ausgelesen mit dem Befehl.
ls -Al /dev/disk/by-uuid
Ergänzt die Fehlenende UUID mit Eurer UUID in der /etc/fstab:
9.) Als letztes starten wir den Pi neu.
sudo reboot
Eine kurze Erklärung warum ich hier die UUID nehme und nicht den Namen „sda1“.
Der Laufwerksnamen „sda1“ ist dynamisch, das soll heißen wenn Ihr später mal noch einen USB-Stick an den Pi anschliest kann es passieren das der neue Stick den Laufwerksnamen „sda1“ bekommt. Das wäre fatal. Darum ist es immer besser man benennt den Stick mit der UUID. Diese UUID ist einmalig und kommt mit Sicherheit nicht ein zweites Mal vor.
Das war es schon.
P.S.
Das kann man natürlich auch noch mit anderen Verzeichnissen machen.
Variante2
3.) Auch hier wechseln wir zu root.
sudo su
4.) Wir binden verschiedene Verzeichnisse auf der SD-Karte an verschiedene Verzeichnisse auf den USB-Stick.
Wir verwenden die Schritte 1 und 2 von oben ebenfalls.
5.) Dann legen wir ein Verzeichnis an und mounten den USB-Stick auf diese Verzeichnis
mkdir /mnt/binds
mount /dev/sda1 /mnt/binds
6.) Wenn das erledigt ist wechseln wir in den „single-user“ Modus. Damit verhindern wir das irgendetwas gerade in das Verzeichnis „var“ schreibt während wir den Ordner kopieren und umbenennen.
init 1
7.) Nun kopieren wir das Verzeichnis "var" mitsamt dem Inhalt auf den USB-Stick.
cd /var
cp -ax * /mnt/binds
8.) Jetzt werden wir den Ordner „var“ umbenennen, damit wir eine Sicherungskopie dieses Ordners haben und erstellen hier wieder das Verzeichnis „var“ neu.cd
mv /var /var.old
mkdir /var
9.) Als letztes starten wir das System neu:
reboot
Das kann man dann auch mit anderen Verzeichnissen machen, tauscht dafür nur immer den Namen der Verzeichnisse hier aus der Anleitung aus.
Hier mal ein Beispiel wie die /etc/fstab aussehen könnte:
UUID=Hier muss Eure UUID stehen /mnt/binds ext4 noatime,nodiratime,relatime 0 2
# Binds
/mnt/binds/var var none bind 0 0
/mnt/data/home home none bind 0 0
/mnt/data/usr usr none bind 0 0
Es gibt auch noch eine 3. Variante hier werden dann Symlinks gesetzt. Diese werde ich zu gegebener Zeit noch mit hier eintragen.
Das war es auch schon wieder.
Als Empfehlung für einen SLC USB-Stick kann ich Euch den Mach X-treme 8GB empfehlen.
Mach-Xtreme
Viel Spass.