So integrieren Sie / home wieder in die Hauptpartition und vergrößern dann die Partition


7

Ich habe beim Einrichten einer unserer XenServer-basierten Linux-VMs einen Fehler gemacht. Ich habe einen separaten Swap (gut) und ein großes separates / home-Verzeichnis (schlecht) erstellt, obwohl es eigentlich ein großes separates / var-Verzeichnis sein sollte.

Nachdem / var die Root-Festplatte fast gesättigt hat, möchte ich / home wieder in die Root-Partition integrieren, die alte 921 GB / home-Partition löschen und dann die Root-Partition auf 921 GB vergrößern, wobei die / swap-Partition unberührt bleibt.

Zur Zeit:

[root@ /]# df -h

Filesystem                       Size  Used Avail Use% Mounted on 
/dev/mapper/VolGroup-lv_root      50G   43G  4.0G  92% / 
tmpfs                            3.9G     0  3.9G   0% 
/dev/shm /dev/xvda1              485M   72M  388M  16% /boot 
/dev/mapper/VolGroup-lv_home     921G  200M  874G   1% /home

Um klarer zu sein, muss ich wissen, wie man / home und seinen Inhalt auf die Root-Partition (/ dev / mapper / VolGroup-lv_root) verschiebt und Linux es als Home-Verzeichnis des Betriebssystems erkennt. Löschen Sie das Verzeichnis / dev / mapper / VolGroup- lv_home-Partition, und erweitern Sie dann die Partition / dev / mapper / VolGroup-lv_root, um die zusätzlichen verfügbaren 921 GB zu belegen.

Ich bin offen für den Austausch von / home- und / var-Standorten, wenn möglich, aber dies ist ein Produktionsserver. Ich kann jedoch sofort nach Belieben Schnappschüsse machen, so dass einige Experimente bis spät in die Nacht möglich sind! ;)

Vielen Dank!

Antworten:


10

Es ist ziemlich einfach, als root:

mkdir /home2
mv /home/* /home2/
umount -fl /home
lvremove /dev/VolGroup/lv_home
mv /home2 /home
  • Bearbeiten Sie Ihre fstab und entfernen Sie den Eintrag für / dev / VolGroup / lv_home
  • Überprüfen Sie mit vgdisplay, wie viel Speicherplatz jetzt in VolGroup verfügbar ist, und fügen Sie mit lvextend so viel Speicherplatz zu lv_root hinzu
  • Verwenden Sie resize2fs oder xfs_growfs für lv_root

Vielen Dank, aber ich bekomme "Logisches Volume VolGroup / lv_home enthält ein verwendetes Dateisystem." Musste ich dies im Einzelbenutzermodus tun?
Stet

1
Ich habe die Antworten unten gemischt und mit dem aus fstab kommentierten / home neu gestartet und es dann entfernt. Vielen Dank.
Stet

Danke für die Antwort. Sehr hilfreich. Ich möchte etwas hinzufügen: Es ist besser, das "root" -Konto im "Rettungsmodus" zu verwenden, damit Sie das Home-Verzeichnis erfolgreich aushängen können (da der Root-Benutzer ein anderes Home-Verzeichnis verwendet).
MA

Laut bugzilla.redhat.com/show_bug.cgi?id=1705897 müssen wir für Centos 8 anscheinend "xfs_growfs /" (Einhängepunkt anstelle des Gerätenamens) verwenden
Khosro

4

Dieser Vorgang funktioniert, wenn die Größe Ihres Root-Dateisystems geändert werden kann (z. B. ext4).

  1. Ändern Sie einen vorhandenen Benutzer oder erstellen Sie einen neuen Benutzer, dessen Home-Verzeichnis nicht unter / home liegt.
  2. Stellen Sie sicher, dass Sie sich als dieser Benutzer anmelden und sich bei root anmelden können
  3. Stellen Sie sicher, dass alle anderen Benutzer abgemeldet sind
  4. umount / home - Wenn dies fehlschlägt, verwenden Benutzerprozesse möglicherweise / home weiterhin. Überprüfen Sie mit Fixiereinheit oder lsof
  5. remount / dev / mapper / VolGroup-lv_home auf einem temporären Mount - zum Beispiel / mnt / home
  6. Verwenden Sie rsync, cp -p oder ein anderes Tool, um die Home-Verzeichnisse des Benutzers von / mnt / home nach / home zu kopieren. Überprüfen Sie, ob die Berechtigungen und Eigentümer korrekt sind
  7. Bearbeiten Sie fstab, um / home zu kommentieren
  8. Benutzer können sich jetzt wieder anmelden
  9. lvremove / dev / VolGroup / lv_home
  10. lvextend -L + 921G / dev / VolGroup / lv_root
  11. resize2fs / dev / VolGroup / lv_root

Vielen Dank für die Klarstellungen in den Schritten 10 und 11! Ich hoffe, die Leute stimmen dieser Antwort zu.
Stet

Auch anstelle von können lvextend -L+921G /dev/VolGroup/lv_rootSie verwendenlvextend -l +100%FREE /dev/VolGroup/lv_root
Khosro

0

Sie können dies auch tun, ohne die Partition zu vergrößern, indem Sie einfach die Einhängepunkte austauschen:

Hängen Sie die Home-Partition aus:

umount /home

Hängen Sie es woanders ein, z. B. an / mnt:

mount /dev/mapper/VolGroup-lv_home /mnt

Verschieben Sie alles von der Partition in Ihr Home-Verzeichnis (das sich jetzt auf der Root-Partition befindet):

mv /mnt/* /home/

Verschieben Sie die Daten aus Ihrem Verzeichnis / var in die Partition:

mv /var/* /mnt/

Montieren Sie Ihre Partition erneut in / var:

umount /mnt

mount /dev/mapper/VolGroup-lv_home /var

Stellen Sie sicher, dass Sie den Inhalt Ihrer /etc/fstabanschließend entsprechend ändern .


Verschiebt dies die Dateien, die von Dämonen korrekt geöffnet gehalten werden, oder werden sie weiterhin in das Original geschrieben?
user9517

Ich würde vorschlagen, alle Dienste, die auf / var zugreifen, vorher zu stoppen und sie anschließend erneut zu starten. Zwischen den Schritten des Verschiebens der Daten von / var / nach / mnt und des erneuten Bereitstellens nach / var / ist das Verzeichnis / var leer, sodass der Zugriff darauf ohnehin nicht funktioniert.
Etagenklo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.