Ich hänge derzeit an einem restriktiven Partitionierungsschema fest, das meine Partitionen voll macht. Es sieht folgendermaßen aus:
/dev/sda7 870G 315G 511G 39% /
/dev/sda6 2.0G 271M 1.6G 15% /tmp
/dev/sda3 15G 13G 1.5G 90% /usr
/dev/sda2 15G 8.6G 5.0G 64% /var
/dev/sda1 99M 36M 58M 39% /boot
tmpfs 7.9G 0 7.9G 0% /dev/shm
Ich möchte die Daten in die Root-Partition verschieben /usr
(und /var
wahrscheinlich auch dorthin). Die Partitionen selbst interessieren mich nicht wirklich, daher ist eine Zusammenführung nicht erforderlich.
Was wäre hierfür der beste Ansatz? Derzeit ist mein Plan folgender:
cp -R /usr /newusr
umount /usr
mv /newusr /usr
Kann es wirklich so einfach sein oder übersehe ich etwas?
Antwort1
Dein Ansatz ist richtig. Erstelle ein Verzeichnis auf der Root-Partition, kopiere deine Daten dorthin, deinstalliere die usr
Partition und verschiebe dein neues Verzeichnis nach usr
. Vergiss nicht, /etc/fstab
anschließend dein zu bearbeiten.
Antwort2
Zuerst sollten Sie immer prüfen, ob Sie genügend freien Speicherplatz haben. Diesmal ist dies der Fall.
Über das Exemplar:
Nicht so einfach. Es gibt spezielle Dateien, deren spezielle Attribute nicht immer korrekt kopiert werden. Statt cp -R
, verwenden Sie
cp -vfa /usr /newusr
Wenn Sie sehen möchten, was aktuell getan wird, können Sie dies mit dem Flag „-v“ erreichen.
/etc/fstab
Vergessen Sie nicht , die Änderungen vorzunehmen .- ACHTUNG: Nach einer Neupartitionierung kann der Kernel Ihre neue Partitionstabelle nicht immer erneut lesen, und daher ist es möglich, dass er weiterhin Ihre alte verwendet! Das ist sehr gefährlich! Die Version des Kernels über die aktuelle Partitionstabelle finden Sie unter
/proc/partitions
, und die Partitionstabelle auf der Festplatte kann mit einem gelesen werdenfdisk -l /dev/sda
. Wenn es eine Nichtübereinstimmung mit der Partition gibt, die Sie gerade ändern möchten, führen Sie am besten einen Neustart durch.
Antwort3
Um dies zu erreichen, müsste es im Einzelbenutzermodus oder mithilfe einer Live-CD erfolgen, die Sie im Internet finden.
Darüber hinaus ist es möglich, dies zur Laufzeit durchzuführen (natürlich ein wenig riskant), aber ich denke, dieser Weg funktioniert nur für /var und nicht für/usr, einige Laufzeitbibliotheken hängen von diesem Ordner ab. Sie können vorher auf einer Testmaschine ausprobieren, ob es funktioniert.
Zunächst einmalmussÜberprüfen Sie, ob alle Prozesse/Dienste das Verzeichnis verwenden/darin schreiben, das Sie verschieben möchten.
lsof | grep -E '/usr|/var'
Im Allgemeinen wird /var immer noch für PID- und Sock-Dateien verwendet./usrund jede andere Bibliothek wird es brauchen.
Stoppen/beenden Sie daher die angezeigten Dienste und Prozesse.
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
cupsd 723 root 5u REG 8,1 0 8651393 /var/log/cups/error_log
cupsd 723 root 6u REG 8,1 0 8651908 /var/log/cups/page_log
cupsd 723 root 12u unix 0xffff88020d97d780 0t0 9958 /var/run/cups/cups.sock
In diesem kurzen Beispiel läuft der Cups-Daemon und verwendet diese Verzeichnisse. Wenn Sie sie stoppen, erscheinen sie nicht in der LSOF-Ausgabe.
Danach benötigen Sie eine Kopie Ihrer aktuellen Daten. Ich schlage vor, rsync statt cp zu verwenden (um alles beizubehalten, Berechtigungen, symbolische Links usw.).
mkdir /mnt/var
mkdir /mnt/usr
Machen Sie Ihr Backup
rsync -avz /var/* /mnt/var
rsync -avz /usr/* /mnt/usr
Ordner aushängen
umount /var
umount /usr
Daten wiederherstellen
rsync -avz /mnt/var/* /var
rsync -avz /mnt/usr/* /usr
Bearbeiten Sie Ihre/etc/fstabDatei und kommentieren/löschen Sie die Einträge, bei denen/varUnd/usrwo es montiert werden soll.
Anschließend können Sie alle angehaltenen Dienste wieder starten oder Ihren Rechner neu starten./usrfunktioniert nicht, Sie können einen Daemon nicht stoppen (vielleicht können Sie ihn nicht beenden, weil er von der Init-PID abhängt), die einzige Möglichkeit besteht in der Verwendung einer LiveCD.
Obwohl Sie nicht erwähnt haben, um welchen Maschinentyp es sich handelt (Ihr PC, Büromaschine, Server usw.), hängt dies davon ab, ob die Aufgabe auf die formal mögliche Weise ausgeführt wird.