Tutoriel Linux

Eine Ubuntu-Partition mit fdisk erweitern, ohne Daten zu verlieren

Débutant10 min de lecture

Haben Sie eine Festplatte vergrößert oder stehen Ihnen jetzt nicht zugeordneter Speicherplatz nach einer Ubuntu-Datenpartition zur Verfügung? Damit dieser Speicherplatz nutzbar wird, sind zwei separate Operationen erforderlich: Ändern des Partitionseintrags in der Tabelle und dann Vergrößern des ext4-Dateisystems, das es enthält. fdisk führt nur den ersten Schritt aus; resize2fs kommt danach ins Spiel.

SSD und USB-Gehäuse zur Wartung, um eine Ubuntu-Partition zu vergrößern
Überprüfung der Festplatte und des Startsektors vor der Änderung der Partitionstabelle.

Der Titel „ohne Datenverlust“ stellt keine Garantie dar. Die Sicherheit dieser Operation basiert auf einem tatsächlich getesteten Backup, der zweifelsfreien Identifizierung der richtigen Festplatte und der genauen Beibehaltung des Startsektors der Partition. Ein Ziel- oder Beginnfehler kann die Daten unzugänglich machen. Wenn eine Überprüfung nicht mit dem übereinstimmt, was hier beschrieben wird, stoppen Sie, bevor Sie schreiben.

Überprüfen Sie, ob Ihre Partition in den behandelten Fall fällt

Dieser Leitfaden betrifft eine klassische Linux-Datenpartition, die in ext4 formatiert ist, nicht die Root-Partition, nicht LVM, nicht verschlüsselt und nicht Teil von Software-RAID mdraid. Der nicht zugeordnete Speicherplatz muss sich direkt nach der Partition befinden, die Sie vergrößern möchten. Die Partition darf keine logische Partition in einer erweiterten MBR-Partition sein. Schließlich muss sie für die Operation unmontiert verfügbar sein: Versuchen Sie nicht, eine Ablehnung des Kernels zu umgehen, weil sie verwendet wird.

Beginnen Sie mit der Überprüfung der Geräte- und Dateisystemorganisation:

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS

Identifizieren Sie die übergeordnete Festplatte, den part-Eintrag, der Sie interessiert, sein Format und seinen Einhängepunkt. Eine Zwischenschicht, ein LVM-Logikvolume, Verschlüsselung oder RAID bedeutet, dass Sie nicht direkt auf eine klassische ext4-Partition zugreifen: Stoppen Sie und folgen Sie dem Verfahren dieser Schicht. Um eine Datenpartition von einer eingebundenen Root-Partition zu unterscheiden, überprüfen Sie auch die Einhängepunkte:

findmnt

In den Beispielen dieses Artikels bezeichnet /dev/sdX die gesamte Festplatte, zu ersetzen durch den tatsächlich identifizierten Namen, z.B. ein Gerät Ihres Systems. /dev/sdXN bezeichnet die Partition dieser Festplatte mit der tatsächlichen Nummer. Dies sind Platzhalter, keine Pfade, die so kopiert werden. Verwechseln Sie nicht die übergeordnete Festplatte mit der Partition: fdisk erhält das erste, während resize2fs auf das zweite abzielt.

Untersuchen Sie die Tabelle und die Grenzen der identifizierten Festplatte:

sudo fdisk -l /dev/sdX

Ersetzen Sie /dev/sdX durch die am vorherigen Schritt bestätigte Festplatte. Suchen Sie nach dem Typ der Tabelle (gpt oder dos, das heißt MBR), der Nummer der Zielpartition, ihrem Startsektor („Start“), dem Ende („Ende“) und ihrem Typ. Der freie Speicher sollte direkt nach dem Ende der Partition beginnen und sollte sich erstrecken, ohne dass eine andere Partition dazwischenliegt. Wenn der Speicherplatz vor der Partition ist, belegt ist oder wenn die Festplatte bereits vollständig zugewiesen ist oder wenn Sie diese Grenzen nicht sicher festlegen können, verwenden Sie diese Methode nicht. Wenn die Identifizierung der Festplatte unsicher bleibt, überprüfen Sie zuerst die in diesem Leitfaden vorgestellten Überprüfungen zur Vorbereitung einer Partition, ohne die falsche Festplatte zu löschen. Wenn die Festplatte selbst vergrößert werden muss, erfolgt dieser vorherige Schritt in der Umgebung, die sie bereitstellt; er wird hier nicht weiter erläutert.

Halten Sie auch an, wenn das Ziel die eingebundene Root-Partition ist, wenn das Dateisystem nicht ext4 ist oder wenn Sie eine logische/erweiterte MBR-Partition, LVM, LUKS, mdraid, Btrfs oder XFS haben. Diese Fälle gehören zu einer anderen Schicht oder zu einem anderen Verfahren. Verschieben Sie niemals den Beginn der Partition, um Speicherplatz vor ihr zurückzugewinnen.

Backup der Daten und Protollierung der Parameter

Bevor Sie die Tabelle berühren, erstellen Sie ein vollständiges Backup der Daten auf einem separaten Medium und überprüfen Sie es durch tatsächliches Lesen oder Wiederherstellen. Eine Sicherungsdatei der Tabelle ersetzt nicht diese Dateisicherungen. Planen Sie ein Wartungsfenster und die Möglichkeit eines kontrollierten Neustarts, falls der Kernel die Tabelle nicht sofort neu lesen kann.

Sie können eine Protokollierung der Tabelle an einem vom Ihrer Shell beschreibbaren Ort speichern:

sudo sfdisk -d /dev/sdX > backup-table-sdX.sfdisk

Ersetzen Sie /dev/sdX und den Namen backup-table-sdX.sfdisk durch die des bestätigten Laufwerks. Stellen Sie sicher, dass die erstellte Datei vorhanden, lesbar und nicht leer ist, dass sie das richtige Laufwerk beschreibt, und bewahren Sie eine Kopie davon außerhalb des bearbeiteten Laufwerks auf. Die Umleitung > wird von der aufrufenden Shell ausgeführt: sudo gewährt nicht automatisch Schreibrechte für den Zielordner. Betrachten Sie dieses Dump nicht als eine improvisierte Wiederherstellungsmethode.

Notieren Sie außerhalb Ihrer Sitzung die genauen Parameter der Zielpartition: Nummer, Startsektor, Endsektor, Typ und GPT- oder MBR-Tabelle. Vergleichen Sie diese mit der Ausgabe des vorherigen Befehls und mit der interaktiven Anzeige, die weiter unten beschrieben wird. Der Startsektor ist der kritische Bezugspunkt: Er muss identisch bleiben, ohne Versatz, nach der Neugestaltung des Eintrags. Überprüfen Sie auch, dass die geplante Erweiterung keine andere Partition überdeckt.

Wenn Ihr System Partition- oder Dateisystem-IDs verwendet, notieren Sie diese vor der Operation:

blkid

blkid zeigt insbesondere die UUID-Werte des Dateisystems und, je nach Gerät, die PARTUUID-Werte der Partition an. Vergleichen Sie diese Werte dann mit den Referenzen, die für die Einhängepunkte oder den Bootvorgang verwendet werden. Das Löschen und anschließende Wiedererstellen eines Eintrags kann dessen PARTUUID ändern; nehmen Sie nicht an, dass er stabil bleibt. Wenn Sie nicht wissen, welche Referenzen aktiv sind oder wie Sie mit einer Differenz umgehen sollen, stoppen Sie, bevor Sie schreiben. Gleiches gilt, wenn das Backup der Daten nicht getestet wurde, wenn der Tabellendump fehlt oder inkonsistent ist oder wenn die Nummer, der Typ oder der Beginn unklar sind.

Den Eintrag in fdisk ohne Verschiebung des Beginns neu erstellen

Die Operation in fdisk bezieht sich auf die Partitionstabelle, nicht auf den Inhalt von ext4. Die Dokumentation von fdisk beschreibt die Handhabung von GPT- und MBR-Tabellen sowie die Partitioninformationen, die überprüft werden müssen. Öffnen Sie das Tool auf dem bereits identifizierten übergeordneten Laufwerk:

sudo fdisk /dev/sdX

Ersetzen Sie den Platzhalter durch die gesamte Festplatte, nicht durch den Namen der Partition. In der interaktiven Schnittstelle fahren Sie nur fort, wenn Sie jede Anzeige verstanden haben:

  • Geben Sie p ein, um die Tabelle anzuzeigen. Finden Sie erneut die Zielpartition, ihre Nummer, ihren Typ und ihren Startsektor. Diese müssen mit Ihren Notizen übereinstimmen.
  • Das Löschen des Eintrags mit d betrifft nur die Zielpartition. Wenn das Tool nach einer Nummer fragt, wählen Sie die, die Sie überprüft haben; raten Sie nicht und löschen Sie keinen anderen Eintrag.
  • Erstellen Sie mit n den Ersatz-Eintrag. Behalten Sie die gleiche Nummer bei und geben Sie genau denselben ersten Sektor wie den notierten an. Wählen Sie ein Ende, das weiter im benachbarten freien Raum liegt, ohne die Festplatte zu überschreiten oder eine andere Partition zu überdecken. Berücksichtigen Sie den Vorschlag zur Ausrichtung von fdisk; wenn dies einen anderen Beginn impliziert oder wenn Sie die Warnung nicht verstehen, setzen Sie nicht fort.
  • Überprüfen Sie, dass der ursprüngliche Partitionstyp beibehalten wird. Anzeigen Sie die Tabelle erneut mit p und vergleichen Sie sie mit Ihren Notizen: dieselbe Nummer, derselbe Typ, derselbe Start, neues erwartetes Ende und alle anderen Einträge intakt.

Bestätigen Sie das Schreiben mit w, nur wenn jeder Wert übereinstimmt und Sie die angezeigten Nachrichten verstehen. Andernfalls beenden Sie ohne zu schreiben und fahren Sie mit der Diagnose fort. Wenn fdisk ein ext4-Signatur meldet und anbietet, diese zu löschen, lehnen Sie ab: Löschen Sie dieses Signatur nicht. Eine Warnung, ein unerwarteter Dialog oder eine Inkonsistenz in der Nummerierung ist ein Grund zum Stoppen, kein Grund, zufällige Antworten auszuprobieren.

Nach dem Schreiben beschreibt die Tabelle eine größere Partition, aber ext4 behält noch seine ursprüngliche Größe bei. Der zweite Schritt ist erforderlich, damit das Dateisystem den hinzugefügten Speicherplatz nutzt.

Den Kernel die Tabelle neu lesen lassen

Fordern Sie den Kernel auf, die Tabelle des betreffenden Laufwerks neu zu lesen:

sudo partprobe /dev/sdX

Verwenden Sie immer das bestätigte übergeordnete Laufwerk. Eine fehlerfreie Rückmeldung von partprobe reicht nicht aus, um zu beweisen, dass die neue Größe tatsächlich erkannt wird. Lesen Sie die Tabelle erneut und überprüfen Sie die vom Kernel angezeigte Größe:

sudo fdisk -l /dev/sdX
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS

Der Startsektor muss unverändert bleiben, das neue Ende muss innerhalb der vorgesehenen Grenzen bleiben, und lsblk muss die neue Größe der Zielpartition anzeigen, ohne Anomalien bei anderen Einträgen. Wenn der Kernel die Tabelle nicht neu lädt, führen Sie resize2fs nicht aus. Verschieben Sie die Operation; wenn Ihre Umgebung es zulässt, organisieren Sie einen Neustart in einem kontrollierten Fenster und überprüfen Sie erneut die Tabelle und die erkannte Größe, bevor Sie ext4 erweitern. Wenn das Neulesen für eine eingebundene Root-Partition fehlschlägt, stoppen Sie: Dieser Fall gehört nicht zu diesem Tutorial.

ext4 vergrößern und das Ergebnis überprüfen

Wenn der Kernel die vergrößerte Partition korrekt erkennt und der Startsektor identisch mit dem notierten Wert ist, können Sie das ext4-Dateisystem erweitern:

sudo resize2fs /dev/sdXN

Ersetzen Sie /dev/sdXN durch den genauen Namen der ext4-Partition mit ihrer tatsächlichen Nummer — nicht durch das übergeordnete Laufwerk. resize2fs erweitert ext2/3/4 innerhalb des bestehenden Containers; es ändert nicht die Partitionstabelle. Die Ausführungsreihenfolge erfolgt daher nach der Vergrößerung und dem erfolgreichen Neulesen dieser Tabelle, wie in der Dokumentation von resize2fs angegeben. Ein neu erstellter Partitionseintrag an einem anderen Sektor könnte das Dateisystem einem vollständigen Verlust aussetzen: Verwenden Sie diesen Befehl nicht, wenn der Beginn nicht genau übereinstimmt.

Warten Sie auf das Ende des Befehls und überprüfen Sie, dass er keine Fehler meldet. Überprüfen Sie dann die Dateisysteme und die IDs:

lsblk -f
blkid

Die Zielpartition muss weiterhin als ext4 angezeigt werden, mit den erwarteten IDs oder mit allen Unterschieden der UUID/PARTUUID, die verstanden und behandelt wurden. Wenn PARTUUID-Referenzen geändert wurden, stellen Sie das System nicht wieder in Betrieb, bevor Sie, je nach Ihrer Umgebung, die betreffenden Einhänge- oder Bootreferenzen überprüft und korrigiert haben. Nehmen Sie nicht an, dass eine Referenz nach der Neugestaltung des Eintrags gültig bleibt.

Um den nutzbaren Speicherplatz auf einem eingebundenen Dateisystem zu überprüfen, verwenden Sie:

df -hT

Nach dem Einhängen gemäß dem Verfahren Ihrer Umgebung sollte die Zeile der betreffenden Partition den Typ ext4 und eine erhöhte nutzbare Kapazität anzeigen. Wenn die Partition nicht eingebunden ist, ist ihr Fehlen in df normal und beweist nicht, dass es einen Fehler gibt. Denken Sie daran, dass eine größere Tabelle nicht bedeutet, dass ext4 dies auch ist, solange resize2fs nicht erfolgreich war.

Fehler und Situationen, die zum Stoppen zwingen

Gehen Sie nicht weiter, wenn Sie die Festplatte nicht identifizieren können, wenn der erste Sektor unbekannt oder unterschiedlich ist, wenn ein Backup nicht überprüft wurde, wenn der Speicherplatz nicht benachbart ist oder wenn eine andere Partition überdeckt werden könnte. Stoppen Sie auch bei Warnungen zu ext4-Signaturen, wenn der Typ wechselt, bei unverständlichen fdisk-Dialogen oder wenn das Neulesen durch den Kernel fehlschlägt.

Ein Fehler bei resize2fs, eine Größe, die nicht mit der der Tabelle übereinstimmt, oder eine unerwartete UUID/PARTUUID erfordern ebenfalls, dass die Wiederinbetriebnahme ausgesetzt wird und die Situation überprüft wird. Verketten Sie keine Formatierung, improvisierte Reparaturen oder geplanten Änderungen der Tabelle. Wenn Sie außerhalb des hier beschriebenen einfachen ext4-Szenarios sind, verwenden Sie die Dokumentation, die zur tatsächlichen Schicht gehört, anstatt diese Sequenz anzupassen.

Zu beachten

Für diese ext4-Datenpartition gehen Sie in dieser Reihenfolge vor: getestet Backup, Identifizierung und Protokollierung der Parameter, Erweiterung des Eintrags mit demselben Startsektor, vom Kernel bestätigtes Neulesen und dann Erweiterung von ext4 mit resize2fs. Jede Unsicherheit bezüglich der Festplatte, der Sektoren, der IDs oder des erwarteten Ergebnisses ist Grund genug, die Tabelle nicht zu schreiben.