
Recientemente cambié el tamaño de un VPS de un SSD de 50 GB a un SSD de 300 GB a través del panel de control de mi proveedor de alojamiento. Ahora estoy intentando cambiar el tamaño de mi partición principal con fdisk para poder utilizar todo el espacio nuevo. Sin embargo, fdisk me da una advertencia al iniciar:
GPT PMBR size mismatch (104857599 != 629145599) will be corrected by w(rite).
GPT PMBR size mismatch (104857599 != 629145599) will be corrected by w(rite).
Parece obvio que es seis veces el tamaño anterior, ya que pasé de 50 GB a 300 GB. Entonces, decido seguir la pista y escribir la tabla...
Command (m for help): w
GPT PMBR size mismatch (104857599 != 629145599) will be corrected by w(rite).
fdisk: failed to write disklabel: Invalid argument
.. que no funciona. No puedo encontrar la causa de ese error en ninguna parte a pesar de muchas consultas de búsqueda. No uso LVM y mi tabla de particiones se ve así:
Disk /dev/vda: 300 GiB, 322122547200 bytes, 629145600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 30D92031-0C13-42FF-AC16-D34F36DD3907
Device Start End Sectors Size Type
/dev/vda1 2048 32767 30720 15M BIOS boot
/dev/vda2 32768 16809983 16777216 8G Linux swap
/dev/vda3 16809984 104857566 88047583 42G Linux filesystem
Observe cómo el disco lo muestra como 300 GiB, por lo que reconoce el cambio de tamaño.
Respuesta1
Logré resolver esto de manera bastante simple. Instalé parted y cuando lo ejecuté me informó que la tabla de particiones no cubría el disco completo (obvio), así que me preguntó Fix/Cancel
a cuál respondí con Fix
. Aparentemente, eso funcionó, ya que pude modificar la partición al tamaño completo usando sudo fdisk /dev/vda
, pero luego tuve que ejecutar sudo resize2fs /dev/vda3
para aplicar los cambios.
Respuesta2
Esto es lo que funcionó para mí cuando intenté ampliar una partición GPT. Como siempre, al cambiar una tabla de particiones, una copia de seguridad es vital en caso de que no salga según lo planeado.
En primer lugar, no todos los fdisks son iguales. En Ubuntu 18.04, esta es la versión de fdisk que estoy usando:
$ fdisk -v
fdisk from util-linux 2.31.1
Inicie fdisk. Imprima su tabla de particiones con 'p' y verifique que la tabla de particiones existente sea GPT:
Disklabel type: gpt
Copie y pegue la información de la partición en otra ventana para que pueda recrear las particiones exactamente con los mismos sectores de inicio.
Reemplace la antigua tabla de particiones GPT con una nueva tabla de particiones GPT presionando 'g'.
Presione 'p' nuevamente para imprimir la nueva información de la tabla y verificar que ahora muestra el tamaño más grande.
Presione 'n' para recrear sus particiones. Todas las particiones deben recrearse con exactamente los mismos sectores inicial y último, excepto la última partición, que debe tener el mismo sector inicial pero puede tener un sector final mayor.
Si sus particiones tienen sistemas de archivos, debería ver algo como esto:
Partition #1 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: N
Responda con 'N' porque desea conservar las firmas de su sistema de archivos.
De vuelta en el indicador de fdisk, escriba 'p' una vez más para mirar la tabla y confirmar que todo se ve como debería.
Escriba 'w' para escribir (confirmar) los cambios.
Desde allí, salga de fdisk y siga un procedimiento estándar para cambiar el tamaño de su sistema de archivos (por ejemplo, e2fsck -f
si resize2fs
es ext4). Si está trabajando con un archivo de imagen de disco sin formato (es decir, para QEMU), puede usarlo kpartx -av disk.img
para obtener dispositivos de bucle para sus particiones para poder ejecutarlos e2fsck
en resize2fs
esos dispositivos de bucle.
Respuesta3
El problema es que el MBR protector (PMBR) es demasiado pequeño. Puede cambiar el MBR protector usando:
x
para funcionalidad adicionalM
para ingresar al MBR protector/híbrido- (
p
permite mostrar el MBR protector) r
para volver al menú principal (¡todavía en modo protector MBR!)d
para eliminar la partición protectora MBR de tamaño incorrecton
para crear una nueva partición y 4x enterpara aceptar la configuración predeterminada (primaria, partición número 1 y tamaño completo)t
yee
cambiar el tipo a GPTx
para funcionalidad adicionalM
para salir del modo MBR protector/híbridor
para volver al menú principal (ahora en modo GPT nuevamente)w
escribir
Con eso pude solucionar la discrepancia en el tamaño de GPT PMBR.
Para solucionar el problema de la etiqueta del disco, tuve que volcar la tabla de particiones usando O
y cambiar last-lba en el script exportado al tamaño del disco como se informa en fdisk
, menos 34 (para GPT secundario). Luego volví a importar el script usando I
.
Respuesta4
Solucioné el problema con gdisk. Aquí esta lo que hice:
sudo fdisk --list
GPT PMBR size mismatch (41943039 != 62914559) will be corrected by w(rite).
Disk /dev/sda: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 62D6A220-B955-44BE-9730-CC89FE5CA928
# Naive fix attempt:
sudo fdisk /dev/sda
w
# ^^ fails with:
# GPT PMBR size mismatch (62914559 != 83886079) will be corrected by w(rite).
# fdisk: failed to write disklabel: Invalid argument
# try (because it is a GPT disk?)
viradmin@instance-2:~$ sudo gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): ?
b back up GPT data to a file
c change a partition's name
d delete a partition
i show detailed information on a partition
l list known partition types
n add a new partition
o create a new empty GUID partition table (GPT)
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit
x extra functionality (experts only)
? print this menu
Command (? for help): w
Warning! Secondary header is placed too early on the disk! Do you want to
correct this problem? (Y/N): y
Have moved second header and partition table to correct location.
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
# then
sudo reboot
luego también hice lo siguiente, porque estaba en una máquina Ubuntu en Google Cloud (siguiendo la guíahttps://slacker.ro/2019/07/17/how-to-increase-google-cloud-virtual-machine-disk-size/):
sudo apt install -y cloud-guest-utils
sudo growpart /dev/sda 1
sudo resize2fs /dev/sda1
stage@instance-2:/$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 30308240 16684136 13607720 56% /
# fixed:
sudo fdisk --list
Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 62D6A220-B955-44BE-9730-CC89FE5CA928
Device Start End Sectors Size Type
/dev/sda1 227328 83886046 83658719 39.9G Linux filesystem
/dev/sda14 2048 10239 8192 4M BIOS boot
/dev/sda15 10240 227327 217088 106M EFI System
Después de esto, el disco y la partición crecieron correctamente al nuevo tamaño:
Espero que esto ayude.