Verschieben von Partitionen in die Root-Partition

Verschieben von Partitionen in die Root-Partition

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 /varwahrscheinlich 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 usrPartition und verschiebe dein neues Verzeichnis nach usr. Vergiss nicht, /etc/fstabanschließend dein zu bearbeiten.

Antwort2

  1. Zuerst sollten Sie immer prüfen, ob Sie genügend freien Speicherplatz haben. Diesmal ist dies der Fall.

  2. Ü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.

  1. /etc/fstabVergessen Sie nicht , die Änderungen vorzunehmen .
  2. 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 werden fdisk -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.

verwandte Informationen