Sie haben die Größe einer virtuellen Festplatte im Hypervisor erhöht, aber Ubuntu nutzt den gesamten Platz für sein Wurzelverzeichnis noch nicht. Die Festplatte muss zuerst auf der Hypervisor-Seite vergrößert und ihre neue Kapazität im Gast sichtbar gemacht werden. Dieser Prozess betrifft nur ein Wurzelverzeichnis /, das direkt auf einer einfachen ext4-Partition eingebunden ist, gefolgt von zusammenhängendem freien Speicher.

Die Partition und das Dateisystem sind zwei unterschiedliche Schichten. Das Verfahren vergrößert zuerst den Partitionseintrag, dann ext4. Fahren Sie nur mit dem nächsten Schritt fort, wenn die vorherigen Überprüfungen mit Ihrer Maschine übereinstimmen.
Identifizieren Sie die ext4-Wurzel, die Festplatte und die Partition
Beginnen Sie damit, die Quelle und den Typ des Dateisystems, das auf / eingebunden ist, zu ermitteln, und untersuchen Sie die Geräte und ihre Beziehungen:
findmnt -no SOURCE /
findmnt -no FSTYPE /
lsblk
Der erste Befehl sollte die Partition anzeigen, die das Wurzelverzeichnis trägt; der zweite sollte ext4 anzeigen. In lsblk gehen Sie von dieser Partition zur übergeordneten Festplatte. Um explizite Spalten zu erhalten, können Sie die Inspektion wie folgt ergänzen:
lsblk -b -o NAME,PATH,TYPE,FSTYPE,SIZE,MOUNTPOINTS,PKNAME,PARTN
Leiten Sie den Namen der Festplatte nicht von einem Beispiel ab. Eine Wurzel kann beispielsweise auf /dev/vda2 liegen: Die Festplatte ist dann /dev/vda und die Partitionsnummer 2. Bei NVMe entspricht /dev/nvme0n1p2 der Festplatte /dev/nvme0n1 und der Nummer 2. Überprüfen Sie immer diese Elemente in Ihren eigenen Ausgaben.
In den folgenden Befehlen steht /dev/sdX als Platzhalter für die gesamte Festplatte, niemals für eine Partition. N steht für die tatsächliche Nummer der Wurzelpartition. Ersetzen Sie diese vor der Ausführung; kopieren Sie diese Beispiele nicht direkt so.
Untersuchen Sie dann die Tabelle und die Grenzen der Partitionen auf der identifizierten Festplatte. Ersetzen Sie im folgenden Befehl /dev/sdX durch den verifizierten Pfad der gesamten Festplatte:
sudo fdisk -l /dev/sdX
fdisk -l dient hier dazu, die Tabelle zu lesen, nicht sie zu ändern. Vergleichen Sie die Kapazität der Festplatte, die Grenzen der Partitionen und ihre Reihenfolge. Der verfügbare Speicher muss sich direkt nach der Wurzelpartition befinden, ohne andere Partitionen dazwischen. Die fdisk-Dokumentation beschreibt die von diesem Werkzeug angezeigten Tabellendaten; dieses Lesen ersetzt nicht die Überprüfung der tatsächlichen Topologie.
Vor jeder Schreiboperation führen Sie eine Trockenübung durch. Ersetzen Sie die beiden Platzhalter durch die tatsächlich identifizierten Festplatte und Partitionsnummer:
sudo growpart --dry-run /dev/sdX N
Der --dry-run-Modus berichtet, was das Werkzeug tun würde, ohne die Tabelle zu ändern. Es sollte eine mögliche Erweiterung der richtigen Partition im verfügbaren zusammenhängenden Speicher ankündigen. Die Ubuntu-Dokumentation zu growpart gibt die Syntax Festplatte-Partitionsnummer und die Rolle des Diagnoselaufs an.
Halten Sie inne, wenn die Wurzel über LVM, LUKS oder RAID läuft, wenn das Dateisystem Btrfs oder XFS ist — oder nicht ext4 —, wenn eine erweiterte/logische Partition oder eine andere Schicht die Topologie mehrdeutig macht, wenn der freie Speicher vor der Wurzel oder nicht zusammenhängend ist, oder wenn eine andere Partition der Wurzel folgt. Halten Sie auch inne, wenn die vergrößerte Festplatte nicht sichtbar ist, wenn das Werkzeug fehlt, wenn die Diagnose nicht die erwartete Erweiterung ankündigt oder einen Fehler zurückgibt. Versuchen Sie nicht, diese Fälle mit einer Partitionierungsoperation zu umgehen.
Ändern Sie die Vorbereitung und eine Rücksicherung
Bevor Sie den einzigen Befehl dieser Prozedur ausführen, der die Partitionstabelle schreibt, stellen Sie sicher, dass Sie eine wiederherstellbare Sicherung haben, dass Sie wissen, wie Sie diese wiederherstellen, und dass die Inspektionsausgaben gesichert sind. Ein Snapshot ist nur dann nützlich als Rücksicherung, wenn Sie ihn tatsächlich wiederherstellen können.
Bestätigen Sie auch den Zugang zur Wiederherstellungskonsole der Maschine und zum Hypervisor sowie die Möglichkeit, Ubuntu neu zu starten. Planen Sie ein Eingreifzeitfenster ein: Ein Neustart kann erforderlich sein, wenn der Kernel die neue Partitionsgröße nicht im laufenden Betrieb erkennt. Wenn die Sicherung, der Konsolen Zugriff oder die Möglichkeit zum Neustart nicht gewährleistet sind, halten Sie an.
Dokumentieren Sie die aktuelle Situation des Dateisystems und speichern Sie die Ergebnisse von findmnt, lsblk, fdisk -l und dem Diagnoselauf, um sie später zu vergleichen:
df -hT /
Diese Ausgabe ist ein Vergleichspunkt, kein Beweis, dass die Partition und ext4 bereits erweitert wurden.
Erhöhen Sie den Partitionseintrag
Fahren Sie nur fort, wenn alle vorherigen Überprüfungen übereinstimmen, die wiederherstellbare Sicherung bereit ist und der Wiederherstellungszugang sowie der Neustart möglich sind. Der folgende Befehl ändert die Partitionstabelle. Ersetzen Sie unbedingt /dev/sdX und N durch die validierte Festplatte und Partitionsnummer; die erste bezeichnet die gesamte Festplatte, die zweite die Wurzelpartition.
sudo growpart /dev/sdX N
Die erwartete Rückmeldung ist ein Bericht über die Vergrößerung des Eintrags der Wurzelpartition in den verfügbaren zusammenhängenden Speicher. growpart ändert die Größe der Partition, nicht die des ext4-Dateisystems.
Wenn der Befehl einen Fehler zurückgibt, keine Vergrößerung meldet, eine Warnung zur Tabelle anzeigt oder scheinbar auf ein anderes Gerät abzielt, halten Sie inne. Verketten Sie nicht mit resize2fs und versuchen Sie nicht, die Partition blind zu erstellen oder zu reparieren.
Überprüfen Sie die vom Kernel erkannte Größe
Nach der Operation vergleichen Sie die Tabelle und die Geräte. Ersetzen Sie /dev/sdX durch die identifizierte Festplatte:
lsblk -b -o NAME,PATH,TYPE,FSTYPE,SIZE,MOUNTPOINTS,PKNAME,PARTN
sudo fdisk -l /dev/sdX
findmnt -no SOURCE /
Die gleiche Partition sollte weiterhin die Wurzel tragen, und ihre aktuelle Größe, wie sie vom Kernel in lsblk angezeigt wird, sollte größer sein und mit dem vergrößerten Partitionseintrag übereinstimmen. Eine sichtbare Änderung in der Tabelle genügt nicht, wenn der Kernel immer noch die alte Größe anzeigt.
Wenn die Größe sich nicht geändert hat, wenn das Nachlesen der Tabelle fehlgeschlagen ist, wenn Tabelle und Kernel nicht übereinstimmen oder wenn die erkannte Partition nicht die ist, die auf / eingebunden ist, halten Sie an: starten Sie resize2fs nicht. Wenn nur das Nachlesen im laufenden Betrieb fehlt, während die Erweiterung der Tabelle bestätigt ist, planen Sie einen kontrollierten Neustart unter Verwendung der Wiederherstellungskonsole. Nach dem Neustart führen Sie die Überprüfungen zur Quelle, zum Typ und zur Größe erneut durch. Wenn die erwartete Größe immer noch nicht erkannt wird oder der Start Probleme verursacht, halten Sie an und lassen Sie die Maschine diagnostizieren; führen Sie nicht willkürlich mehrere Befehle aus.
Erweitern Sie ext4 nach Bestätigung der Partition
Dieser Schritt ist nur erforderlich, wenn findmnt weiterhin dieselbe ext4-Wurzel bestätigt und lsblk bestätigt, dass ihre Partition tatsächlich die neue Größe hat. Der Platzhalter /dev/sdXN bezieht sich hier auf den vollständigen Pfad der Wurzelpartition und nicht auf die gesamte Festplatte. Ersetzen Sie ihn durch die verifizierte Quelle; für NVMe ähnelt ein Partitionsname insbesondere /dev/nvme0n1p2.
sudo resize2fs /dev/sdXN
Das erwartete Ergebnis ist die Erweiterung des ext4-Dateisystems in der nun größeren Partition. Die Dokumentation zu resize2fs unterscheidet diese Operation von der Änderung der Tabelle: resize2fs ändert nicht die Partition. Die Online-Erweiterung hängt von der Unterstützung durch den Kernel und das Dateisystem ab; nehmen Sie nicht an, dass sie in jeder Konfiguration erfolgreich sein wird.
Halten Sie inne, wenn der Typ nicht ext4 ist, wenn die Partition ihre alte Größe beibehält, wenn die Quelle nicht mehr mit der montierten Wurzel übereinstimmt oder wenn der Befehl einen Fehler meldet. Demontieren Sie / nicht, um ein anderes Verfahren zu improvisieren; führen Sie keine Verkleinerung durch und verwenden Sie kein e2fsck auf der montierten Wurzel. Ein Fehler erfordert eine angemessene Diagnose, nicht einen neuen zufälligen Befehl.
Überprüfen Sie den verfügbaren Speicher
Beenden Sie mit den Überprüfungen der Quelle, des Typs, der Partitionsgröße und des nutzbaren Speicherplatzes:
findmnt -no SOURCE /
findmnt -no FSTYPE /
lsblk -b -o NAME,PATH,TYPE,FSTYPE,SIZE,MOUNTPOINTS,PKNAME,PARTN
df -hT /
Um von einer effektiven Erweiterung auszugehen, muss dieselbe Wurzelquelle, der Typ ext4, die neue von Kernel erkannte Partitionsgröße und eine höhere Dateisystemkapazität in df -hT / wiedergefunden werden. Die Größe der Partition und der von df gemeldete Speicher sind nicht identisch: ext4 nutzt einen Teil seiner Kapazität für seine eigenen Strukturen.
Wenn df nicht gestiegen ist, die Werte nicht übereinstimmen oder ein Befehl einen Fehler gemeldet hat, erklären Sie den Vorgang nicht als erfolgreich und wiederholen Sie nicht growpart. Bewahren Sie die Ausgaben für eine Diagnose auf. Für eine nicht-wurzel ext4-Datenpartition, die mit fdisk erweitert werden soll, ist der Verlauf anders und dieses Verfahren ist nicht anwendbar.
Kurz gesagt: Identifizieren Sie die Wurzel genau, bestätigen Sie den zusammenhängenden Speicher und das Ergebnis des Diagnoselaufs, bereiten Sie Sicherung und Wiederherstellung vor, und überprüfen Sie dann separat die vom Kernel erkannte Partition und ext4. Bei der geringsten Abweichung halten Sie vor dem nächsten Schritt an.