GNU/Linux >> Tutoriales Linux >  >> Linux

Cambio de tamaño en vivo de una partición GPT en Linux

La forma más segura de hacer esto es arrancar usando un medio de emergencia (un CD en vivo o similar) y usar GParted, que cambiará el tamaño tanto de la partición como del sistema de archivos que contiene. Sin embargo, esto funcionará solo si la partición no se está utilizando actualmente.

Sin embargo, si no puede permitirse ningún tiempo de inactividad, puede intentar usar gdisk en lugar de parted . Deberá eliminar la partición que desea cambiar de tamaño y crear una nueva en su lugar con el mismo punto de inicio, tal como lo habría hecho con fdisk . gdisk está dispuesto a trabajar en un disco en uso, aunque es posible que el kernel no registre ningún cambio. En ese caso, es posible que deba usar partprobe o kpartx para que el kernel acepte la nueva tabla de particiones, o incluso reinicie la computadora si eso no funciona. (Todo esto debería ser bastante similar a usar fdisk .)


Esto generalmente solo funciona con las distribuciones de Linux más recientes. Herramientas necesarias:

  • partprobe (generalmente parte de parted)
  • gdisk / sgdisk

Una partición GPT almacena un encabezado de respaldo al final del disco. Si ha cambiado el tamaño del dispositivo subyacente, el encabezado de la copia de seguridad estará en algún lugar en el medio. El primer paso es mover el encabezado de la partición al final del disco.

Asumiendo que el disco es /dev/sda y la partición es /dev/sda3 (también debe ser la última partición):

sgdisk -e /dev/sda

Luego elimine la última partición y vuelva a crearla:

sgdisk -d 3 /dev/sda
sgdisk -N 3 /dev/sda

Por lo general, verá un mensaje que indica que el núcleo no puede volver a cargar la tabla de particiones. Debe ejecutar partprobe para que la partición se registre con el nuevo tamaño:

partprobe /dev/sda

Si esto no tiene éxito, deberá reiniciar la máquina virtual. Después de eso, puede hacer crecer su sistema de archivos con la herramienta adecuada, para ext4, etc.:

resize2fs /dev/sda3

Precaución :ejecutar sgdisk puede ser destructivo. Asegúrese de contar con los procedimientos de copia de seguridad adecuados.


Este es un ejemplo que utiliza una herramienta automatizada para cambiar el tamaño de una partición en línea, en una sola ejecución:

sgdisk -d 1 -n 1:2048:0 -c 1:-u1:E485F29F-A1F4-4953-9DD8-799EAEA0119B -t 1:0700 /dev/xvda

Aquí hay una lista de opciones para el comando sgdisk:

  • -d 1 eliminar la primera partición
  • -n 1:2048:0 dice crear una nueva partición "número 1", con el sector inicial 2048. Sector final ="0", lo que significa "usar todo el espacio disponible para esta partición
  • -u establece GUID único para esa partición (esto es específico para particiones GPT); podría usar 'R' para que GUID se establezca en un valor aleatorio. También puede obtener la identificación de las particiones actuales a través de gdisk /dev/xvda; p salida para reutilizar el mismo uid
  • -t 1:0700 básicamente significa que la primera partición tiene el código de tipo '0700'.

/dev/xvda fue el disco que particionamos.

Entonces elimina y crea una nueva partición en su lugar de inmediato.

PD. Algunas notas sobre el código tipo '0700'. Del hombre 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 

descrito anteriormente, o un valor GUID completamente especificado, como EBD0A0A2-B9E5-4433-87C0-68B6B72699C7.

Encontré la mejor explicación de lo que significa '0700' aquí - http://www.rodsbooks.com/gdisk/walkthrough.html

"Pero espera", dices, "¡Pensé que el disco tenía una partición FAT!" De hecho lo hace. Windows usa un único código GUID para todas sus particiones de datos, ya sean FAT o NTFS. En el pasado, el mismo código se ha utilizado en Linux para sus particiones de datos. (Más sobre esto en breve....) Por lo tanto, en este caso, varios códigos MBR diferentes se traducen en un único código GPT GUID. GPT fdisk usa, de manera algo arbitraria, el código 0x0700 (o más precisamente, EBD0A0A2-B9E5-4433-87C0-68B6B72699C7) para todos estos.

En mi caso, creo que era una partición Linux ext4, pero el código de tipo de la partición no significa el tipo de sistema de archivos, por lo que '0700' se parece más a un tipo general para sgdisk. Al menos en los casos que he visto.

PPS. Es posible que deba ejecutar partprobe para que el núcleo se dé cuenta del cambio de partición sin reiniciar el sistema.


Linux
  1. Cómo particionar un disco en Linux

  2. ¿Hacer una partición de recuperación en Embedded Linux?

  3. ¿Cómo mover una partición en GNU/Linux?

  4. ¿Es posible iniciar Linux desde un disco GPT en un sistema BIOS?

  5. Cambiar el tamaño de la partición /var en un sistema remoto (Linux Debian Lenny)

Todo es un archivo en Linux - Parte 2

Gestión de particiones de Linux

Cómo cifrar la partición en Linux

Crear una partición en Linux:una guía paso a paso

9 ejemplos de comandos divididos de Linux:mkpart, mkpartfs, redimensionar particiones

Entendiendo la utilidad separada de Linux