Der sicherste Weg, dies zu tun, besteht darin, mit einem Notfallmedium (einer Live-CD oder ähnlichem) zu booten und GParted zu verwenden, das sowohl die Größe der Partition als auch des darin enthaltenen Dateisystems ändert. Dies funktioniert jedoch nur, wenn die Partition derzeit nicht verwendet wird.
Wenn Sie sich jedoch keine Ausfallzeit leisten können, können Sie es mit gdisk
versuchen statt parted
. Sie müssen die Partition, deren Größe Sie ändern möchten, löschen und an ihrer Stelle eine neue mit demselben Startpunkt erstellen, ähnlich wie Sie es mit fdisk
getan hätten . gdisk
ist bereit, auf einer in Gebrauch befindlichen Platte zu arbeiten, obwohl der Kernel möglicherweise keine Änderungen registriert. In diesem Fall müssen Sie möglicherweise partprobe
verwenden oder kpartx
um den Kernel dazu zu bringen, die neue Partitionstabelle zu akzeptieren, oder den Computer sogar neu zu starten, wenn das nicht funktioniert. (Dies sollte der Verwendung von fdisk
ziemlich ähnlich sein .)
Das funktioniert meist nur mit neueren Linux-Distributionen. Benötigte Werkzeuge:
- partprobe (normalerweise Teil von parted)
- gdisk / sgdisk
Eine GPT-Partition speichert einen Backup-Header am Ende der Festplatte. Wenn Sie die Größe des zugrunde liegenden Geräts geändert haben, befindet sich der Backup-Header irgendwo in der Mitte. Der erste Schritt besteht darin, den Partitionsheader an das Ende der Festplatte zu verschieben.
Angenommen, die Platte ist /dev/sda und die Partition /dev/sda3 (muss auch die letzte Partition sein):
sgdisk -e /dev/sda
Dann lösche die letzte Partition und erstelle sie neu:
sgdisk -d 3 /dev/sda
sgdisk -N 3 /dev/sda
Normalerweise sehen Sie eine Meldung, die darauf hinweist, dass der Kernel die Partitionstabelle nicht neu laden kann. Sie müssen partprobe ausführen, damit die Partition mit der neuen Größe registriert wird:
partprobe /dev/sda
Wenn dies nicht erfolgreich ist, müssen Sie die virtuelle Maschine neu starten. Danach können Sie Ihr Dateisystem mit dem entsprechenden Tool erweitern, für ext4 etc.:
resize2fs /dev/sda3
Achtung :Das Ausführen von sgdisk kann destruktiv sein. Stellen Sie sicher, dass Sie über geeignete Sicherungsverfahren verfügen.
Hier ist ein Beispiel, das ein automatisiertes Tool verwendet, um die Größe einer Partition online in einem Durchgang zu ändern:
sgdisk -d 1 -n 1:2048:0 -c 1:-u1:E485F29F-A1F4-4953-9DD8-799EAEA0119B -t 1:0700 /dev/xvda
Hier ist eine Liste der Optionen für den Befehl sgdisk:
- -d 1 erste Partition löschen
- -n 1:2048:0 sagt erstelle eine neue Partition "Nummer 1", mit Startsektor 2048. Endsektor ="0", was bedeutet "nutze den gesamten verfügbaren Speicherplatz für diese Partition
- -u legt eine eindeutige Anleitung für diese Partition fest (dies ist spezifisch für GPT-Partitionen); Sie könnten 'R' verwenden, um die GUID auf einen zufälligen Wert zu setzen. Sie können die ID der aktuellen Partition auch über
gdisk /dev/xvda; p
erhalten ausgegeben, um dieselbe UID wiederzuverwenden - -t 1:0700 bedeutet im Grunde, dass die erste Partition vom Typcode '0700' ist.
/dev/xvda war die Festplatte, die wir neu partitioniert haben.
Also löscht es und erstellt sofort eine neue Partition an ihrer Stelle.
PS. Ein paar Anmerkungen zum Typencode '0700'. Von Mann SGDISK(8)
-t, --typecode=partnum:{hexcode|GUID} Change a single partition's type code. You enter the type code using either a two-byte hexadecimal number, as
wie zuvor beschrieben, oder ein vollständig angegebener GUID-Wert, z. B. EBD0A0A2-B9E5-4433-87C0-68B6B72699C7.
Die beste Erklärung für die Bedeutung von '0700' finden Sie hier - http://www.rodsbooks.com/gdisk/walkthrough.html
"Aber warte", sagst du, "ich dachte, die Festplatte hätte eine FAT-Partition!" In der Tat tut es das. Windows verwendet einen einzigen GUID-Code für alle seine Datenpartitionen, seien es FAT oder NTFS. In der Vergangenheit wurde derselbe Code in Linux für seine Datenpartitionen verwendet. (Mehr dazu in Kürze....) In diesem Fall werden also mehrere verschiedene MBR-Codes alle in einen einzigen GPT-GUID-Code übersetzt. GPT fdisk verwendet, etwas willkürlich, den 0x0700-Code (oder genauer EBD0A0A2-B9E5-4433-87C0-68B6B72699C7) für all diese.
In meinem Fall war das glaube ich eine Linux ext4-Partition, aber der Typcode der Partition bedeutet nicht den Dateisystemtyp, also sieht '0700' eher wie ein Catchall-Typ für sgdisk aus. Zumindest in Fällen, die ich gesehen habe.
PPS. Möglicherweise müssen Sie partprobe
ausführen damit der Kernel die Partitionierungsänderung erkennt, ohne das System neu zu starten.