GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Live-Größenänderung einer GPT-Partition unter Linux

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.


Linux
  1. So ändern (erweitern) Sie die Größe eines partitionsbasierten Dateisystems in Linux

  2. Was entspricht dem Linux-Befehl sudo fdisk -l in MacOS?

  3. Wie aktiviere ich die Linux-Swap-Partition?

  4. Ist es möglich, Linux von einer GPT-Festplatte auf einem BIOS-System zu booten?

  5. Größe der /var-Partition auf einem entfernten System ändern (Linux Debian Lenny)

Unter Linux ist alles eine Datei – Teil 2

Linux-Partitionsverwaltung

So verschlüsseln Sie eine Partition unter Linux

Eine Partition unter Linux erstellen – Eine Schritt-für-Schritt-Anleitung

9 Beispiele für partierte Linux-Befehle – mkpart, mkpartfs, Partitionsgröße ändern

Verstehen des parted Linux-Dienstprogramms