Sistema de archivos y gestión de discos

LinuxBeginner
Practicar Ahora

Introducción

El almacenamiento de Linux está compuesto por varias capas conectadas. Un dispositivo puede contener particiones; una partición o imagen puede contener un sistema de archivos; y un sistema de archivos está disponible cuando se conecta al árbol de directorios mediante un punto de montaje. Mantener estos conceptos separados facilita mucho la comprensión de los comandos relacionados con los discos.

En este laboratorio, inspeccionará el almacenamiento de forma segura, analizará el uso del espacio, creará un sistema de archivos ext4 dentro de un archivo normal, lo montará y desmontará, consultará información de particiones y creará un archivo fstab de práctica. Todas las operaciones de escritura se realizan sobre archivos desechables creados para el laboratorio; no particionará un disco real ni modificará /etc/fstab del sistema.

Comprenda las capas de almacenamiento de Linux

En este paso, inspeccionará la relación entre los dispositivos de bloque, los sistemas de archivos y los puntos de montaje. Después, preparará un espacio de trabajo seguro.

El comando lsblk significa «list block devices» (listar dispositivos de bloque). Su opción -o selecciona las columnas que se mostrarán:

lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS

Lea la salida de izquierda a derecha:

  • NAME identifica el dispositivo o la partición.
  • TYPE distingue entre discos, particiones y dispositivos loop.
  • SIZE muestra la capacidad.
  • FSTYPE muestra el tipo de sistema de archivos detectado, cuando existe.
  • MOUNTPOINTS muestra dónde está conectado el sistema de archivos al árbol de directorios.

Un disco puede contener una o varias particiones. Un sistema de archivos, como ext4, organiza los archivos dentro de una partición u otro objeto de almacenamiento. Un punto de montaje es un directorio normal a través del cual Linux expone ese sistema de archivos.

Use findmnt para identificar el sistema de archivos que contiene actualmente el directorio del proyecto. La opción -T acepta cualquier ruta y localiza el sistema de archivos montado que la contiene:

findmnt -T /home/labex/project

El dispositivo de origen exacto puede variar, pero la salida muestra el origen, el destino, el tipo de sistema de archivos y las opciones de montaje.

El comando blkid lee las firmas de los sistemas de archivos, las etiquetas y los UUID. Necesita acceso administrativo para inspeccionar todos los dispositivos de bloque disponibles:

sudo blkid

Un UUID es un identificador del sistema de archivos diseñado para mantenerse estable aunque cambie el nombre del dispositivo. Más adelante utilizará esta idea al estudiar los montajes persistentes.

Cree un espacio de trabajo dedicado y acceda a él:

mkdir -p /home/labex/project/storage-lab
cd /home/labex/project/storage-lab
pwd

La salida final debe ser /home/labex/project/storage-lab.

Analice el uso del sistema de archivos y de los directorios

En este paso, comparará df, que informa sobre el espacio de los sistemas de archivos completos, con du, que mide los archivos y los árboles de directorios.

Cree dos archivos de ejemplo con tamaños aparentes conocidos. La opción truncate -s establece el tamaño de un archivo de forma eficiente sin llenarlo con datos significativos:

cd /home/labex/project/storage-lab
mkdir -p usage/reports usage/archive
truncate -s 2M usage/reports/weekly.log
truncate -s 5M usage/archive/records.bin

Use df -h en el espacio de trabajo. La opción -h muestra unidades legibles, como MiB y GiB:

df -h /home/labex/project/storage-lab

df responde a la pregunta: «¿Cuánto espacio está usado y disponible en el sistema de archivos que contiene esta ruta?». Sus columnas principales son Size, Used, Avail, Use% y Mounted on.

Use du -sh para resumir el directorio de ejemplo. Aquí, -s significa resumen y -h selecciona unidades legibles:

du -sh usage

A diferencia de df, du responde a la pregunta: «¿Cuánto espacio corresponde a este archivo o árbol de directorios?». Los archivos dispersos creados con truncate pueden tener un tamaño aparente grande y, al mismo tiempo, consumir poco espacio de disco asignado. La opción --apparent-size mide sus tamaños lógicos:

du -h --apparent-size --max-depth=1 usage

Debería ver que usage/archive es más grande que usage/reports. Combine du con la ordenación para mostrar primero los elementos aparentes más grandes:

du -ah --apparent-size usage | sort -rh | head -n 5

La tubería envía la salida de du a sort; -r invierte el orden y -h entiende los sufijos de tamaño legibles. head -n 5 conserva los cinco primeros resultados.

Cree e inspeccione un sistema de archivos ext4

En este paso, creará una imagen de disco virtual, la formateará con ext4 e inspeccionará los metadatos de su sistema de archivos sin tocar un disco real.

Cree un archivo de imagen de 128 MiB. Este archivo servirá como almacenamiento desechable durante el resto del laboratorio:

cd /home/labex/project/storage-lab
truncate -s 128M virtual.img

Compruebe su tamaño aparente:

ls -lh virtual.img

Antes de formatearlo, file solo identifica datos genéricos o un archivo vacío:

file virtual.img

El comando mkfs.ext4 crea un sistema de archivos ext4. La opción -F confirma que un archivo normal es el destino intencionado, y -L asigna la etiqueta LABEXDATA:

sudo mkfs.ext4 -F -L LABEXDATA virtual.img

El formateo crea las estructuras del sistema de archivos dentro de la imagen. Inspeccione el resultado con dos herramientas:

file virtual.img
sudo blkid -p virtual.img

La salida debe identificar ext4, mostrar la etiqueta LABEXDATA e incluir un UUID generado. Muestre únicamente ese UUID:

sudo blkid -s UUID -o value virtual.img

El valor del UUID se genera durante el formateo, por lo que será diferente para cada estudiante.

Monte, utilice y desmonte el sistema de archivos

En este paso, conectará el sistema de archivos virtual al árbol de directorios de Linux, escribirá un archivo y lo desconectará de forma segura.

Un punto de montaje es el directorio donde un sistema de archivos pasa a estar visible. Cree uno bajo /mnt, una ubicación estándar para montajes administrativos temporales:

sudo mkdir -p /mnt/labex-virtual

Monte la imagen. La opción -o loop solicita a Linux que asocie el archivo normal a un dispositivo loop para poder tratarlo como almacenamiento de bloques:

cd /home/labex/project/storage-lab
sudo mount -o loop virtual.img /mnt/labex-virtual

Inspeccione el montaje activo:

findmnt /mnt/labex-virtual

El origen suele aparecer como un dispositivo loop, el destino es /mnt/labex-virtual y el tipo de sistema de archivos es ext4. También puede pedir a df información sobre este sistema de archivos específico:

df -h /mnt/labex-virtual

Escriba un archivo dentro del sistema de archivos montado. Se utiliza sudo sh -c porque la redirección la realiza el shell y el directorio raíz del montaje pertenece a root:

sudo sh -c 'echo "stored inside the virtual filesystem" > /mnt/labex-virtual/welcome.txt'
cat /mnt/labex-virtual/welcome.txt

El desmontaje vacía las escrituras pendientes y desconecta el sistema de archivos de su punto de montaje:

sudo umount /mnt/labex-virtual

Confirme que ya no está montado:

findmnt /mnt/labex-virtual

No se espera ninguna salida, y findmnt devuelve un estado distinto de cero porque no encontró ningún montaje activo en ese destino. El directorio del punto de montaje sigue existiendo, pero el contenido de la imagen ya no está disponible a través de él hasta que vuelva a montar la imagen.

Inspeccione tablas de particiones de forma segura

En este paso, utilizará fdisk en modo de listado de solo lectura y distinguirá entre una tabla de particiones y una firma de sistema de archivos.

Muestre los discos y las particiones visibles del sistema:

sudo fdisk -l

La opción -l significa list (listar). Informa sobre los tamaños de los discos, los tamaños de sector, los tipos de tabla de particiones y las particiones sin modificarlos. Nunca inicie una sesión interactiva de particionado en un disco de producción que no conozca.

Ahora inspeccione la imagen virtual:

cd /home/labex/project/storage-lab
sudo fdisk -l virtual.img

La imagen tiene un tamaño de disco, pero no contiene entradas de partición. En este ejemplo controlado, ext4 se creó directamente en toda la imagen. En un disco físico, una disposición habitual es:

disk device -> partition table -> partition -> filesystem -> mount point

Cree una segunda imagen vacía para compararla:

truncate -s 64M partition-demo.img
sudo fdisk -l partition-demo.img

Tampoco contiene una tabla de particiones. Compare las firmas de los sistemas de archivos con wipefs en su modo predeterminado de solo lectura:

sudo wipefs virtual.img partition-demo.img

virtual.img debe mostrar una firma ext4, mientras que la imagen vacía de comparación no debe mostrar ninguna firma de sistema de archivos. No utilice la opción destructiva wipefs -a en este laboratorio.

Cree y valide un fstab de práctica

En este paso, aprenderá los seis campos de una entrada de fstab y probará de forma segura un archivo de práctica independiente sin modificar /etc/fstab.

El sistema lee /etc/fstab para decidir qué sistemas de archivos deben montarse de forma persistente. Vea sus líneas que no son comentarios sin editar el archivo:

grep -Ev '^\s*(#|$)' /etc/fstab

Una entrada de fstab tiene seis campos separados por espacios en blanco:

source  mount-point  filesystem-type  options  dump  fsck-order

Para las particiones físicas, UUID=<value> suele ser más seguro que un nombre como /dev/sdb1, porque los nombres de los dispositivos pueden cambiar cuando se modifica el orden de detección del hardware.

Obtenga el UUID de la imagen y coloque un ejemplo comentado con UUID en un archivo de práctica:

cd /home/labex/project/storage-lab
uuid=$(sudo blkid -s UUID -o value virtual.img)
printf '## Real block device example: UUID=%s /mnt/data ext4 defaults,nofail 0 2\n' "$uuid" > practice-fstab

Como este laboratorio utiliza un archivo normal en lugar de una partición física, la entrada activa de práctica emplea la ruta absoluta de la imagen y la opción loop:

printf '%s\n' '/home/labex/project/storage-lab/virtual.img /mnt/labex-virtual ext4 loop,nofail 0 2' >> practice-fstab

Muestre y valide el archivo de práctica. --tab-file indica a findmnt que no utilice el /etc/fstab real:

cat practice-fstab
findmnt --verify --tab-file practice-fstab

El resumen final debe informar 0 parse errors y 0 errors. También informará de una advertencia porque el origen es un archivo normal. Esta advertencia es esperada, ya que este laboratorio utiliza intencionadamente un sistema de archivos loop respaldado por un archivo en lugar de un dispositivo de bloque físico.

Use el archivo de práctica para realizar un montaje controlado. La opción -T indica a mount que lea el archivo fstab alternativo especificado:

sudo mount -T practice-fstab /mnt/labex-virtual
findmnt /mnt/labex-virtual

El archivo welcome.txt creado anteriormente aún debe existir, lo que demuestra que el montaje expone los datos almacenados en el sistema de archivos:

cat /mnt/labex-virtual/welcome.txt

Desmóntelo de nuevo para que el laboratorio finalice en un estado seguro y desconectado:

sudo umount /mnt/labex-virtual

Ha validado la sintaxis de un montaje persistente sin cambiar la configuración de arranque del sistema. Un error en el /etc/fstab real puede interrumpir el arranque, por lo que los administradores suelen validar los cambios antes de reiniciar.

Resumen

Ha conectado las principales capas de almacenamiento de Linux: dispositivos, particiones, sistemas de archivos y puntos de montaje. Utilizó lsblk, blkid y findmnt para inspeccionarlas y, después, comparó el uso de todo el sistema de archivos mediante df con el uso de archivos y directorios mediante du.

Creó y etiquetó un sistema de archivos ext4 dentro de una imagen desechable, lo montó mediante un dispositivo loop, conservó los datos después de desmontarlo e inspeccionó la información de las particiones sin modificar discos reales. Por último, aprendió los seis campos de fstab, comprendió la importancia de los UUID estables y validó un fstab de práctica independiente antes de utilizarlo.