Wie kann ich eine Ext-Root-Partition zur Laufzeit ändern?

191

Wie kann ich die Root-Partition eines Systems zur Laufzeit vergrößern?

Ich habe eine Partition, die nach der Root-Partition (die auch ext4 ist) nicht zugeordnet ist. Wie kann ich diesen nicht zugeordneten Speicherplatz zu dem der Root-Partition zugewiesenen Speicherplatz hinzufügen, ohne den Server herunterfahren zu müssen?

    
BonboBingo 30.01.2011, 18:23

10 Antworten

167

GUI (Ubuntu 14.04 und später) : GParted v0.17 und höher bieten dafür eine nette GUI. (Ältere Versionen verweigern die Größenänderung einer gemounteten Partition).

Befehlszeile (jede Ubuntu-Version): Es gibt drei Schritte dazu.

Schritt 1. Die Partition muss zuerst in der Größe geändert werden. Wenn Sie LVM verwenden, ist es einfach und Sie wissen vermutlich, wie Sie vorgehen. Wenn Sie klassische Partitionen verwenden, ist es etwas komplizierter, und kann einen Neustart erfordern (obwohl Sie nie ein anderes System oder eine Live-CD booten müssen).

So mache ich es: Verwenden Sie fdisk , um zuerst die Partition zu löschen (die Idee ist, dass die Daten auf der Festplatte erhalten bleiben), dann erstellen Sie sie vorsichtig mit einer größeren Größe an der gleichen Position.

Beispiel:

$ sudo fdisk /dev/sda

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     9437183     4717568   83  Linux

Command (m for help): d
Selected partition 1

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    10485759     5241856   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

Auch hier ist es wichtig, dass die neue Partition im selben Block wie der alte beginnt. Die ID sollte ebenfalls übereinstimmen (83 für Linux-Systeme). Seien Sie darauf vorbereitet, alle Ihre Daten bei der geringsten Tippfehler zu verlieren.

Um auf der sicheren Seite zu sein, können Sie auch das Boot-Flag wiederherstellen (welches nach Wikipedia noch benötigt wird) einige Computer) durch Drücken von a .

Sehen Sie im Kommentarbereich nach, was zu tun ist, wenn Ihre Swap-Partition auf dem Weg ist.

Inzwischen sollte klar sein, warum die Leute eine Live-CD empfehlen. ; -)

Schritt 2. Da fdisk Sie daran erinnert, müssen Sie die Partitionstabelle neu laden, bevor Sie fortfahren. Der sicherste Weg ist, einfach neu zu starten; Sie können aber auch partprobe oder kpartx (weitere Informationen) .

Schritt 3. Sobald die Größe der Partition geändert und die Partitionstabelle neu geladen wurde, ist es eine einfache Sache, resize2fs auf dem Dateisystem auszuführen, und dies sogar dann, wenn sie als Root-Partition aktiviert ist.

Beispiel:

$ sudo resize2fs /dev/sda1
    
Søren Løvborg 06.04.2012 16:23
110

Es ist möglich, eine Online-Größenanpassung eines ext4-Dateisystems vorzunehmen, auch wenn es sich um Ihre root-Partition handelt. Verwenden Sie den Befehl resize2fs .

sudo resize2fs /dev/sda1

EDIT: Online-Schrumpfung ist nicht erlaubt:

[email protected]:/home# resize2fs /dev/sda5 2654693
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/sda5 is mounted on /; on-line resizing required
resize2fs: On-line shrinking not supported
    
CodeAddict 02.03.2012 11:50
18

Eine einfachere Lösung - verwenden Sie growpart <device> <partition> :

growpart /dev/xvda 1  # Grows the partition; note the space
resize2fs /dev/xvda1  # Grows the filesystem

Sichern Sie wie immer Ihre Partitionstabelle ( sfdisk -d /dev/xvda > partition_bak.dmp ) nur für den Fall.

    
STRML 18.07.2017 15:26
8

Sie können auch einfach GParted verwenden - solange die Größe der Partition, von der Sie die Größe ändern, nicht die ist, für die Sie die Option live CD gewählt haben etwas einfacher für Anfänger.

GParted macht im Grunde alle Schritte - nur basierend auf einer GUI-Front.

    
leatherjacket 30.09.2012 13:34
8

Ja, Sie können eine Online-Root-Partition ohne Neustart (noch livecd oder usbkey) verkleinern / verschieben / vergrößern: konsultiere diese Antwort . Es ist sehr gut geschrieben und leicht zu folgen, obwohl es ziemlich lang und ein wenig riskant ist. Wenn Sie also nur Ihre ext4-Partition erweitern möchten, können Sie sich an die herkömmlichen Working resize2fs -Lösungen halten.

Die allgemeine Lösung, die ich verwendet habe, funktioniert bei jeder Art von dedizierter oder VPS-Lösung zum Beispiel.

TLDR; Diese Lösung bedeutet pivot_root bis tmpfs , damit Sie umount sicher Ihre Root-Partition live spielen und damit herumspielen können. Sobald Sie fertig sind, werden Sie pivot_root auf Ihrer neuen root-Partition wiederherstellen.

Dies ermöglicht so ziemlich jede Manipulation des Root-Dateisystems (Verschieben, Ändern des Dateisystems, Ändern des physischen Geräts ...).

In diesem Prozess ist kein Neustart erforderlich, und ermöglicht die Umgehung der Einschränkung von resize2fs nicht in der Lage zu sein, ext4 -Partitionen zu verkleinern.

Ich habe das persönlich benutzt, und es funktioniert auch sehr gut auf Debian-System, also sollte es auf Ubuntu funktionieren. Ich bin sehr überrascht, diese detaillierte Lösung nicht mehr mit den vielen Fragen in Stackexchange-Websites zu vergleichen, die sich mit dem gleichen Problem befassen.

Hinweis: Natürlich, wenn Sie Ihre Partition erweitern möchten, wird ein einfaches resize2fs ausreichen, wie an vielen Stellen und in anderen Antworten hier angegeben.

    
vaab 01.02.2016 03:08
5

Habe gerade die Größe einer ext4 root-Partition auf einem Live-System geändert, während der root mount war.

[[email protected] i686]# resize2fs /dev/vg_habib/lv_root
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/vg_habib/lv_root is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 10
Performing an on-line resize of /dev/vg_habib/lv_root to 38427648 (4k) blocks.
The filesystem on /dev/vg_habib/lv_root is now 38427648 blocks long.

[[email protected] i686]# 
    
CDR 04.12.2012 23:40
0

Ich habe das einfach ohne umount , pivot_root oder temporäres Entfernen der Hauptpartition mit parted 3.2 unter Ubuntu 16.04, 4.4.0 Kernel gemacht. Um vorsichtig zu sein, habe ich alles von einer virtuellen Konsole aus mit deaktiviertem Netzwerk gemacht und vorher einen Snapshot gemacht, nur für den Fall, aber der Snapshot war nicht nötig, also hätte ich das genauso gut über SSH und ohne Runlevel ändern können.

>

Bestimmen Sie die Partitionsgröße: parted /dev/sda1 print | egrep "Disk.*GB"

Wechseln Sie optional in den Multi-User-Modus ohne Netzwerkverbindung (muss von einer Konsole aus erfolgen, nicht SSH):

runlevel     # remember the original runlevel
init 2

Wählen Sie optional einen VM-Snapshot, um vorsichtig zu sein.

Größe der Partition ändern:

parted
p
resizepart NUMBER SIZE
# answer "Yes" when asked about resizing a live partition.
q

Größe des Dateisystems ändern: resize2fs /dev/sda1

Wenn etwas schief geht, können Sie Ihren Schnappschuss hier wiederherstellen. Wenn alles in Ordnung war, kehren Sie zum normalen Runlevel zurück (oben erhalten) - normalerweise 5: init 5 . Es ist möglicherweise besser, an dieser Stelle einen vollständigen Neustart durchzuführen, um sicherzustellen, dass alles ordnungsgemäß zurückkommt (ich hatte danach ein Datums- / NTP-Problem).

    
Roger Dueck 14.07.2017 02:09
0

Wie bereits gesagt:

  • Die Erweiterung von einem Root-System ist möglich (keine Schwierigkeiten, da der Boot-Bereich nicht verschoben werden soll)

  • schrumpfen eine Live-Root-Partition muss von externen Boot-Gerät (boot von Live-System cd / USB-Stick), als ob es einen Fehler, Mismatch ..was .. Ihr System hängt, muss sein neu gestartet und wird möglicherweise nicht in der Lage sein, korrekt zu booten.

Jede Art von "aber ich habe es getan und es funktioniert" ist reines Glück.

    
ascervera 10.01.2014 22:58
0

Befolgen Sie diese Schritte.

  1. Öffnen Sie das Terminal als Superuser su
  2. run parted
  3. Geben Sie p ein, um die verfügbaren Partitionen zu sehen
  4. Identifizieren Sie Ihre Root-Partitionsnummer (z. B. "sda 3" bedeutet Nummer 3), und löschen Sie eine angrenzende Partition, indem Sie rm PARTITION NUMBER verwenden, um freien Speicherplatz zu erstellen.
  5. Erhöhen Sie nun die Root-Größe, indem Sie resizepart ROOT NUMBER eingeben und das System bei Bedarf neu starten
  6. Beenden Sie parted , indem Sie exit eingeben, und geben Sie im Terminaltyp partprobe ein und drücken Sie die Eingabetaste (dies ist auch nach dem Neustart möglich)
  7. Lassen Sie schließlich resize2fs /dev/sda PARTITION NUMBER laufen und genießen Sie eine geräumige root-Partition.
Gurunadha Reddy 13.09.2017 22:22
-6

Wie bereits erwähnt, funktioniert es nur, um das Boot-Flag zurückzusetzen

renne 'getrennt'

parted /dev/sda

Überprüfen Sie die Partitionsnummer

(parted) print

Setzen Sie in diesem Fall das Boot-Flag auf Partitionsnummer '1' zurück

(parted) set 1 boot on
(parted) quit
    
benko 16.05.2013 15:39

Tags und Links