![Linux (Debian 9) – Root-Partition voll: Verzeichnisse von/auf externes Laufwerk verschieben](https://rvso.com/image/1711443/Linux%20(Debian%209)%20%E2%80%93%20Root-Partition%20voll%3A%20Verzeichnisse%20von%2Fauf%20externes%20Laufwerk%20verschieben.png)
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 /home
es sich nicht um einen unbedingt notwendigen Teil des Betriebssystems handelt, macht dies praktikabler als beispielsweise das Verschieben /usr
auf ein neues Gerät. Wenn Sie eine wesentliche Betriebssystemhierarchie verschieben würden, würden Sie herunterfahren und von einer anderen rescue
oder 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, /home
kö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 pwd
sich 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 /home
Hierarchie 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 rsync
Ihre /home
Hierarchie auf die SD-Karte (achten Sie auf die Schrägstriche). Nach rsync
dem 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 UUID
und bearbeiten Sie es /etc/fstab
, um einen Eintrag zum Mounten hinzuzufügen UUID
. /home
Sie finden es UUID
mit blkid
:
# blkid /dev/sdc1
/dev/sdc1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4"
Angesichts der obigen Ausgabe fstab
wü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 ext4
durch den Typ des Dateisystems ersetzen, das Sie beim mkfs
Ausführen der SD-Karte verwendet haben (und in der Ausgabe von bestätigt haben blkid
).
6) Benennen Sie das alte /home
Verzeichnis 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 .ssh
Verzeichnissen, 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.old
noch 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.safety
auch, aber es ist wahrscheinlich so klein, dass es nicht schlimm ist, es dort zu lassen.