Linux (Debian 9) – Root-Partition voll: Verzeichnisse von/auf externes Laufwerk verschieben

Linux (Debian 9) – Root-Partition voll: Verzeichnisse von/auf externes Laufwerk verschieben

Ich habe ein Debian 9-System, das auf einem einzelnen Speichergerät installiert ist.

Die Größe des Geräts beträgt etwas weniger als 4 GB und es gibt eine einzelne Partition, auf die das Debian-Image geschrieben wurde.

Ich kann dieses Gerät nicht entfernen. Es ist Teil eines eingebetteten Systems und dauerhaft angeschlossen.

Ich kann dem System jedoch eine SD-Karte hinzufügen, da ein freier Steckplatz für die Benutzererweiterung bereitgestellt wird, falls ein größeres FS erforderlich ist.

Ich möchte eine einzelne Partition auf einer SD-Karte erstellen, wahrscheinlich eine mit 16 GB.

Ich möchte wissen, welche Verzeichnisse ich sicher auf die SD-Karte verschieben kann. Und wie kann ich das tun?

Beispielsweise verschieben viele Linux-Systeme den /home-Ordner auf ein separates physisches Gerät oder eine separate Partition.

Ich weiß also, dass ich ein /home-Verzeichnis im Stammverzeichnis des SD-Dateisystems erstellen kann. Was ich nicht weiß, ist, wie ich dem Debian-System mitteile, dass /home verschoben wurde. Vermutlich muss ich den gesamten Inhalt von /home auf dem ursprünglichen Dateisystem auf die neue SD-Karte kopieren, bevor ich Debian mitteile, dass es verschoben wurde?

Ich vermute, dass ich auch die Ordner /tmp und /var verschieben kann.

Gibt es noch etwas anderes, das ich gefahrlos verschieben kann? Ich gehe davon aus, dass ich /bin, /sbin oder /root unter keinen Umständen verschieben sollte?

Ich habe schon früher mit solchen Systemen gearbeitet, bei denen sich /home auf einer anderen Festplatte befand, aber ich musste es nach Abschluss einer Installation nie verschieben.

Ich wusste auch nicht, nach welchen Schlüsselwörtern ich suchen sollte, um diese Informationen zu finden – also entschuldigen Sie, wenn die Anfrage ein wenig amateurhaft erscheint. Danke

Antwort1

Die Tatsache, dass /homees sich nicht um einen unbedingt notwendigen Teil des Betriebssystems handelt, macht dies praktikabler als beispielsweise das Verschieben /usrauf ein neues Gerät. Wenn Sie eine wesentliche Betriebssystemhierarchie verschieben würden, würden Sie herunterfahren und von einer anderen rescueoder Live-CD oder einem USB-Dateisystem booten wollen. Das könnte auf Ihrem eingebetteten Gerät schwierig bis unmöglich sein.

Aber da Sie umziehen, /homekönnen wir vorsichtig vorgehen.

Booten Sie zunächst im Einzelbenutzermodus. Stoppen Sie nicht unbedingt erforderliche Dienste, insbesondere alle, die in Dateien unter schreiben könnten /home. Stellen Sie sicher, dass pwdsich Ihr nicht unter /home befindet, und erlangen Sie dann Rootzugriff:

$ cd /tmp
$ sudo -i

Dann:

1) Legen Sie Ihre SD-Karte ein und erstellen Sie eine Partition. Nachdem Sie eine Partition erstellt haben, erstellen Sie darauf ein Dateisystem, das Ihre neue /homeHierarchie enthält. Nehmen wir an, Ihre SD-Kartenpartition ist das Gerät/dev/sdc1

# mkfs.ext4 /dev/sdc1

2) Mounten Sie das neue Dateisystem auf /mnt:

# mount /dev/sdc1 /mnt

3)KOPIEREN(nicht verschieben) oder rsyncIhre /homeHierarchie auf die SD-Karte (achten Sie auf die Schrägstriche). Nach rsyncdem ing heben Sie die SD-Karte auf:

# rsync -HAXav /home/ /mnt/
# umount /mnt

4) Sichern Sie Ihre/etc/fstab

# cp -p /etc/fstab /etc/fstab.safety

5) Identifizieren Sie das Dateisystem der SD-Karte UUIDund bearbeiten Sie es /etc/fstab, um einen Eintrag zum Mounten hinzuzufügen UUID. /homeSie finden es UUIDmit blkid:

# blkid /dev/sdc1
/dev/sdc1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4"

Angesichts der obigen Ausgabe fstabwürde Ihre neue Zeile wie folgt aussehen:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /home ext4 defaults 0 0

Das ist ein Ubuntu-Beispiel, da ich kein Debian-System zur Hand habe. Sie müssen den Teil xxxxx... durch die richtige UUID des SD-Kartendateisystems ersetzen und ext4durch den Typ des Dateisystems ersetzen, das Sie beim mkfsAusführen der SD-Karte verwendet haben (und in der Ausgabe von bestätigt haben blkid).

6) Benennen Sie das alte /homeVerzeichnis um:

# mv /home /home.old

7) Erstellen Sie einen neuen Einhängepunkt für die SD-Karte:

# mkdir /home

An diesem Punkt sollten Sie die SD-Karte manuell mounten können:

# mount /home

und sehen Sie sich den Inhalt darunter an /home, der mit dem Inhalt darunter identisch ist /home.old. Überprüfen Sie den Inhalt sorgfältig, einschließlich der Eigentümerschaft und Berechtigungen von Home-Verzeichnissen und .sshVerzeichnissen, da Sie sich sonst möglicherweise nicht remote anmelden können, wenn das System neu gestartet wird. Starten Sie, falls möglich, den SSHD-Dienst und testen Sie eine Remote-Anmeldung mit einem nicht privilegierten Konto.

Wenn alles gut aussieht, starten Sie neu. Wenn das System wieder hochfährt, überprüfen Sie den verfügbaren Speicherplatz in den gemounteten Dateisystemen:

# df

Sie haben noch keinen freien Speicherplatz in /, da /home.oldnoch nicht vorhanden ist. Sie sollten viel verfügbaren Speicherplatz in sehen /home:

# du -h /
# du -h /home

Wenn Sie zufrieden sind und alles gut aussieht, können Sie Folgendes entfernen /home.old:

# cd /; rm -rf home.old

Das können Sie rm /etc/fstab.safetyauch, aber es ist wahrscheinlich so klein, dass es nicht schlimm ist, es dort zu lassen.

verwandte Informationen