Partitionsgröße erhöhen, auf der Ubuntu installiert ist?

60

Ich habe Ubuntu auf einem Laufwerk installiert. Das Problem ist, dass der Speicherplatz knapp wird. Dies ist auf VMware installiert. Ich habe das virtuelle Laufwerk erweitert und Ubuntu gebootet. Beim Öffnen von gparted (sudo gparted) ist die Option zum Verschieben / Ändern der Größe nicht verfügbar. Dies ist die Partition, auf der Ubuntu installiert ist, aber ich muss die Größe ändern. Irgendwelche Ideen? Ich fühle mich wohl mit der Befehlszeile

user51447
quelle
Sie können sehen, wie sie dies raspi-configfür den Raspberry Pi tun , wobei das Erweitern des Root-Dateisystems fast jedes Mal durchgeführt wird, wenn Sie einen neuen Raspberry Pi einrichten. github.com/RPi-Distro/raspi-config/blob/…
sshow

Antworten:

16

Du bist fast am Ziel.
Sie können die Größe der Partition mit GParted nicht ändern, während Ubuntu ausgeführt wird.
Sie müssen die GParted-ISOs als CD an den VM-Computer anhängen und den Computer neu starten, damit GParted anstelle von Ubuntu geladen wird.
Sobald Sie GParted gestartet haben, wird die Option zum Verschieben / Ändern der Größe aktiviert, da Ubuntu derzeit nicht ausgeführt wird.

yossile
quelle
139

Wie in der Tat, Sie CAN vergrößern das Root - Dateisystem , während Ubuntu läuft (habe ich gelernt , das kürzlich mich hier ) - das klingt unglaublich , aber es ist wahr :)

Hier ist die Liste der Schritte für ein einfaches Szenario, in dem Sie zwei Partitionen haben, /dev/sda1eine ext4-Partition ist, von der das Betriebssystem gebootet wird und /dev/sdb2die ausgetauscht wird. In dieser Übung möchten wir die Swap-Partition entfernen und /dev/sda1auf die gesamte Festplatte ausdehnen .

  1. Stellen Sie wie immer sicher, dass Sie eine Sicherungskopie Ihrer Daten haben. Da wir die Partitionstabelle ändern, besteht die Möglichkeit, dass alle Ihre Daten verloren gehen, wenn Sie beispielsweise einen Tippfehler machen.

  2. Lauf sudo fdisk /dev/sda

    • Verwenden Sie, pum die Partitionen aufzulisten. Notieren Sie den Startzylinder von/dev/sda1
    • verwenden löschen zuerst die Swap - Partition ( ) und dann die Partition. Dies ist sehr beängstigend, aber harmlos, da die Daten erst dann auf die Festplatte geschrieben werden, wenn Sie die Änderungen auf die Festplatte schreiben.d2/dev/sda1
    • Verwenden Sie ndiese Option , um eine neue primäre Partition zu erstellen . Stellen Sie sicher, dass der Startzylinder exakt dem alten entspricht /dev/sda1. Stimmen Sie für den Endzylinder mit der Standardauswahl überein, bei der die Partition die gesamte Festplatte umfassen soll.
    • Mit können Sie adas bootfähige Flag auf dem neuen umschalten/dev/sda1
    • Überprüfen Sie Ihre Änderungen, machen Sie einen tiefen Atemzug und wschreiben Sie die neue Partitionstabelle auf die Festplatte. Sie erhalten eine Meldung, dass der Kernel die Partitionstabelle nicht erneut lesen konnte, da das Gerät ausgelastet ist, aber das ist in Ordnung.
  3. Neustart mit sudo reboot. Wenn das System startet, haben Sie ein kleineres Dateisystem, das sich in einer größeren Partition befindet .

  4. Der nächste magische Befehl ist resize2fs. Ausführen sudo resize2fs /dev/sda1- In diesem Formular wird standardmäßig festgelegt, dass das Dateisystem den gesamten verfügbaren Speicherplatz auf der Partition beansprucht.

Das war's, wir haben gerade die Größe einer Partition geändert, auf der Ubuntu installiert ist, ohne von einem externen Laufwerk zu booten.

Sergey
quelle
@EliahKagan: Bitte sehen Sie sich die Antwort an (von Gilles), auf die ich verlinkt habe. Die Idee ist, dass es möglich ist fdisk, die Partition zu vergrößern , während das Betriebssystem weiterhin das kleinere Dateisystem verwendet. Dann. Nach einem Neustart, nachdem der Kernel die aktualisierte Partitionstabelle erneut gelesen hat, können wir die Größe des Dateisystems ändern, da es sich jetzt in einer größeren Partition befindet.
Sergey
1
@Isaac: Ja, wir müssen immer noch neu starten, damit der Kernel die Partitionstabelle erneut liest. Ein schneller Neustart ist jedoch in vielen Szenarien ein viel kleineres Problem als das Booten von einem externen Medium (denken Sie an Remotecomputer, Headless-Computer, VPS usw.)
Sergey
2
Zwei kurze Notizen: 1. Sie können verwenden df, um den "resultierenden" Speicherplatz danach anzuzeigen (bestätigen Sie, dass es funktioniert hat), und 2. denken Sie daran, einen Swap-Speicherplatz neu zu erstellen!
Christian Rondeau
1
Vielen Dank. Ubuntu hat nie den Speicherplatz verwendet, den ich der VirtualBox-Vdisk gegeben habe. Jetzt weiß ich warum. Danke vielmals!
Penderi
1
@Sid: Es ist sehr wichtig, dass der Startzylinder derselbe ist. Wenn der freie Speicherplatz nur unmittelbar nach der Partition verfügbar ist, müssen Sie eine andere Methode verwenden (die das Booten von einem anderen Laufwerk erfordert)
Sergey,
21

Zwei Methoden

1. Getestet in Ubuntu Server 16.04 bis 18.10

Nach dem Erweitern des Volumes in VMware ESXi (Herunterfahren von VM, Sichern / Exportieren von VM, Entfernen aller Snapshots, Erhöhen der Festplattengröße, erneutes Erstellen eines Snapshots von VM, bevor die nächsten Schritte ausgeführt werden, damit Fehler / Fehler behoben werden können).

Im folgenden Beispiel wird das Volume auf der Root-Partition auf einem System erweitert, auf dem LVM bereits verwendet wird.

  1. sshcfdisk
    Wechseln Sie in das System zu "root" und führen Sie " # cfdisk" aus

  2. Bildbeschreibung hier eingeben

  3. Bildbeschreibung hier eingeben

  4. Bildbeschreibung hier eingeben

  5. Bildbeschreibung hier eingeben

  6. Bildbeschreibung hier eingeben

  7. Bildbeschreibung hier eingeben

  8. Bildbeschreibung hier eingeben

  9. Bildbeschreibung hier eingeben

  10. Bildbeschreibung hier eingeben

  11. Bildbeschreibung hier eingeben

  12. Bildbeschreibung hier eingeben

  13. Nach dem Beenden von cfdisk

     # fdisk -l /dev/sda 
     Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 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
     Disklabel type: dos
     Disk identifier: 0xc8b647ff
    
     Device     Boot    Start      End  Sectors  Size Id Type
     /dev/sda1  *        2048   999423   997376  487M 83 Linux
     /dev/sda2        1001470 16775167 15773698  7.5G  5 Extended
     /dev/sda3       16775168 41943039 25167872   12G 8e Linux LVM (***** See new partition /dev/sda3*****)
     /dev/sda5        1001472 16775167 15773696  7.5G 8e Linux LVM
    
  14. Starten Sie das System vor dem nächsten Schritt neu (andernfalls erhalten Sie möglicherweise Device /dev/sda3 not found (or ignored by filtering))

     # shutdown now -r
    
  15. Initialisieren Sie das neue Volume

     # pvcreate /dev/sda3
       Physical volume "/dev/sda3" successfully created
    
  16. Rufen Sie den Namen des zu erweiternden Volumes ab

     # vgdisplay
       --- Volume group ---
       VG Name               linuxetc1-vg (***** this is vg i'm extending*****)
       System ID             
       Format                lvm2
       Metadata Areas        1
       Metadata Sequence No  3
       VG Access             read/write
       VG Status             resizable
       MAX LV                0
       Cur LV                2
       Open LV               2
       Max PV                0
       Cur PV                1
       Act PV                1
       VG Size               7.52 GiB
       PE Size               4.00 MiB
       Total PE              1925
       Alloc PE / Size       1925 / 7.52 GiB
       Free  PE / Size       0 / 0  
       ...
    
  17. Volumengruppe erweitern

     # vgextend linuxetc1-vg /dev/sda3
       Volume group "linuxetc1-vg" successfully extended
    
  18. Wurzel erweitern

     # lvextend -l+100%FREE /dev/linuxetc1-vg/root
       Size of logical volume linuxetc1-vg/root changed from 6.52 GiB (1669 extents) to 18.52 GiB (4741 extents).
       Logical volume root successfully resized.
    
    
     Or if you only wanted to give 5 more GB to root
     # lvextend -L +5g /dev/linuxetc1-vg/root
    
  19. Holen Sie sich den Namen des Dateisystems für den nächsten Schritt

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root  6.3G  2.5G  3.5G  42% /            (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    
  20. Dateisystem erweitern

     # resize2fs /dev/mapper/linuxetc1--vg-root
     resize2fs 1.42.13 (17-May-2015)
     Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required
     old_desc_blocks = 1, new_desc_blocks = 2
     The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long.
    
  21. Siehe die vergrößerte Größe

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root   19G  2.5G   15G  15% /         (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    

2. Schnellere Methode getestet in Ubuntu Server 18.04.3 LTS

Diese Methode ist etwas schneller als die erste. Dies liegt an einer neuen Option im cfdiskMenü "Größe ändern" , die einige Schritte spart.

Nach dem Erweitern des Volumes in VMware ESXi (Herunterfahren von VM, Sichern / Exportieren von VM, Entfernen aller Snapshots, Erhöhen der Festplattengröße, erneutes Erstellen eines Snapshots von VM, bevor die nächsten Schritte ausgeführt werden, damit Fehler / Fehler behoben werden können).

Im folgenden Beispiel wird das Volume auf der Root-Partition auf einem System erweitert, auf dem LVM bereits verwendet wird.

  1. sshWechseln Sie in das System zu root und führen Sie es aus cfdisk.

  2. Wählen Sie die Partition aus, die erweitert werden soll, und wählen Sie "Größe ändern". Bildbeschreibung hier eingeben

  3. Stellen Sie die "Neue Größe" ein. Bildbeschreibung hier eingeben

  4. Nachdem Sie die Eingabetaste gedrückt haben, wird der Bildschirm mit dem folgenden Hinweis "Partition [someNumber] resized" angezeigt: Bildbeschreibung hier eingeben

  5. Als nächstes müssen Sie Ihre Änderungen "schreiben" (speichern): Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

  6. Beenden Sie cfdisk. Beim Beenden wird möglicherweise die Meldung "Synchronisieren von Datenträgern" angezeigt. Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

  7. Ich habe mein System zu diesem Zeitpunkt neu gestartet, dies ist jedoch möglicherweise nicht erforderlich. Jetzt können Sie ab Schritt 19 mit der ersten Methode fortfahren (siehe unten).

  8. (19) Holen Sie sich den Namen des Dateisystems für den nächsten Schritt

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root  6.3G  2.5G  3.5G  42% /            (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    
  9. (20) Dateisystem erweitern

     # resize2fs /dev/mapper/linuxetc1--vg-root
     resize2fs 1.42.13 (17-May-2015)
     Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required
     old_desc_blocks = 1, new_desc_blocks = 2
     The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long.
    
  10. (21) Siehe die vergrößerte Größe

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root   19G  2.5G   15G  15% /         (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    

Artikel:
https://wiki.ubuntu.com/Lvm
http://www.geoffstratton.com/expand-hard-disk-ubuntu-lvm

jtlindsey
quelle
Beeindruckend. Das war sehr hilfreich. Ich wünschte, ich könnte mehr als einmal stimmen. Vielen Dank!
Mario Tacke
1
Funktionierte perfekt am 18.10 unter ESXi. Vielen Dank!
John Vinopal
Absolut fabelhaft, genau das, was ich als Linux Noob brauchte. .
Bigbadmouse
Toller Reiseführer! Befolgen Sie diese Schritte, um den Speicher unter Ubuntu zu erweitern, das als Proxmox VM ausgeführt wird.
tokenizer_fsj
Fantastisch! Danke dafür. Dies funktionierte für 18.04 unter ESXi.
einmalig
0

Die Antwort von Sergey war ausgezeichnet. Wenn Sie den leeren Speicherplatz jedoch nicht direkt auf dem nächsten Gerät haben, müssen Sie andere Geräte löschen. Zum Beispiel:

Device     Boot    Start       End  Sectors Size Id Type
/dev/sda1  *        2048  33556477 33554430  16G 83 Linux
/dev/sda2       33556478  41940991  8384514   4G  5 Extended
/dev/sda3       41940992 125829119 83888128  40G 83 Linux
/dev/sda5       33556480  41940991  8384512   4G 82 Linux swap / Solaris

Im obigen Fall, wenn Sie zusammenführen möchten /dev/sda3mit /dev/sda1, müßten Sie entfernen /dev/sda1, /dev/sda2und /dev/sda3(mit dBefehl) und erneut hinzufügen , /dev/sda2und seine Art aktualisieren (mit nund tBefehlen).

Jaycode
quelle
0

Es ist mir gelungen, meine primäre ext4-Partition mithilfe der hier beschriebenen Methode zu vergrößern .

Einige Notizen aus meiner persönlichen Erfahrung:

  • Das Link-Beispiel ist für das Verkleinern von Partitionen gedacht, daher lautet die Reihenfolge zuerst resize2fs und dann fdisk. Beim Vergrößern der Partition (wie in meinem Fall) sollte die Reihenfolge zuerst fdisk, reboot und dann resize2fs sein. Außerdem sollten bei Verwendung von fdisk die primären sowie die erweiterten Partitionen entfernt und neu definiert werden.
  • Ich habe das Ubuntu von einem anderen Laufwerk gebootet und dann an diesem Laufwerk gearbeitet, das eigentlich der Spiegel (mit dd) des älteren Laufwerks war. Es wurde mit GParted bootfähig gemacht
  • Die aktuelle Version von resize2fs (ich verwende Ubuntu 12.04LTS) unterstützt ext4 - die im Link zum Ändern von ext2 beschriebenen Aktionen müssen nicht ausgeführt werden.
Elchanan
quelle
1
Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Braiam