Gestión de Discos y Particiones en Linux: Guía Completa de fdisk, parted y gdisk
La gestión efectiva de discos y particiones es una habilidad fundamental para cada administrador de sistemas Linux. Ya sea que esté configurando un nuevo servidor, expandiendo la capacidad de almacenamiento o reorganizando su diseño de disco, comprender las herramientas principales de particionamiento—fdisk, parted y gdisk—es esencial para mantener una infraestructura de almacenamiento robusta y escalable.
Esta guía completa le guía a través de todo lo que necesita saber sobre el particionamiento de discos en Linux, desde conceptos básicos hasta técnicas avanzadas utilizando las tres principales utilidades de particionamiento disponibles en sistemas Linux modernos.
Introducción al Particionamiento de Discos en Linux
El particionamiento de discos es el proceso de dividir un dispositivo de almacenamiento físico en secciones lógicas separadas llamadas particiones. Cada partición funciona como un disco independiente, permitiéndole organizar datos, instalar múltiples sistemas operativos o implementar diferentes sistemas de archivos en un solo disco físico.
Linux admite múltiples formatos de tabla de particiones, siendo los más comunes:
- MBR (Master Boot Record): Formato de tabla de particiones legacy que admite hasta 4 particiones primarias y discos de hasta 2TB
- GPT (GUID Partition Table): Formato de tabla de particiones moderno que admite hasta 128 particiones y discos mayores a 2TB
Comprender qué herramienta usar para qué tipo de tabla de particiones es crucial:
- fdisk: Herramienta tradicional para particiones MBR, las versiones más nuevas admiten GPT
- parted: Herramienta versátil que admite tanto MBR como GPT con características avanzadas
- gdisk: Herramienta especializada diseñada específicamente para particiones GPT
Requisitos Previos
Antes de trabajar con particiones de disco, asegúrese de tener:
- Acceso root o sudo a su sistema Linux
- Comprensión básica de la interfaz de línea de comandos de Linux
- Conocimiento de su configuración actual de disco
- Respaldo completo de todos los datos importantes (las operaciones de particionamiento pueden resultar en pérdida de datos)
- Comprensión de la diferencia entre /dev/sda, /dev/nvme0n1 y otras convenciones de nomenclatura de dispositivos
Advertencia Crítica de Seguridad
PELIGRO: Las operaciones incorrectas de particionamiento pueden resultar en pérdida completa de datos. Siempre:
- Cree respaldos completos antes de modificar particiones
- Verifique dos veces los nombres de dispositivo antes de ejecutar comandos
- Verifique las tablas de particiones antes de escribir cambios
- Desmonte las particiones antes de modificarlas
- Pruebe los procedimientos en sistemas que no sean de producción primero
Comprensión de la Nomenclatura de Dispositivos de Disco en Linux
Antes de sumergirse en las herramientas de particionamiento, familiarícese con las convenciones de nomenclatura de dispositivos de disco de Linux:
- /dev/sda, /dev/sdb: Unidades SATA/SCSI (nomenclatura tradicional)
- /dev/nvme0n1, /dev/nvme1n1: Unidades de estado sólido NVMe
- /dev/vda, /dev/vdb: Discos virtuales en entornos KVM/QEMU
- /dev/xvda: Discos virtuales en entornos Xen
Las particiones se numeran secuencialmente:
- /dev/sda1: Primera partición en la primera unidad SATA
- /dev/nvme0n1p1: Primera partición en la primera unidad NVMe
- /dev/sda2: Segunda partición en la primera unidad SATA
Listado de Discos y Particiones Disponibles
Antes de crear o modificar particiones, identifique sus dispositivos de almacenamiento disponibles.
Ver Todos los Dispositivos de Bloque
lsblk
Este comando muestra todos los dispositivos de bloque en formato de árbol:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 10G 0 part [SWAP]
└─sda3 8:3 0 89G 0 part /
sdb 8:16 0 500G 0 disk
Listar Tablas de Particiones
sudo fdisk -l
Esto proporciona información detallada sobre todos los discos y sus tablas de particiones.
Verificar Información del Disco con parted
sudo parted -l
Este comando muestra información completa de particiones incluyendo el tipo de tabla de particiones.
Trabajando con fdisk: Particionamiento MBR y GPT
fdisk es la utilidad de particionamiento de disco más ampliamente utilizada en sistemas Linux. Aunque históricamente diseñada para particiones MBR, las versiones modernas también admiten GPT.
Iniciando el Modo Interactivo de fdisk
sudo fdisk /dev/sdb
Reemplace /dev/sdb con su dispositivo de disco destino.
Comandos Esenciales de fdisk
Una vez en el modo interactivo de fdisk:
- m: Mostrar menú de ayuda
- p: Imprimir tabla de particiones actual
- n: Crear nueva partición
- d: Eliminar partición
- t: Cambiar tipo de partición
- w: Escribir cambios al disco
- q: Salir sin guardar
- g: Crear nueva tabla de particiones GPT
- o: Crear nueva tabla de particiones MBR
Creando una Nueva Tabla de Particiones GPT con fdisk
sudo fdisk /dev/sdb
Dentro de fdisk:
Command (m for help): g
Created a new GPT disklabel (GUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX).
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Creando una Nueva Partición con fdisk
sudo fdisk /dev/sdb
Dentro de fdisk:
Command (m for help): n
Partition number (1-128, default 1): 1
First sector (2048-1048575999, default 2048): [Press Enter]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1048575999, default 1048575999): +100G
Created a new partition 1 of type 'Linux filesystem' and of size 100 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Cambiando el Tipo de Partición con fdisk
sudo fdisk /dev/sdb
Dentro de fdisk:
Command (m for help): t
Partition number (1-128, default 1): 1
Partition type or alias (type L to list all): 8e
Changed type of partition 'Linux filesystem' to 'Linux LVM'.
Command (m for help): w
Códigos de tipo de partición comunes:
- 83: Sistema de archivos Linux
- 8e: Linux LVM
- 82: Linux swap
- fd: Linux RAID auto
Ejemplo Completo de fdisk: Creando Múltiples Particiones
sudo fdisk /dev/sdb
Sesión interactiva:
Command (m for help): g
Created a new GPT disklabel.
Command (m for help): n
Partition number (1-128, default 1): [Enter]
First sector: [Enter]
Last sector: +50G
Created a new partition 1 of type 'Linux filesystem' and of size 50 GiB.
Command (m for help): n
Partition number (2-128, default 2): [Enter]
First sector: [Enter]
Last sector: +100G
Created a new partition 2 of type 'Linux filesystem' and of size 100 GiB.
Command (m for help): n
Partition number (3-128, default 3): [Enter]
First sector: [Enter]
Last sector: [Enter]
Created a new partition 3 of type 'Linux filesystem' and of size 350 GiB.
Command (m for help): p
Disk /dev/sdb: 500 GiB
Device Start End Sectors Size Type
/dev/sdb1 2048 104859647 104857600 50G Linux filesystem
/dev/sdb2 104859648 314574847 209715200 100G Linux filesystem
/dev/sdb3 314574848 1048575999 733999152 350G Linux filesystem
Command (m for help): w
The partition table has been altered.
Trabajando con parted: Gestión Avanzada de Particiones
parted es una potente herramienta de particionamiento que admite tablas de particiones tanto MBR como GPT con características más avanzadas que fdisk.
Visualizando Información de Particiones con parted
sudo parted /dev/sdb print
Salida:
Model: ATA Samsung SSD 860 (scsi)
Disk /dev/sdb: 537GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 53.7GB 53.7GB ext4 primary
2 53.7GB 161GB 107GB ext4 primary
3 161GB 537GB 376GB ext4 primary
Creando Tabla de Particiones GPT con parted
sudo parted /dev/sdb mklabel gpt
Para tabla de particiones MBR:
sudo parted /dev/sdb mklabel msdos
Creando Particiones con parted
parted admite tanto modos interactivos como de línea de comandos.
Modo Interactivo
sudo parted /dev/sdb
Dentro de parted:
(parted) mkpart primary ext4 0% 50GB
(parted) mkpart primary ext4 50GB 150GB
(parted) mkpart primary ext4 150GB 100%
(parted) print
(parted) quit
Modo de Línea de Comandos (Scriptable)
sudo parted /dev/sdb mkpart primary ext4 0% 50GB
sudo parted /dev/sdb mkpart primary ext4 50GB 150GB
sudo parted /dev/sdb mkpart primary ext4 150GB 100%
Redimensionando Particiones con parted
ADVERTENCIA: Siempre respalde los datos antes de redimensionar particiones.
sudo parted /dev/sdb
Dentro de parted:
(parted) resizepart 3 200GB
(parted) quit
Esto redimensiona la partición 3 para terminar en 200GB. Tenga en cuenta que esto solo modifica la tabla de particiones; necesitará redimensionar el sistema de archivos por separado.
Eliminando Particiones con parted
sudo parted /dev/sdb rm 2
Esto elimina la partición 2 de /dev/sdb.
Configurando Banderas de Partición con parted
sudo parted /dev/sdb set 1 boot on
sudo parted /dev/sdb set 2 lvm on
Banderas comunes:
- boot: Partición de arranque
- lvm: Partición LVM
- raid: Partición RAID
- swap: Partición swap
Trabajando con gdisk: Herramienta Específica para GPT
gdisk está específicamente diseñado para tablas de particiones GPT y ofrece características no disponibles en fdisk o parted.
Iniciando el Modo Interactivo de gdisk
sudo gdisk /dev/sdb
Comandos Esenciales de gdisk
- p: Imprimir tabla de particiones
- n: Crear nueva partición
- d: Eliminar partición
- t: Cambiar tipo de partición
- w: Escribir cambios y salir
- q: Salir sin guardar
- i: Mostrar información detallada de partición
- x: Entrar en modo experto
- ?: Mostrar ayuda
Creando Particiones GPT con gdisk
sudo gdisk /dev/sdb
Sesión interactiva:
Command (? for help): n
Partition number (1-128, default 1): 1
First sector: [Press Enter]
Last sector: +100G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): [Press Enter]
Command (? for help): n
Partition number (2-128, default 2): 2
First sector: [Press Enter]
Last sector: +200G
Hex code or GUID: 8e00
Command (? for help): p
Number Start (sector) End (sector) Size Code Name
1 2048 209717247 100.0 GiB 8300 Linux filesystem
2 209717248 629147647 200.0 GiB 8E00 Linux LVM
Command (? for help): w
Do you want to proceed? (Y/N): Y
Códigos de tipo gdisk comunes:
- 8300: Sistema de archivos Linux
- 8200: Linux swap
- 8e00: Linux LVM
- fd00: Linux RAID
- ef00: EFI System Partition
Convirtiendo MBR a GPT con gdisk
ADVERTENCIA: Respalde todos los datos antes de la conversión.
sudo gdisk /dev/sdb
gdisk detecta automáticamente MBR y ofrece conversión:
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
Command (? for help): w
Optimización de Alineación de Particiones con gdisk
gdisk alinea automáticamente las particiones a límites óptimos para el rendimiento de SSD. Verificar alineación:
sudo gdisk /dev/sdb
Command (? for help): x
Expert command (? for help): l
Enter the sector alignment value (1-65536, default = 2048): [Press Enter]
Expert command (? for help): m
Command (? for help): w
Creando Sistemas de Archivos en Nuevas Particiones
Después de crear particiones, debe crear sistemas de archivos antes de usarlas.
Creando Sistema de Archivos ext4
sudo mkfs.ext4 /dev/sdb1
Con opciones personalizadas:
sudo mkfs.ext4 -L data_partition -m 1 /dev/sdb1
Opciones:
- -L: Establecer etiqueta de partición
- -m: Porcentaje de bloques reservados (predeterminado 5%, reducir a 1% para particiones de datos)
Creando Sistema de Archivos XFS
sudo mkfs.xfs /dev/sdb2
Con etiqueta:
sudo mkfs.xfs -L backup_partition /dev/sdb2
Creando Sistema de Archivos ext3
sudo mkfs.ext3 /dev/sdb3
Creando Sistema de Archivos Btrfs
sudo mkfs.btrfs /dev/sdb4
Creando Partición Swap
sudo mkswap /dev/sdb5
sudo swapon /dev/sdb5
Verificar swap:
sudo swapon --show
Montando y Usando Nuevas Particiones
Creando Punto de Montaje
sudo mkdir -p /mnt/data
Montando Partición Temporalmente
sudo mount /dev/sdb1 /mnt/data
Verificar:
df -h /mnt/data
Montando con Opciones Específicas
sudo mount -o defaults,noatime /dev/sdb1 /mnt/data
Desmontando Partición
sudo umount /mnt/data
Si está ocupada:
sudo fuser -m /mnt/data
sudo umount /mnt/data
Montaje Permanente con /etc/fstab
Editar /etc/fstab:
sudo nano /etc/fstab
Agregar entrada:
/dev/sdb1 /mnt/data ext4 defaults,noatime 0 2
Usando UUID (recomendado):
sudo blkid /dev/sdb1
Salida:
/dev/sdb1: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="ext4"
Agregar a /etc/fstab:
UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/data ext4 defaults,noatime 0 2
Probar configuración de fstab:
sudo mount -a
Verificación y Pruebas
Verificar Tabla de Particiones
sudo fdisk -l /dev/sdb
sudo parted /dev/sdb print
sudo gdisk -l /dev/sdb
Verificar Sistema de Archivos
sudo fsck -n /dev/sdb1
Opciones:
- -n: Sin cambios, solo verificar
- -y: Corregir errores automáticamente
Verificar Puntos de Montaje
df -h
mount | grep sdb
lsblk -f
Probar Rendimiento de Lectura/Escritura
sudo dd if=/dev/zero of=/mnt/data/testfile bs=1G count=1 oflag=direct
sudo rm /mnt/data/testfile
Verificar Alineación de Particiones
sudo parted /dev/sdb align-check optimal 1
Solución de Problemas Comunes
Problema: "Device or resource busy" Al Desmontar
Solución:
# Encontrar procesos usando la partición
sudo fuser -m /mnt/data
# Matar procesos si es necesario
sudo fuser -km /mnt/data
# Desmontar
sudo umount /mnt/data
O usar desmontaje perezoso:
sudo umount -l /mnt/data
Problema: Partición No Detectada Después de la Creación
Solución:
Forzar al kernel a releer la tabla de particiones:
sudo partprobe /dev/sdb
O:
sudo blockdev --rereadpt /dev/sdb
Problema: Error "GPT PMBR size mismatch"
Esto ocurre cuando el disco fue clonado o redimensionado.
Solución:
sudo gdisk /dev/sdb
Command (? for help): x
Expert command (? for help): e
Expert command (? for help): w
Problema: Advertencias de Alineación en parted
Solución:
Recrear partición con alineación adecuada:
sudo parted /dev/sdb
(parted) rm 1
(parted) mkpart primary ext4 0% 100GB
(parted) align-check optimal 1
Problema: No Se Puede Escribir Tabla de Particiones
Solución:
Asegurarse de que las particiones estén desmontadas:
sudo umount /dev/sdb1
sudo umount /dev/sdb2
Desactivar swap si la partición es swap:
sudo swapoff /dev/sdb5
Problema: Partición Muestra Tamaño Incorrecto Después de Extender
Solución:
Redimensionar el sistema de archivos después de extender la partición:
Para ext4:
sudo resize2fs /dev/sdb1
Para XFS:
sudo xfs_growfs /mnt/data
Mejores Prácticas para la Gestión de Particiones de Disco
1. Siempre Use UUID en /etc/fstab
Los nombres de dispositivo pueden cambiar entre reinicios; los UUID permanecen constantes:
# Encontrar UUID
sudo blkid /dev/sdb1
# Usar en fstab
UUID=xxx-xxx-xxx /mnt/data ext4 defaults 0 2
2. Alinear Particiones para Rendimiento de SSD
Las herramientas modernas de particionamiento alinean automáticamente a límites de 1MB, óptimo para SSDs:
# Verificar alineación
sudo parted /dev/sdb align-check optimal 1
3. Dejar Espacio Reservado en SSDs
Dejar un 10-20% de espacio sin particionar en SSDs para sobreaprovisionamiento y longevidad:
# En lugar de usar 100%, usar 90%
sudo parted /dev/sdb mkpart primary ext4 0% 90%
4. Usar GPT para Sistemas Modernos
GPT ofrece ventajas sobre MBR:
- Admite discos mayores a 2TB
- Hasta 128 particiones
- Tablas de particiones redundantes
- Sumas de verificación CRC32 para integridad
5. Documentar Diseños de Particiones
Mantener documentación de propósitos y configuraciones de particiones:
# Crear archivo de documentación
sudo parted -l > /root/partition_layout_$(date +%Y%m%d).txt
sudo lsblk -f >> /root/partition_layout_$(date +%Y%m%d).txt
6. Verificaciones Regulares del Sistema de Archivos
Programar verificaciones regulares del sistema de archivos:
# Establecer recuento máximo de montaje antes de verificación
sudo tune2fs -c 30 /dev/sdb1
# Establecer intervalo entre verificaciones
sudo tune2fs -i 90d /dev/sdb1
7. Usar Tipos de Sistema de Archivos Apropiados
Elegir sistemas de archivos basados en el caso de uso:
- ext4: Propósito general, ampliamente compatible
- XFS: Archivos grandes, alto rendimiento
- Btrfs: Características avanzadas, snapshots
- swap: Extensión de memoria virtual
8. Monitorear Salud del Disco
Verificar regularmente la salud del disco con SMART:
sudo smartctl -a /dev/sdb
9. Respaldar Antes de Particionar
Siempre crear respaldos completos antes de cualquier operación de particionamiento:
# Respaldar tabla de particiones
sudo sfdisk -d /dev/sdb > sdb_partition_backup.txt
# Restaurar si es necesario
sudo sfdisk /dev/sdb < sdb_partition_backup.txt
10. Probar en Entornos No Productivos
Siempre probar modificaciones de particiones en sistemas de prueba antes de implementar en producción.
Escenarios Avanzados de Particionamiento
Creando Particiones Alineadas para Arrays RAID
sudo parted /dev/sdb
(parted) mklabel gpt
(parted) mkpart primary ext4 1MiB 100%
(parted) align-check optimal 1
(parted) set 1 raid on
(parted) quit
Particionando Unidades NVMe
Los dispositivos NVMe usan nomenclatura diferente:
# Listar dispositivos NVMe
lsblk | grep nvme
# Particionar unidad NVMe
sudo parted /dev/nvme0n1
(parted) mklabel gpt
(parted) mkpart primary ext4 0% 100%
(parted) quit
# Crear sistema de archivos
sudo mkfs.ext4 /dev/nvme0n1p1
Creando Volúmenes Físicos LVM en Particiones
# Crear partición con tipo LVM
sudo parted /dev/sdb mkpart primary 0% 100%
sudo parted /dev/sdb set 1 lvm on
# Inicializar como volumen físico LVM
sudo pvcreate /dev/sdb1
# Verificar
sudo pvdisplay
Comparando fdisk, parted y gdisk
Cuándo Usar fdisk
- Tareas simples de particionamiento en discos MBR o GPT
- Familiarizado con la interfaz tradicional de fdisk
- Scripting de operaciones básicas de particiones
- Visualización rápida de tabla de particiones
Ventajas:
- Ampliamente disponible en todas las distribuciones Linux
- Interfaz simple e intuitiva
- Rápido para operaciones básicas
Desventajas:
- Características avanzadas limitadas
- Menos preciso que parted para redimensionar
Cuándo Usar parted
- Redimensionar particiones
- Scripting de operaciones complejas de particiones
- Trabajar con discos grandes (> 2TB)
- Necesidad de colocación precisa de particiones
Ventajas:
- Admite tanto MBR como GPT
- Puede redimensionar particiones
- Excelente para scripting
- Control preciso a nivel de sector
Desventajas:
- Escrituras inmediatas (los cambios surten efecto inmediatamente)
- Curva de aprendizaje más pronunciada
- Salida más verbosa
Cuándo Usar gdisk
- Trabajar exclusivamente con tablas de particiones GPT
- Convertir MBR a GPT
- Características avanzadas de GPT necesarias
- Optimización de alineación de particiones
Ventajas:
- Características específicas de GPT
- Optimización automática de alineación
- Conversión segura de MBR a GPT
- Información detallada de particiones
Desventajas:
- Solo GPT (sin soporte para MBR)
- Menos común que fdisk
- Disponibilidad limitada en sistemas mínimos
Conclusión
Dominar la gestión de discos y particiones con fdisk, parted y gdisk es esencial para la administración efectiva de sistemas Linux. Cada herramienta tiene sus fortalezas: fdisk por simplicidad y disponibilidad generalizada, parted por características avanzadas y scripting, y gdisk por operaciones específicas de GPT.
Conclusiones clave:
- Siempre respalde los datos antes de cualquier operación de particionamiento
- Use GPT para sistemas modernos y discos grandes
- Verifique la alineación para rendimiento óptimo de SSD
- Use UUIDs en /etc/fstab para confiabilidad
- Elija la herramienta correcta para sus necesidades específicas
- Pruebe los cambios en entornos no productivos primero
- Documente sus diseños de particiones
- Monitoree la salud del disco regularmente
Siguiendo las mejores prácticas y procedimientos descritos en esta guía, puede gestionar con confianza las particiones de disco en sistemas Linux mientras minimiza el riesgo de pérdida de datos y maximiza el rendimiento del almacenamiento.
Recuerde que la gestión adecuada de particiones no se trata solo de competencia técnica—se trata de implementar una infraestructura de almacenamiento segura, confiable y mantenible que apoye las necesidades de su organización tanto ahora como en el futuro.


