So ändern Sie die Größe der Root-LVM-Partition in Fedora ohne LiveCD oder Neustart

24

Ich habe eine virtuelle Maschine, deren Festplatten-Image kürzlich von 20 GB auf 50 GB erhöht wurde, und die fdisk -lüberprüft, ob die VM diese neue Größe erkennen kann. Jetzt muss ich die Größe meiner Root-LVM-Partition ändern, um die zusätzlichen 30 GB zu füllen.

Ich habe mehrere Artikel über die Größenänderung von LVM gefunden, aber die wenigen, die sich mit der Größenänderung der Root-Partition befassen, behaupten, dass Sie von einer LiveCD booten müssen. Gibt es eine Möglichkeit, dies zu tun, ohne den Server herunterzufahren? Der Server ist kritisch, daher möchte ich Ausfallzeiten minimieren.

Edit: Ausgabe von fdisk -l:

[root@fedora-host ~]# sudo fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00097c90

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 36.1 GB, 36104568832 bytes
255 heads, 63 sectors/track, 4389 cylinders, total 70516736 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition table

Disk /dev/mapper/VolGroup-lv_swap: 6308 MB, 6308233216 bytes
255 heads, 63 sectors/track, 766 cylinders, total 12320768 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition table

Bearbeiten: Wie kann ich die Größe der physischen Partition ändern? fdisk kann den freien Speicherplatz anzeigen, aber ich weiß nicht, wie ich die Größe der primären LVM-Partition ändern soll, um sie zu verwenden. Ich habe versucht, von einer Live-CD zu booten und den parted'd- resizeBefehl zu verwenden, aber alles, was mir angezeigt wird , ist der Fehler "Dateisystem kann nicht erkannt werden". Ich habe diese Anleitung gefunden , die besagt, dass ich die Partition löschen und eine neue mit der richtigen Größe erstellen muss, aber das klingt sehr gefährlich.

Final Edit: Parteds resizeBefehl ist seltsamerweise nicht in der Lage, die Größe von LVM-Partitionen zu ändern. Stelle dir das vor. Stattdessen habe ich einfach die alte Partition gelöscht und eine neue Partition mit dem neuen Bereich erstellt, wie im obigen Link beschrieben, und dabei die Größe der LVM-Partition korrekt geändert. Ich habe dann die folgenden Anweisungen befolgt, um die Größe der Volumes und Dateisysteme in der LVM-Partition zu ändern .

Cerin
quelle
Zeigen Sie uns die Ausgabe von fdisk - l. Sie haben die Größe der Partition geändert und nicht nur die Lautstärke, oder?
Zoredache
@Zoredache, diese Ausgabe habe ich der Frage hinzugefügt.
Cerin

Antworten:

32

Sie können ein logisches Volume online erweitern. Sie müssten es aushängen, um es zu verkleinern (was einen LiveCD / Rescue-Modus erfordert.)

  1. pvresize /dev/sda2(Angenommen, Ihre LVM-Partition ist sda2. Ersetzen Sie sie nach Bedarf.)
  2. lvextend /dev/mapper/root -l+100%FREE (oder wie auch immer Ihr logisches Root-Volume heißt.)
  3. resize2fs /dev/mapper/root (vorausgesetzt ext2 / 3/4)
Aaron Copley
quelle
1
Ich persönlich bevorzuge es lvextend -L [size][unit] /dev/group/volume, wenn auch nur, weil ich ein Volume durch Angabe von-L +10G
Hubert Kario
Ja, aber das OP fragte; Now I need to resize my root LVM partition to fill the extra 30GB.(Damit wird das logische Volumen um den verfügbaren freien Speicherplatz vergrößert.)
Aaron Copley
"Neue Größe (1076 Erweiterungen) entspricht der vorhandenen Größe (1076 Erweiterungen)"
Cerin
7
Ich dachte, dieser Trick war ordentlich: Wenn Sie die -rOption hinzufügen lvextend, wird es Haken, fsadmum die Größe des FS zu ändern. Dies würde den 3. Schritt überflüssig machen.
Jodie C
3
In dieser Antwort wird davon ausgegangen, dass die Partition bereits erweitert wurde, um den freien Speicherplatz zu füllen, und dass nur die logischen Volumes aktualisiert werden müssen. Der pvresize /dev/sda2Befehl führt nichts aus, bis die Größe der Partition / dev / sda2 mit parted oder fdisk geändert wurde. Ich musste meine Größe mit fdisk ändern, da dies auf meinem System nicht angezeigt würde oder keinen Befehl zum Ändern der Größe hat. Bei der Größenänderung von Fdisk wird die Partition gelöscht und neu erstellt.
Jason
2

Hat sich Ihr System wirklich von 20 auf 50 GB geändert? Das scheint wirklich seltsam, da Ihr sda2-Gerät ~ 40 GB hat, lv_root 36 GB anzeigt und Swap 6 GB anzeigt.

Die Ausgabe von fdisk -lzeigt die Gesamtsektoren /dev/sdaheißt 104857600. Der letzte von verwendete Sektor /dev/sda2ist 83886079. Dies sagt mir, dass Sie die Partitionsgröße nicht angepasst haben, um den gesamten verfügbaren Speicherplatz auf dem Laufwerk zu nutzen. Der Befehl pvresize ändert die Partitionstabelle nicht. Sie müssen zuerst die Partitionstabelle ändern.

Zoredache
quelle
1

Installieren Sie gparted. Führen Sie das Programm als root aus (verwenden Sie ssh -X oder x2go, falls remote). Wählen Sie die Partition aus. Es sollte nach dem Ende (rechts) freier Speicherplatz angezeigt werden. Wenn dies nicht der Fall ist, müssen Sie Ihren virtuellen Computer neu starten, damit die neue Größe des virtuellen Geräts angezeigt wird. Das sollte minimale Ausfallzeiten mit systemd sein.

Klicken Sie mit der rechten Maustaste und wählen Sie Größe ändern. Ziehen Sie das Ende an das Ende der Festplatte. Stellen Sie sicher, dass Sie den Anfang nicht berühren. gparted ist in der Lage, eine Partition während der Größenänderung zu verschieben, aber das wird natürlich ein laufendes System zerstören. Aber das Ende zu verschieben ist in Ordnung. Überprüfen Sie den ausstehenden Vorgang, den gparted ausführt, um sicherzustellen, dass Sie die Partition erweitern und nicht verschieben. Klicken Sie auf Übernehmen. gparted ändert die Partition auf der Festplatte und gibt dann den Kernel ioctl aus, um die Partitionstabelle erneut zu lesen, wobei auch die Größe des Live-Block-Geräts geändert wird. Da es sich dann um eine LVM-PV handelt, wird pvresize für Sie ausgeführt. Beenden Sie gparted und vgs zeigt jetzt Ihren neuen Speicherplatz an.

Ich habe Gerüchte gehört, dass sich das alles ohne den Aufwand einer grafischen Benutzeroberfläche trennen lässt, aber ich habe den Voodoo noch nie herausgefunden. Parted muss eine der schlimmsten CLI-Schnittstellen sein, die ich je versucht habe.

Verwenden Sie fdisk nicht, Sie müssen die Partition löschen und neu zuordnen, um die Größe zu ändern. Standardmäßig wird die LVM2-Signatur beim Schreiben gelöscht. Ich glaube, ich habe eine "erweiterte" Option gesehen, um dieses destruktive Verhalten auszuschalten, aber ich habe es nie getestet.

Sie können auch cfdisk (curses fdisk) ausprobieren. Möglicherweise hat es eine verwendbare Partitionsgröße. Es ist einfach genug, pvresize manuell auszuführen, und es gibt einen Befehl, der den Kernel anweist, die Partitionstabelle erneut zu lesen. Aber ich muss testen, um sicherzustellen, dass die LVM-Signatur nicht wie bei fdisk gelöscht wird.

Stuart Gathman
quelle
0

Befindet sich das physische LVM-Volume auf einer Partition, können Sie die Größe nicht ändern, ohne einen Neustart durchzuführen.

Sie können die Partitionstabelle auf dem Laufwerk bearbeiten, Linux wird sie jedoch erst nach einem Neustart verwenden.

Wenn Sie XFS verwenden, wechseln Sie resize2fszuxfs_growfs .

Sie können die PVs zeigen Sie in Volume - Gruppe verwenden und LVs mit pvsundlvs .

PV auf Raw Disk

pvresize /dev/sda
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

PV auf einer Partition

Zuerst müssen Sie die Größe der Partition ändern parted, fdiskoder ein ähnliches Tool verwenden. Denken Sie daran, dass diese Tools nur die Beschreibung der Partitionen bearbeiten und keine Daten verschieben. Mit anderen Worten, Sie können problemlos nur die letzte Partition auf der Festplatte erweitern. Starten Sie dann Ihren Computer neu und Sie sollten in der Lage sein, LVM darüber zu informieren, dass zusätzlicher Speicherplatz verfügbar ist:

pvresize /dev/sda2
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>
Hubert Kario
quelle
Wenn Sie eine Gparted Live-CD verwenden, wird die sudo pvresize /dev/sda2Größe von 1 physischen Volume (s) geändert, aber sudo lvextend /dev/mapper/VolGroup-lv_root -L +10Gder Fehler " Nicht genügend freier Speicherplatz: 320 Extents erforderlich, aber nur 0 verfügbar" wird angezeigt . sudo fdisk -lBerichte, dass ich 54G zur Verfügung habe, während sudo pvdisplayBerichte nur 40G in Gebrauch sind. Warum versagt lvextend?
Cerin
1
@Cerin, du hast die erste Huberts-Anweisung für eine PV auf einer Partition verpasst. Zuerst müssen Sie die Größe der Partition ändern, dafür parted, fdisk oder ein ähnliches Tool verwenden .
Zoredache
@Zoredache, Ok, das ist im Grunde meine ganze Frage. Ich weiß nicht, wie ich das machen soll. Ich habe gerade eine Gparted LiveCD gebootet und versucht, mit dem parted- resizeBefehl die Größe der primären Partition zu erhöhen, habe aber den Fehler "Dateisystem konnte nicht erkannt werden" erhalten. Wie kann die Größe der Partition mit parted oder fdisk geändert werden?
Cerin
@Cerin: SF suchen oder eine andere Frage stellen
Hubert Kario
0

Ich würde in Betracht ziehen, ssm (System-Storage-Manager) zu überprüfen, ob es in Ihrer Distribution verfügbar ist.

Weitere Informationen finden Sie hier: /unix//a/293173

ssm scheint es einfacher zu machen, die Größe logischer Volumes zu ändern, ohne alles selbst tun zu müssen.

Ich konnte meine Home-Partition damit erweitern, nachdem ich mein Betriebssystem neu gestartet und mich zuerst als root angemeldet hatte. (Musste insgesamt zweimal neu starten, aber es hat am Ende funktioniert und ich habe jetzt zusätzliche 50G in meiner / home-Parition.)

Bryan Cole
quelle
0

Nach dem Kombinieren von 25 Anleitungen habe ich endlich diese Lösung. Es erfordert keine Live-CD, es ist komplett on the fly.

Schritt 1. Formatieren Sie die Partition mit parted (keine GUI). In diesem Beispiel wurde die maximale Größe der Festplatte von 8 GB auf 32 GB in der virtuellen Box erhöht.

    # parted
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
       ....
    (parted) mkpart primary ext2 8590 100%
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
         3      8590MB  34,4GB  25,8GB   primary  ext2             lba
       ....
    (parted) set 3 lvm on
    (parted) set 3 lba off
    (parted) print
       ....
         3      8590MB  34,4GB  25,8GB   primary  ext2             lvm
       ....
    (parted) quit

Schritt 2. Erstellen Sie ein physisches Volume basierend auf der neuen Partition

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.

Schritt 3. Fügen Sie das physische Volume der Volume-Gruppe hinzu. In einer einfachen Fedora 28-Serverinstallation heißt die Datenträgergruppe Fedora.

# vgextend fedora /dev/sda3
  Volume group "fedora" successfully extended

Schritt 4. Fügen Sie den verfügbaren Speicherplatz in der Datenträgergruppe zum logischen Datenträger hinzu. In einer einfachen Fedora 28-Serverinstallation heißt das logische Volume root.

# lvextend -l+100%FREE /dev/fedora/root
  Size of logical volume fedora/root changed from <6,20 GiB (1586 extents) to 30,19 GiB (7729 extents).
  Logical volume fedora/root successfully resized.

Schritt 5. Weisen Sie das Dateisystem auf dem logischen Volume an, den zusätzlichen Speicherplatz zu verwenden. In Fedora ist das Dateisystem xfs.

Beachtung! xfs_growfs verwendet den Einhängepunkt, um das Dateisystem zu identifizieren, nicht den Namen des Dateisystems, das Sie in df output finden !!!!!!!

Der Befehl 'xfs_growfs / dev / mapper / fedora-root' teilt Ihnen mit, dass / dev / mapper / fedora-root kein eingehängtes XFS-Dateisystem ist. Wenn Sie ein anderes Dateisystem verwenden, lesen Sie https://www.tldp.org/HOWTO/LVM-HOWTO/extendlv.html

# xfs_growfs /
    data blocks changed from 1624064 to 7914496

Schritt 6. Viel Spaß

# df
FileSystem               1K-blocks      Used   Available used% Mounted on
....
/dev/mapper/fedora-root   31647744   6492840    25154904  21% /
/dev/sda1                   999320    125576      804932  14% /boot
....
Lieven Vanlerberghe
quelle
-1

Versuchen Sie es mit testdisk

sudo dnf installiere testdisk

sudo testdisk

Legen Sie einfach eine Protokolldatei fest. Anschließend werden die Partitionen aufgelistet. - Wählen Sie das Medium / die Partition aus. - Geben Sie Folgendes ein und analysieren Sie sie. - Schnellsuche - Auswählen und Schreiben

Salil Kothadia
quelle