Cambiar el tamaño de la partición fdisk falla con un argumento no válido

Cambiar el tamaño de la partición fdisk falla con un argumento no válido

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/Cancela 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/vda3para 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 -fsi resize2fses ext4). Si está trabajando con un archivo de imagen de disco sin formato (es decir, para QEMU), puede usarlo kpartx -av disk.imgpara obtener dispositivos de bucle para sus particiones para poder ejecutarlos e2fscken resize2fsesos dispositivos de bucle.

Respuesta3

El problema es que el MBR protector (PMBR) es demasiado pequeño. Puede cambiar el MBR protector usando:

  1. xpara funcionalidad adicional
  2. Mpara ingresar al MBR protector/híbrido
  3. ( ppermite mostrar el MBR protector)
  4. rpara volver al menú principal (¡todavía en modo protector MBR!)
  5. dpara eliminar la partición protectora MBR de tamaño incorrecto
  6. npara crear una nueva partición y 4x enterpara aceptar la configuración predeterminada (primaria, partición número 1 y tamaño completo)
  7. ty eecambiar el tipo a GPT
  8. xpara funcionalidad adicional
  9. Mpara salir del modo MBR protector/híbrido
  10. rpara volver al menú principal (ahora en modo GPT nuevamente)
  11. wescribir

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 Oy 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.

información relacionada