El particionado de discos en Linux es una habilidad fundamental para cualquier administrador de sistemas o ingeniero DevOps. Ya sea que estés añadiendo un disco de datos a un servidor, configurando una nueva instalación o preparando almacenamiento para una base de datos, entender cómo particionar discos con fdisk y parted — y cómo persistir los montajes en /etc/fstab usando UUIDs — te evitará errores costosos e interrupciones del servicio. Esta guía cubre el flujo de trabajo completo desde el disco sin formato hasta el sistema de archivos montado con automontaje.

Requisitos Previos

  • Acceso root o sudo en un sistema Linux
  • Un disco sin formato o disco virtual conectado a la máquina (p. ej., /dev/sdb)
  • Familiaridad básica con la terminal de Linux
  • Paquete util-linux instalado (proporciona fdisk, lsblk, blkid — presente por defecto en la mayoría de distros)
  • parted instalado: apt install parted o dnf install parted

MBR vs GPT: Elegir la Tabla de Particiones Correcta

Antes de modificar un disco, debes decidir qué formato de tabla de particiones usar. Los dos estándares son MBR (Master Boot Record) y GPT (GUID Partition Table).

CaracterísticaMBRGPT
Tamaño máximo de disco2 TB9,4 ZB (prácticamente ilimitado)
Máximo de particiones primarias4 (o 3 primarias + extendida)128
Firmware de arranqueBIOSUEFI (también funciona con BIOS mediante híbrido)
RedundanciaNingunaCabecera de respaldo al final del disco
Soporte de SOTodo Linux, Windows XP+Linux kernel 2.6.25+, Windows Vista+, macOS
Soporte de herramientasfdisk, parted, gdiskparted, gdisk, fdisk (desde util-linux 2.23)
RecuperaciónMás difícilLa cabecera GPT de respaldo permite recuperación

Regla general: Usa GPT para cualquier disco nuevo en 2025. El límite de 128 particiones de GPT, la resiliencia mediante cabecera de respaldo y la ausencia del límite de 2 TB lo convierten en la opción predeterminada correcta. Usa MBR solo cuando el objetivo sean sistemas muy antiguos o hardware embebido que lo requiera específicamente.

Particionado con fdisk

fdisk es una herramienta interactiva con menú incluida en util-linux. Las versiones modernas (util-linux 2.23+) soportan GPT, lo que la convierte en una opción flexible para la mayoría de las cargas de trabajo.

Inspeccionar discos existentes

# Listar todos los dispositivos de bloque con tamaños y tipos
lsblk

# Mostrar información detallada de particiones
fdisk -l

# Mostrar un disco específico
fdisk -l /dev/sdb

Crear una partición GPT con fdisk

sudo fdisk /dev/sdb

Dentro del prompt interactivo:

Command (m for help): g        # Crear una nueva tabla de particiones GPT (usa 'o' para MBR)
Created a new GPT disklabel (GUID: ...).

Command (m for help): n        # Nueva partición
Partition number (1-128, default 1): 1
First sector (2048-..., default 2048): [Enter]
Last sector, +/-sectors or +/-size{K,M,G,T,P}: +100G   # Tamaño de la partición

Command (m for help): t        # Cambiar tipo de partición (opcional)
Selected partition 1
Partition type or alias (type L to list all): 20   # Sistema de archivos Linux

Command (m for help): p        # Vista previa de la tabla de particiones antes de escribir

Command (m for help): w        # Escribir cambios y salir

Tras escribir los cambios, el kernel recibe la notificación. Si no ocurre, ejecuta partprobe /dev/sdb o udevadm settle para forzar una relectura.

Comandos clave de fdisk

TeclaAcción
mMostrar menú de ayuda
gNueva tabla de particiones GPT
oNueva tabla de particiones MBR
nNueva partición
dEliminar partición
tCambiar tipo de partición
pImprimir tabla de particiones
wEscribir y salir
qSalir sin guardar

Particionado con parted

parted soporta tanto MBR como GPT y es scriptable — ideal para scripts de automatización y herramientas de aprovisionamiento como Ansible o Terraform. También maneja discos de más de 2 TB sin problemas.

Modo interactivo

sudo parted /dev/sdb
(parted) mklabel gpt                  # Crear tabla de particiones GPT
(parted) mkpart primary ext4 0% 100%  # Una sola partición que ocupa todo el disco
(parted) print                        # Verificar
(parted) quit

Modo no interactivo (scriptable)

# Crear tabla GPT
sudo parted -s /dev/sdb mklabel gpt

# Crear una sola partición usando el 100% del espacio en disco
sudo parted -s /dev/sdb mkpart primary ext4 0% 100%

# Crear dos particiones: 50 GB de datos, el resto para logs
sudo parted -s /dev/sdb mkpart primary ext4 0% 50GB
sudo parted -s /dev/sdb mkpart primary ext4 50GB 100%

El indicador -s suprime los prompts interactivos, lo que hace que parted sea seguro para usar en automatización.

Alineación en parted

Utiliza siempre límites basados en porcentajes (0%, 100%, 50%) o valores en MiB/GiB en lugar de números de sector sin procesar. Esto garantiza la alineación correcta de sectores de 4K, lo que importa para el rendimiento de SSD y NVMe.

# Verificar la alineación después de crear particiones
sudo parted /dev/sdb align-check optimal 1
# Salida: 1 aligned

Formateo de Particiones con mkfs

Después de crear una partición, debes crear un sistema de archivos en ella. La elección del sistema de archivos depende de tu carga de trabajo.

# ext4 — uso general, mayor compatibilidad
sudo mkfs.ext4 /dev/sdb1

# xfs — alto rendimiento, preferido para archivos grandes y bases de datos
sudo mkfs.xfs /dev/sdb1

# btrfs — copy-on-write, snapshots, compresión
sudo mkfs.btrfs /dev/sdb1

# Añadir una etiqueta (hace las entradas de fstab más legibles)
sudo mkfs.ext4 -L data /dev/sdb1
Sistema de archivosMejor paraTamaño máximo de archivoTamaño máximo de volumen
ext4Uso general, discos de VM16 TB1 EB
xfsBases de datos, archivos grandes8 EB8 EB
btrfsSnapshots, NAS, servidores domésticos16 EB16 EB
vfat/FAT32Unidades USB, particiones EFI4 GB2 TB

Montaje y Montajes Persistentes con /etc/fstab

Una partición montada manualmente desaparece tras el reinicio. Para persistir el montaje, agrégala a /etc/fstab. Usa siempre UUIDs en lugar de nombres de dispositivo como /dev/sdb1 — los nombres de dispositivo pueden cambiar tras reinicios o cuando se añaden o eliminan discos.

Obtener el UUID

sudo blkid /dev/sdb1
# Salida: /dev/sdb1: UUID="a1b2c3d4-..." TYPE="ext4" PARTLABEL="primary"

# Alternativa: mostrar todos los UUIDs de dispositivos de bloque
lsblk -o NAME,UUID,FSTYPE,SIZE,MOUNTPOINT

Crear el punto de montaje y montar inmediatamente

sudo mkdir -p /mnt/data
sudo mount /dev/sdb1 /mnt/data

# Verificar
df -h /mnt/data

Añadir a /etc/fstab

Abre /etc/fstab con tu editor:

sudo nano /etc/fstab

Añade una línea con este formato:

# <dispositivo>                         <punto montaje>  <tipo>  <opciones>        <dump> <pass>
UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890  /mnt/data     ext4    defaults,nofail   0      2

Opciones críticas explicadas:

OpciónSignificado
defaultsrw, suid, dev, exec, auto, nouser, async
nofailEl arranque tiene éxito aunque el disco esté ausente (esencial para discos no raíz)
noatimeOmite las actualizaciones de tiempo de acceso — mejora la vida útil y el rendimiento del SSD
0 (dump)0 = no incluir en dump; 1 = incluir en copia de seguridad dump
2 (pass)Orden de fsck: 0 = omitir, 1 = solo raíz, 2 = verificar después de raíz

Verificar la entrada de fstab sin reiniciar

# Desmontar primero
sudo umount /mnt/data

# Probar fstab (monta todas las entradas)
sudo mount -a

# Confirmar
df -h /mnt/data

Si mount -a no devuelve errores, la entrada es válida y sobrevivirá a un reinicio.

Escenario Real: Añadir un Disco de Datos a un Servidor Web en Producción

Tienes un servidor web en producción ejecutando Ubuntu 22.04. El disco raíz está casi lleno porque /var/www ha crecido hasta 180 GB. Conectas un nuevo SSD de 500 GB como /dev/sdb y quieres mover el contenido web sin tiempo de inactividad.

Paso 1 — Identificar y particionar el nuevo disco:

lsblk
# Confirmar que /dev/sdb es el nuevo disco de 500 GB sin particiones

sudo parted -s /dev/sdb mklabel gpt
sudo parted -s /dev/sdb mkpart primary ext4 0% 100%
sudo partprobe /dev/sdb

Paso 2 — Formatear y etiquetar:

sudo mkfs.ext4 -L webdata /dev/sdb1

Paso 3 — Copiar los datos existentes al nuevo disco:

sudo mkdir /mnt/newwww
sudo mount /dev/sdb1 /mnt/newwww
sudo rsync -av --progress /var/www/ /mnt/newwww/

Paso 4 — Intercambiar el montaje (con tiempo de inactividad mínimo):

sudo umount /mnt/newwww

# Obtener UUID
sudo blkid /dev/sdb1

# Editar /etc/fstab — añadir el nuevo montaje para /var/www
# UUID=xxxx-xxxx  /var/www  ext4  defaults,nofail,noatime  0  2

# Mover los datos antiguos fuera del camino y remontar
sudo mv /var/www /var/www.bak
sudo mkdir /var/www
sudo mount -a

# Verificar que el servidor web puede leer los archivos
ls /var/www

Paso 5 — Validar y limpiar:

df -h /var/www
# /dev/sdb1  500G  180G  320G  36%  /var/www

# Después de confirmar que todo funciona, eliminar la copia de seguridad
sudo rm -rf /var/www.bak

Errores Comunes y Casos Especiales

Cambio de nombre de dispositivo: /dev/sdb puede convertirse en /dev/sdc tras un reinicio si se añade otro disco. Usa siempre UUIDs en /etc/fstab y en scripts — nunca rutas de dispositivo sin procesar.

Tabla de particiones no visible inmediatamente: Tras escribir los cambios con fdisk o parted, es posible que el kernel no relea inmediatamente la tabla de particiones si el disco está en uso. Ejecuta sudo partprobe /dev/sdb o reinicia.

Alineación de sectores de 4K: Las herramientas más antiguas usan alineación basada en cilindros, lo que provoca desalineación en discos modernos de sectores de 4K. Usa la sintaxis de porcentaje de parted o la alineación de sectores predeterminada de fdisk (2048 sectores = 1 MiB).

ext4 en discos grandes: Para volúmenes de más de 16 TB, cambia a xfs. El comando mkfs.ext4 te avisará, pero es fácil pasarlo por alto.

Falta de nofail en discos no raíz: Sin nofail, un disco secundario ausente hará que el sistema entre en modo de emergencia al arrancar. Añade siempre nofail a cualquier entrada de fstab que no sea la raíz.

GPT en un sistema BIOS sin partición de arranque BIOS: Cuando uses GPT con GRUB en un sistema sin UEFI, necesitas una pequeña partición (1 MiB) sin formatear con el tipo BIOS boot (código ef02 en gdisk o tipo bios_grub en parted). Sin ella, GRUB no puede instalar su stage 2.

Solución de Problemas

mount: /mnt/data: can't read superblock — El sistema de archivos no fue creado o se creó en el dispositivo incorrecto. Ejecuta file -s /dev/sdb1 para comprobar si existe un sistema de archivos.

mount: wrong fs type, bad option, bad superblock — No coincide el tipo de sistema de archivos en fstab con el tipo real en el disco. Ejecuta blkid /dev/sdb1 para verificar el campo TYPE y corregir la entrada de fstab.

WARNING: Re-reading the partition table failed — El kernel no pudo actualizar su vista de la tabla de particiones porque el disco está ocupado. Si esto ocurre en un disco distinto al de arranque, ejecuta partprobe o reinicia.

El UUID cambia después de mkfs — Cada llamada a mkfs asigna un nuevo UUID. Si reformateas una partición y no actualizas /etc/fstab, el sistema no podrá montarla. Ejecuta siempre blkid después de formatear y actualiza fstab inmediatamente.

parted: Error: Partition(s) on /dev/sdb are being used — Una o más particiones del disco están montadas actualmente. Desmonta todas antes de reetiquetar o redimensionar.

Resumen

  • Elige GPT para todos los discos nuevos en 2025 — soporta 128 particiones, discos de más de 2 TB y proporciona una cabecera de tabla de particiones de respaldo.
  • Usa fdisk para el particionado interactivo; usa parted cuando necesites scripting, automatización o discos de más de 2 TB.
  • Siempre formatea una nueva partición con mkfs antes de montarla — una partición sin formato no tiene sistema de archivos.
  • Usa UUID (no nombres de dispositivo como /dev/sdb1) en /etc/fstab para garantizar que los montajes sobrevivan a la reordenación de discos.
  • Añade nofail a todas las entradas de fstab que no sean la raíz para que un disco ausente no impida arrancar el sistema.
  • Verifica cada cambio en fstab con mount -a antes de reiniciar — una entrada incorrecta puede hacer el sistema imposible de arrancar.
  • Alinea las particiones a límites de MiB (sintaxis de porcentaje de parted o valores predeterminados de fdisk) para un rendimiento óptimo en SSD y NVMe.

Artículos Relacionados