Wie kann ich die Root-Partition eines Systems zur Laufzeit vergrößern?
Ich habe eine Partition, die nicht nach der Root-Partition zugewiesen ist (die auch ext4 ist). Wie kann ich diesen nicht zugewiesenen Speicherplatz dem Speicherplatz hinzufügen, der der Root-Partition zugewiesen ist, ohne den Server herunterfahren zu müssen?
partitioning
ext4
BonboBingo
quelle
quelle
Antworten:
GUI (Ubuntu 14.04 und höher) : GParted v0.17 und höher bieten hierfür eine schöne GUI. (Ältere Versionen lehnen es ab, die Größe einer bereitgestellten Partition zu ändern.)
Befehlszeile (jede Ubuntu-Version): Hierzu sind drei Schritte erforderlich.
Schritt 1. Die Partition muss zuerst in der Größe angepasst werden. Wenn Sie LVM verwenden, ist dies einfach und Sie wissen vermutlich, wie Sie vorgehen müssen. Wenn Sie klassische Partitionen verwenden, ist dies etwas komplizierter und erfordert möglicherweise einen Neustart (obwohl Sie nie ein anderes System oder eine Live-CD starten müssen).
So geht's:
fdisk
Löschen Sie zuerst die Partition (die Daten auf der Festplatte bleiben erhalten) und erstellen Sie sie dann vorsichtig mit einer größeren Größe an derselben Position neu.Beispiel:
Auch hier ist es wichtig, dass die neue Partition am selben Block wie die 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 das Boot-Flag (das laut Wikipedia auf einigen Computern noch erforderlich ist) auch durch Drücken von wiederherstellen
a
.Im Kommentarbereich erfahren Sie, was zu tun ist, wenn Ihre Swap-Partition im Weg ist.
Inzwischen sollte klar sein, warum die Leute die Verwendung einer Live-CD empfehlen. ;-)
Schritt 2. Wie Sie
fdisk
hilfreicherweise daran erinnert, müssen Sie die Partitionstabelle neu laden, bevor Sie fortfahren können. Der sicherste Weg ist, einfach neu zu starten. Sie können aber auchpartprobe
oderkpartx
(weitere Informationen) verwenden .Schritt 3. Sobald die Größe der Partition geändert und die Partitionstabelle neu geladen wurde, müssen Sie nur noch
resize2fs
auf dem Dateisystem ausgeführt werden. Dies ist auch dann möglich, wenn die Partition als Root-Partition gemountet ist.Beispiel:
quelle
fdisk
gesagt,partprobe
oderkpartx
funktioniert möglicherweise anstelle eines Neustarts; siehe auch diese frage . Selbst wenn Sie neu starten, ist die Lösung der Verwendung einer Live-CD vorzuziehen, wenn es zu Ausfallzeiten kommt, bei denen ein einfacher Neustart für eine virtuelle Maschine weniger als 10 Sekunden dauern kann. Es ist auch schneller in der Bedienerzeit, weshalb ich diesen Ansatz normalerweise selbst verwende. :)free -h
), deaktivieren Sie swap (swapoff /dev/sda2
), ändern Sie die Partitionstabelle (einschließlich Löschen und Neuerstellen der Swap-Partition) und führen Sie entweder 1) einen Neustart oder 2) ein erneutes Laden der Partitionstabelle durchswapon
. (Wenn der Speicher zu knapp ist, um den Austausch vorübergehend zu deaktivieren, können Sie dennoch eine neue Auslagerungspartition erstellen und aktivieren (/dev/sda3
) und dann auslagernsda2
; anschließend müssen Sie/etc/fstab
den neuen Auslagerungsgerätenamen aktualisieren .)Es ist möglich, die Größe eines ext4-Dateisystems online zu ändern, auch wenn es sich um Ihre Root-Partition handelt. Verwenden Sie den
resize2fs
Befehl.BEARBEITEN: Online-Schrumpfen ist nicht erlaubt:
quelle
man resize2fs
: BeiThe resize2fs program does not manipulate the size of partitions. If you wish to enlarge a filesystem, you must make sure you can expand the size of the underlying partition first. This can be done using fdisk(8) by deleting the partition and recreating it with a larger size or using lvextend(8),if you're using the logical volume manager lvm(8).
dieser Frage geht es um die Größenänderung der Partition , nicht des Dateisystems . Die Unterscheidung ist subtil, aber sehr wichtig.The resize2fs program will resize ext2, ext3, or ext4 file systems. It can be used to enlarge or shrink an unmounted file system located on device. If the filesystem is mounted, it can be used to expand the size of the mounted filesystem, assuming the kernel supports on-line resizing. (As of this writing, the Linux 2.6 kernel supports on-line resize for filesystems mounted using ext3 and ext4.).
fdisk
wanngrowpart
dies für Sie sehr einfach sein wird.Eine einfachere Lösung - verwenden Sie
growpart <device> <partition>
:Sichern Sie wie immer Ihre Partitionstabelle (
sfdisk -d /dev/xvda > partition_bak.dmp
) für alle Fälle.quelle
sfdisk: /dev/nvme0n1p5: does not contain a recognized partition table
(mit Dual-Boot mit Windows)gparted
.apt-get install cloud-utils
/dev/nvme0n1
. p5 ist Partition 5 auf dieser Festplatte. Im Vergleich zu herkömmlichen BSD-Scheibenscheiben verwenden sie ein ähnliches Nummerierungsschema.Ja, Sie können eine Online-Root-Partition ohne Neustart (noch Live-CD oder USB-Schlüssel) verkleinern, verschieben oder vergrößern. Lesen Sie dazu diese Antwort . Es ist sehr gut geschrieben und leicht zu befolgen, 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 Arbeitslösungen halten
resize2fs
.Die allgemeine Lösung, die ich verwendet habe, funktioniert beispielsweise für alle Arten von dedizierten Lösungen oder VPS-Lösungen.
TLDR; Diese Lösung bedeutet , zu
pivot_root
zutmpfs
so können Sieumount
sicher Ihre Root - Partition mit ihr leben und Geige. Sobald Sie fertig sind, kehren Siepivot_root
zu Ihrer neuen Root-Partition zurück.Dies ermöglicht so ziemlich jede Manipulation am Root-Dateisystem (es verschieben, das Dateisystem ändern, das physische Gerät ändern ...).
Kein Neustart in dem Prozess erforderlich ist , und dies ermöglicht die Begrenzung umgehen von
resize2fs
nicht in der Lage zu schrumpfenext4
Partitionen.Ich persönlich habe dies verwendet und es funktioniert sehr gut auf Debian-Systemen, so dass es auf Ubuntu funktionieren sollte. Ich bin sehr überrascht, dass diese tiefgreifende Lösung nicht ein bisschen mehr mit den vielen Fragen in Stackexchange-Websites zusammenhängt, die sich mit dem gleichen Problem befassen.
Hinweis: Wenn Sie Ihre Partition erweitern möchten, reicht natürlich ein einfaches
resize2fs
aus, wie an zahlreichen Stellen und in anderen Antworten hier angegeben.quelle
Sie können auch einfach GParted verwenden - vorausgesetzt, die Partition, deren Größe Sie ändern, ist nicht die Partition, von der Sie gebootet haben. Andernfalls ist die Live-CD- Option für Anfänger etwas einfacher.
GParted führt im Grunde alle Schritte aus - nur basierend auf einer GUI mit Front.
quelle
Wir haben gerade die Größenänderung einer ext4-Root-Partition auf einem Live-System abgeschlossen, während der Root eingehängt war.
quelle
Ich möchte die Antwort von @ Søren Løvborg erweitern: Erweiterung der Partition um eine vorhandene Swap-Partition.
Zuerst das Layout der Festplatte nach dem Erweitern:
Sda1 muss also um den freien Speicherplatz am Ende der Festplatte erweitert werden, aber die Swap-Partition befindet sich dazwischen. So können Sie es machen:
Zuerst müssen wir Swap deaktivieren. Überprüfen Sie, wie viel es verwendet wird und ob Sie es ausschalten können.
Swap wird hier nicht verwendet, damit wir es ausschalten können
Jetzt werden wir die Partitionstabelle ändern:
(Hinweis: Wenn die erste Partition bei Sektor 63 statt 2048 beginnt, müssen Sie die Option hinzufügen.
-c=dos
)Hinweis: Die Größe von sda1 ist die Gesamtanzahl der Sektoren abzüglich der Sektorgröße Ihrer Swap-Partition: 14335999-2093058 = 12242941
Als fdisk erwähnt: Der Kernel verwendet immer noch die alte Partitionstabelle, daher müssen wir sie neu laden.
Jetzt müssen wir resize2fs auf sda1 ausführen (vergiss das nicht!)
Nun sind die Dinge noch nicht vorbei. Wie Sie wahrscheinlich bemerkt haben, ist sda2 als Typ Linux (Ext4) partitioniert. Aus irgendeinem Grund gibt es in fdisk keine Möglichkeit, den Typ auszuwählen. Also müssen wir es mit abwechseln
cfdisk
Wähle sda2 und ändere den Typ auf
82 Linux swap / Solaris
und stelle sicher, dass du es schreibst ( tippe yes zur Bestätigung)Jetzt können wir den Swap wieder aktivieren
Und zum Schluss schalten Sie es ein:
Das Einzige, was wir tun müssen, ist, fstab zu aktualisieren, damit die Swap-Partition beim Booten automatisch eingehängt wird
Und ändern Sie die UUID der Swap-Partition in die Ausgabe oben:
Jetzt ist alles in Ordnung und Sie können ohne Probleme neu starten.
quelle
mkswap
&swapon
-Befehle auf sda2 ausgeführt werden. Ich habe am Anfang meines Beitrags einen Fehler gemacht:swapoff
Muss auf sda5 ausgeführt werden. Kommentare sind immer willkommen, es war schwierig, sie aufzuschreiben.cryptdisks_stop
, dann / etc / crypttab anstelle von aktualisieren/etc/fstab
und Cryptdisks mit neu startencryptdisks_start
.Ich habe gerade diese erfolgreich ohne
umount
,pivot_root
oder vorübergehende Entfernung der Hauptpartition, trennte sie unter Verwendung 3.2 auf Ubuntu 16.04, 4.4.0 - Kernel. Um vorsichtig zu sein, habe ich alles von einer virtuellen Konsole mit deaktiviertem Netzwerk aus gemacht und zuvor für alle Fälle einen Snapshot erstellt, der jedoch nicht benötigt wurde. Daher hätte ich dies auch über SSH und ohne Änderung der Runlevel tun können.Partitionsgröße bestimmen:
parted /dev/sda1 print | egrep "Disk.*GB"
Optional können Sie in den Mehrbenutzermodus ohne Netzwerk wechseln (muss über eine Konsole und nicht über SSH erfolgen):
Optional können Sie einen VM-Snapshot erstellen, um vorsichtig zu sein.
Partitionsgröße ändern:
Dateisystemgröße ändern:
resize2fs /dev/sda1
Wenn etwas schief geht, können Sie Ihren Schnappschuss hier wiederherstellen. Wenn alles in Ordnung geht, wieder in dem normalen Runlevel (erhalten oben) - in der Regel 5:
init 5
. Es ist möglicherweise besser, an diesem Punkt einen vollständigen Neustart durchzuführen, um sicherzustellen, dass alles wieder ordnungsgemäß funktioniert (ich hatte danach ein Datums- / NTP-Problem).quelle
Folge diesen Schritten.
su
parted
p
, um die verfügbaren Partitionen anzuzeigenrm PARTITION NUMBER
freien Speicherplatz erstellen.resizepart ROOT NUMBER
und das System bei Bedarf neu startenparted
Programm durch Eingabe vonexit
und geben Sie den Terminaltyp einpartprobe
und drücken Sie die Eingabetaste (dies kann auch nach einem Neustart erfolgen).resize2fs /dev/sda PARTITION NUMBER
und die geräumige Root-Partition genießen.quelle
Wie bereits erwähnt:
Eine Live-Erweiterung von einem Root-System aus ist möglich (keine Schwierigkeiten, da der Boot-Bereich nicht verschoben werden muss).
Das Verkleinern einer Live-Root-Partition muss über ein externes Startgerät erfolgen (Start von einer Live-System-CD / einem USB-Stick), als ob ein Fehler oder eine Nichtübereinstimmung vorliegen würde in der Lage, richtig zu booten.
Jede Art von "aber ich habe es getan und es funktioniert" ist reines Glück.
quelle