Wer bei einem Server-Anbieter[1] ein Festplattenupgrade für seinen virtuellen (Root-)Server bestellt, wird unter Umständen feststellen, dass die kursierenden Anleitungen zum Ändern der Partitionstabelle nicht wirklich funktionieren. Das liegt daran, dass die Methode, die bei einem MBR noch funktioniert hat, stumpf auf eine GPT übertragen wurde: Die letzte Partition löschen, größer neu anlegen, fertig. Ging mit dem guten alten fdisk, geht doch mit gdisk genauso, nicht wahr?
Nö.
gdisk macht das nicht mit. Hier ein Beispiel einer seitens des Anbieters von 500GB auf 1TB vergrößerten (virtuellen) Platte:
Found valid GPT with protective MBR; using GPT.
Command (? for help): p
Disk /dev/sda: 1966080000 sectors, 937.5 GiB
Logical sector size: 512 bytes
First usable sector is 34, last usable sector is 981467102
Total free space is 4541 sectors (2.2 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 20479 9.0 MiB EF02 primary
2 20480 7833599 3.7 GiB 8200 primary
3 7833600 981464575 464.3 GiB 8300 primary
Hier muss man genau hinsehen: Das Gerät /dev/sda hat nun zwar 1966080000 Sektoren, der letzte nutzbare ist aber noch immer 981467102, welcher kurz nach dem letzten Sektor der letzten Partition liegt. Obwohl das Gerät also ca. 1TB groß ist und die Partitionen nur die Hälfte davon belegen, stehen nur ein paar übriggebliebene Sektoren mit einer Gesamtgröße von etwa 2MB zur Verfügung. Der Versuch, die dritte Partition zu löschen und neu anzulegen, endet damit, dass diese wieder bei Sektor 981464575 endet, der restliche Platz ist nicht nutzbar. Das kann einem einiges Kopfzerbrechen bereiten.
Der Grund ist mir noch nicht bekannt. Ich vermute, dass eine Kopie der GPT am Ende des Datenträgers abgelegt wird. Und gdisk will diese nicht überschreiben.
Die Lösung ist überraschend simpel: Man muss nur mit 'o' die gesamte Partitionstabelle löschen bzw. neu anlegen. Ein Speichervorgang ist nicht notwendig, gdisk erkennt sofort, dass nun mehr Sektoren nutzbar sind.
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y
Command (? for help): p
Disk /dev/sda: 1966080000 sectors, 937.5 GiB
Logical sector size: 512 bytes
First usable sector is 34, last usable sector is 1966079966
Total free space is 1966079933 sectors (937.5 GiB)
In diesem Beispiel legt man nun die ersten beiden Partitionen identisch, die dritte entsprechend größer an.
[1] Ich könnte ja "Cloud-Anbieter" schreiben, aber die Cloud ist eben einfach nur jemand anderes Computer…
If your last usable sector in your GPT is far lower than the amount of sectors on your (virtual) harddisk, e.g. after your server provider granted you more diskspace, just delete the whole GPT and re-create it. You can do this in memory — there is no need to write the emtpy partition table.