Objetivo:
Comprender el ciclo completo de preparación de un almacenamiento secundario en Linux, desde el diseño de la tabla de particiones (GPT/MBR) mediante herramientas de bajo nivel, el formateo con distintos sistemas de archivos, hasta la configuración del montaje automático y persistente en el arranque del sistema operativo usando /etc/fstab.
Escenario:
- Herramientas: Terminal Linux,
dd,fdisk,mkfs.ext4,mkfs.xfs,blkid,mount,/etc/fstab. - Conceptos analizados: Esquemas de particionamiento MBR vs. GPT, alineación de bloques, tipos de sistemas de archivos, puntos de montaje y UUID frente a nombres de dispositivos volátiles.
- Proceso clave: Creación de un disco virtual secundario, particionado interactivo con
fdisk, creación de sistemas de archivos, obtención de identificadores únicos (UUID) y automatización del montaje.
Escenario Real: Ampliación de almacenamiento en un servidor
Se acaba de conectar un nuevo disco duro físico de alta capacidad a un servidor de producción que corre Linux. Como administrador de sistemas, debes preparar este disco desde cero: estructurarlo correctamente eligiendo el esquema de particiones adecuado, darle formato con un sistema de archivos robusto y asegurar que esté disponible y montado automáticamente en una ruta específica cada vez que la máquina reinicie, evitando fallos fatales en el arranque.
/dev/sdb o /dev/nvme1n1), pero no contiene ninguna estructura de particiones ni sistema de archivos legible.NOTA: Para evitar riesgos en tu equipo físico, realizaremos toda la práctica simulando un disco duro secundario mediante un archivo de imagen virtual montado con un dispositivo loopback o gestionado directamente con ficheros de bloque simulados. Las herramientas de particionado y formateo se comportan exactamente igual sobre este archivo que sobre un disco duro físico conectado por SATA o NVMe. Por seguridad y buenas prácticas, nunca debemos montar particiones usando rutas basadas en letras de dispositivo estáticas (como
/dev/sdb1), ya que el orden de detección del hardware puede cambiar tras reiniciar o añadir nuevos componentes, provocando que el sistema no arranque o monte otra partición por error. Para ello utilizaremos siempre los UUID (Universally Unique Identifiers).Instrucciones:
Fase 1: Preparación del disco virtual secundario:
- Crear un archivo de 100 MB que simulará el nuevo disco duro secundario:
dd if=/dev/zero of=disco_nuevo.img bs=1M count=100 - Asociar la imagen a un dispositivo loopback del sistema para que el kernel lo trate como un disco real:
sudo losetup -f --show disco_nuevo.img(imaginemos que el sistema asigna/dev/loop20, úsalo en los siguientes pasos según el que te devuelva tu terminal).
Fase 2: Particionado de disco con fdisk (Esquema GPT):
- Iniciar la herramienta de particionamiento sobre el disco virtual:
sudo fdisk /dev/loop20 - Una vez dentro de la interfaz interactiva de
fdisk, realiza las siguientes acciones:- Pulsa
gpara crear una nueva tabla de particiones vacía de tipo GPT (recomendada frente a MBR por soporte y seguridad). - Pulsa
npara crear una nueva partición, acepta los valores por defecto (partición número 1, primer sector y último sector) para usar todo el espacio disponible. - Pulsa
wpara guardar los cambios y salir defdisk.
- Pulsa
- Verifica la correcta creación de la tabla y la partición ejecutando:
sudo fdisk -l /dev/loop20
Fase 3: Creación del sistema de archivos (Formateo):
- Dar formato a la nueva partición creada (ej.
/dev/loop20p1) con el sistema de archivos ext4:sudo mkfs.ext4 /dev/loop20p1 - Observa cómo durante el formateo se generan los inodos, el superbloque y se asigna un identificador único global (UUID) a la partición.
Fase 4: Montaje manual y obtención del UUID:
- Crear un directorio que servirá como punto de montaje permanente:
sudo mkdir -p /mnt/datos - Montar manualmente la partición para comprobar que el sistema de archivos es accesible:
sudo mount /dev/loop20p1 /mnt/datos - Verificar que está correctamente montado y comprobar el espacio disponible con:
df -h /mnt/datos - Obtener el UUID exacto y el tipo de sistema de archivos de la partición ejecutando:
sudo blkid /dev/loop20p1(Apunta el valor del UUID que aparece entre comillas). - Desmontar temporalmente el disco para preparar el montaje persistente:
sudo umount /mnt/datos
Fase 5: Configuración del montaje permanente en /etc/fstab:
- Paso crítico: Antes de modificar cualquier archivo de sistema crítico, haz una copia de seguridad:
sudo cp /etc/fstab /etc/fstab.bak - Abre el archivo de configuración con un editor de textos con privilegios de superusuario:
sudo nano /etc/fstab - Añade una nueva línea al final del archivo utilizando el UUID obtenido anteriormente (reemplaza el ejemplo con el tuyo real):
UUID=tu-uuid-generado-aquí /mnt/datos ext4 defaults 0 2
- Guarda los cambios en el editor y sal de nano.
- Prueba de fuego (Validación): Para comprobar que la sintaxis de
/etc/fstabes correcta y evitar un fallo de arranque en el próximo reinicio, ejecuta:sudo mount -a(Este comando monta todos los sistemas de archivos definidos en el fstab). - Verifica que el directorio vuelve a estar montado correctamente sin errores ejecutando:
df -h
Verificación:
- Crear un archivo de prueba dentro del directorio montado:
echo "Prueba de montaje persistente" | sudo tee /mnt/datos/test.txt - Simular el desmontaje o un reinicio del sistema loopback y volver a montar mediante fstab para comprobar que los datos persisten y el punto de montaje responde tal y como se esperaba.
Posibles errores y resolución de problemas:
Si al ejecutar sudo mount -a el sistema devuelve un error o la máquina se queda bloqueada en el arranque (Emergency Mode / Maintenance Mode), suele deberse a un error tipográfico en el archivo /etc/fstab (un UUID mal copiado, un sistema de archivos erróneo o parámetros de montaje inválidos).
Solución: No reinicies el equipo a la ligera si estás en un entorno real. Corrige el archivo fstab o restaura la copia de seguridad ejecutando
sudo cp /etc/fstab.bak /etc/fstabantes de volver a intentarlo.
Preguntas de reflexión:
- ¿Qué ventajas principales ofrece el esquema de particionado GPT frente al clásico MBR en la actualidad?
- ¿Por qué se recomienda utilizar el UUID en lugar de la ruta del dispositivo (como
/dev/sdb1) dentro del archivo/etc/fstab? - ¿Qué significan los dos últimos números (el
0y el2) especificados al final de cada línea en la configuración de un sistema de archivos dentro de/etc/fstab? - ¿Qué diferencia operativa existe entre ejecutar
mounta secas y utilizar el comandomount -a?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Qué ventajas principales ofrece el esquema de particionado GPT frente al clásico MBR en la actualidad?
GPT permite gestionar discos de un tamaño teóricamente casi ilimitado (frente al límite histórico de 2 TB de MBR), soporta un número muy superior de particiones primarias (por defecto hasta 128 frente a las 4 de MBR) y cuenta con redundancia estructural, ya que almacena una copia de la tabla de particiones al final del disco, lo que evita la corrupción total ante fallos.
2. ¿Por qué se recomienda utilizar el UUID en lugar de la ruta del dispositivo (como /dev/sdb1) dentro del archivo /etc/fstab?
Porque las letras asignadas a los dispositivos de almacenamiento (sdb, sdc, etc.) son dinámicas y dependen del orden en el que el kernel detecta el hardware durante el arranque. Si se añade un disco nuevo o se cambia de puerto, los identificadores pueden desplazarse, provocando que el sistema monte una partición incorrecta o falle al iniciar. El UUID es un código único e inalterable asociado al sistema de archivos.
3. ¿Qué significan los dos últimos números (el 0 y el 2) especificados al final de cada línea en la configuración de un sistema de archivos dentro de /etc/fstab?
El primer número (el 0) corresponde a la orden de respaldo de la utilidad dump (0 indica que no se debe realizar copia de respaldo automática con dump). El segundo número (el 2) indica la prioridad de comprobación del sistema de archivos con fsck durante el arranque (0 significa no comprobar, 1 se reserva exclusivamente para la partición raíz /, y 2 se usa para el resto de particiones secundarias).
4. ¿Qué diferencia operativa existe entre ejecutar mount a secas y utilizar el comando mount -a?
Ejecutar mount sin argumentos muestra por pantalla una lista detallada de todos los sistemas de archivos que se encuentran actualmente montados en el sistema operativo. En cambio, mount -a lee íntegramente el contenido del archivo /etc/fstab e intenta montar de forma simultánea todos los dispositivos que aparezcan listados en él y que aún no estén activos.