104.2 Mantener la integridad de los sistemas de archivos - Teoria
1. Conceptos fundamentales
1.1 Superbloque
El superbloque es una estructura de datos critica que contiene metadatos sobre el sistema de archivos:
- Tamano total del sistema de archivos
- Tamano de los bloques
- Numero total de inodos
- Numero de inodos y bloques libres
- Fecha del ultimo montaje
- Conteo de montajes
- Estado del sistema de archivos (limpio/sucio)
Los sistemas ext mantienen copias de respaldo del superbloque en ubicaciones predecibles. Si el superbloque principal se corrompe, se puede restaurar desde una copia.
# Ver ubicaciones de copias del superbloque
dumpe2fs /dev/sda1 | grep -i superblock
# Usar copia de respaldo para reparar
e2fsck -b 32768 /dev/sda11.2 Inodos
Un inodo (index node) es una estructura de datos que almacena metadatos de un archivo o directorio:
- Tipo de archivo (regular, directorio, enlace, etc.)
- Permisos (rwx)
- Propietario y grupo (UID/GID)
- Tamanos
- Timestamps (atime, mtime, ctime)
- Punteros a los bloques de datos en disco
- Conteo de enlaces duros
Lo que NO contiene el inodo: el nombre del archivo. El nombre se almacena en la entrada del directorio que apunta al inodo.
Dato clave para el examen: Es posible quedarse sin inodos aunque quede espacio en disco. Esto ocurre cuando hay muchisimos archivos pequenos. Se verifica con
df -i.
# Ver numero de inodo de un archivo
ls -i archivo.txt
# Ver uso de inodos
df -i
# Ver informacion completa del inodo
stat archivo.txt1.3 Journaling
El journaling es un mecanismo que registra las operaciones pendientes en un “journal” (diario) antes de aplicarlas al sistema de archivos. Si el sistema se apaga inesperadamente, el journal permite recuperar rapidamente la consistencia sin necesidad de un fsck completo.
Tipos de journaling:
- Journal de metadatos: Solo registra cambios en metadatos (predeterminado en ext3/ext4)
- Journal completo: Registra metadatos + datos (mas seguro, mas lento)
- Writeback: Solo metadatos, sin orden garantizado (mas rapido, menos seguro)
Sistemas con journaling: ext3, ext4, XFS, Btrfs, JFS Sistemas sin journaling: ext2, FAT, VFAT
2. Monitorizar el espacio en disco
2.1 df (disk free)
df muestra el espacio usado y disponible en los sistemas de archivos montados.
# Formato basico
df
# Formato legible para humanos (-h: human readable)
df -h
# Mostrar tipo de sistema de archivos
df -T
# Mostrar uso de inodos
df -i
# Combinar opciones
df -hT
# Solo un sistema de archivos especifico
df -h /dev/sda1
df -h /homeColumnas de la salida de df:
| Columna | Significado |
|---|---|
| Filesystem | Dispositivo o fuente |
| Size / 1K-blocks | Tamano total |
| Used | Espacio usado |
| Avail | Espacio disponible |
| Use% | Porcentaje de uso |
| Mounted on | Punto de montaje |
Nota para el examen:
df -imuestra los inodos usados y disponibles. Es crucial para diagnosticar situaciones donde el disco “esta lleno” perodf -hmuestra espacio libre (agotamiento de inodos).
2.2 du (disk usage)
du estima el espacio en disco usado por archivos y directorios.
# Uso basico (muestra cada subdirectorio)
du /var/log
# Resumen total de un directorio (-s: summary)
du -s /var/log
# Formato legible (-h: human readable)
du -sh /var/log
# Profundidad maxima de directorios
du --max-depth=1 /var
du -d 1 /var
# Total combinado de varios argumentos (-c: grand total)
du -shc /var/log /tmp /home
# Ordenar por tamano (combinado con sort)
du -sh /var/* | sort -h
# Ver que ocupa mas en un directorio
du -sh /home/* | sort -rh | head -10Opciones clave de du:
| Opcion | Descripcion |
|---|---|
-s | Solo mostrar total (summary) |
-h | Formato legible (human readable) |
-c | Mostrar total general al final |
--max-depth=N | Limitar profundidad de directorios |
-a | Incluir archivos individuales |
--exclude=PATRON | Excluir archivos que coincidan con patron |
3. Verificar y reparar sistemas de archivos
3.1 fsck (filesystem check)
fsck es el comando generico para verificar y reparar sistemas de archivos. Debe ejecutarse en sistemas de archivos desmontados (o montados en solo lectura).
# Verificar una particion (DESMONTADA)
fsck /dev/sda1
# Reparar automaticamente
fsck -y /dev/sda1
# Verificar sin reparar (solo reportar)
fsck -n /dev/sda1
# Forzar verificacion aunque parezca limpio
fsck -f /dev/sda1
# Especificar tipo de sistema de archivos
fsck -t ext4 /dev/sda1
# Verificar la particion raiz en modo de rescate
# (montar como solo lectura primero)
mount -o remount,ro /
fsck /dev/sda1IMPORTANTE para el examen: NUNCA ejecutar
fscken un sistema de archivos montado en modo lectura-escritura. Puede causar corrupcion de datos. El sistema de archivos debe estar desmontado o montado como solo lectura.
3.2 e2fsck
e2fsck es especifico para sistemas ext2/ext3/ext4.
# Verificar y reparar ext4
e2fsck /dev/sda1
# Reparar automaticamente (responder yes a todo)
e2fsck -y /dev/sda1
# Forzar verificacion
e2fsck -f /dev/sda1
# Solo verificar, no reparar
e2fsck -n /dev/sda1
# Usar superbloque de respaldo
e2fsck -b 32768 /dev/sda1
# Verificar y reconstruir el journal
e2fsck -j /dev/sda13.3 xfs_repair
xfs_repair es la herramienta para reparar sistemas de archivos XFS.
# Reparar XFS (el FS debe estar desmontado)
xfs_repair /dev/sda1
# Solo verificar sin reparar (dry-run)
xfs_repair -n /dev/sda1
# Forzar reparacion en log sucio
xfs_repair -L /dev/sda1Nota: Para XFS, NO se usa
fsck.xfspara reparacion.fsck.xfsexiste pero no hace nada real; es solo un placeholder. La herramienta real esxfs_repair.
4. Ajustar y consultar parametros del sistema de archivos
4.1 tune2fs (para ext2/ext3/ext4)
tune2fs permite ajustar parametros configurables de sistemas ext.
# Mostrar toda la informacion del FS
tune2fs -l /dev/sda1
# Establecer maximo de montajes antes de fsck automatico
tune2fs -c 30 /dev/sda1
# Desactivar verificacion por conteo de montajes
tune2fs -c 0 /dev/sda1
tune2fs -c -1 /dev/sda1
# Establecer intervalo de tiempo para fsck (dias)
tune2fs -i 30d /dev/sda1
# Desactivar verificacion por tiempo
tune2fs -i 0 /dev/sda1
# Anadir journal a ext2 (convertir a ext3)
tune2fs -j /dev/sda1
# Cambiar etiqueta del volumen
tune2fs -L "datos" /dev/sda1
# Establecer bloques reservados para root (porcentaje)
tune2fs -m 5 /dev/sda1
# Establecer UUID
tune2fs -U random /dev/sda1Opciones clave de tune2fs:
| Opcion | Descripcion |
|---|---|
-l | Listar informacion del superbloque |
-c N | Max montajes antes de fsck (0 o -1 desactiva) |
-i Nd | Intervalo de tiempo para fsck (0 desactiva) |
-j | Anadir journal (ext2 -> ext3) |
-L etiqueta | Cambiar etiqueta del volumen |
-m N | Porcentaje de bloques reservados para root |
-U uuid | Cambiar UUID |
4.2 dumpe2fs (para ext2/ext3/ext4)
dumpe2fs muestra informacion detallada del superbloque y los grupos de bloques.
# Mostrar toda la informacion
dumpe2fs /dev/sda1
# Solo informacion del superbloque (sin grupos de bloques)
dumpe2fs -h /dev/sda1
# Buscar informacion especifica
dumpe2fs -h /dev/sda1 | grep -i "block count"
dumpe2fs -h /dev/sda1 | grep -i "inode count"
dumpe2fs -h /dev/sda1 | grep -i "mount count"
dumpe2fs /dev/sda1 | grep -i superblockInformacion relevante que muestra:
- Conteo de inodos y bloques
- Tamano de bloques
- Conteo de montajes y maximo de montajes
- Estado del FS (clean/not clean)
- Ultimo montaje y ultima verificacion
- Features del FS (has_journal, extents, etc.)
- Ubicaciones de los superbloques de respaldo
4.3 xfs_info
xfs_info muestra informacion sobre un sistema XFS. A diferencia de dumpe2fs, acepta el punto de montaje (el FS debe estar montado).
# Mostrar informacion de un XFS montado
xfs_info /mnt/datos
# Tambien funciona con el dispositivo
xfs_info /dev/sda15. Herramientas de depuracion de sistemas de archivos
5.1 debugfs (para ext2/ext3/ext4)
debugfs es un depurador interactivo para sistemas de archivos ext2/ext3/ext4. Permite examinar y modificar estructuras internas del sistema de archivos a bajo nivel.
# Abrir en modo solo lectura (seguro)
debugfs /dev/sda1
# Abrir en modo lectura-escritura (peligroso)
debugfs -w /dev/sda1Comandos internos de debugfs:
| Comando | Descripcion |
|---|---|
ls | Listar archivos del directorio actual |
cd directorio | Cambiar directorio |
stat archivo | Mostrar informacion del inodo de un archivo |
cat archivo | Mostrar contenido de un archivo |
lsdel | Listar inodos de archivos borrados |
undel inodo nombre | Intentar recuperar un archivo borrado |
dump archivo destino | Extraer un archivo del FS |
icheck bloque | Ver que inodo usa un bloque |
ncheck inodo | Ver el nombre de archivo de un inodo |
quit | Salir |
# Ejemplo: examinar un archivo borrado
debugfs /dev/sda1
debugfs: lsdel # Lista archivos borrados con sus inodos
debugfs: stat <12345> # Ver datos del inodo 12345
debugfs: quitPara el examen:
debugfses util para examinar la estructura interna de ext2/ext3/ext4 y para recuperar archivos borrados. El FS debe estar preferiblemente desmontado o montado como solo lectura.
5.2 xfs_db (depurador para XFS)
xfs_db es el depurador de bajo nivel para sistemas de archivos XFS. Permite examinar y modificar las estructuras internas de XFS.
# Examinar un sistema XFS (debe estar desmontado)
xfs_db /dev/sda1
# Modo solo lectura explicito
xfs_db -r /dev/sda1Comandos internos de xfs_db:
| Comando | Descripcion |
|---|---|
sb | Examinar el superbloque |
sb 0 | Ir al superbloque primario |
print | Imprimir la estructura actual |
inode N | Examinar el inodo N |
freesp | Mostrar estadisticas de espacio libre |
quit | Salir |
# Ejemplo: ver informacion del superbloque
xfs_db /dev/sda1
xfs_db> sb 0
xfs_db> print
xfs_db> quit5.3 xfs_fsr (desfragmentacion de XFS)
xfs_fsr (XFS filesystem reorganizer) desfragmenta un sistema de archivos XFS que esta montado. A diferencia de ext4 (que rara vez necesita desfragmentacion), XFS puede beneficiarse de la reorganizacion.
# Desfragmentar todo el sistema XFS montado (se ejecuta durante un tiempo limitado)
xfs_fsr /dev/sda1
# Desfragmentar un archivo especifico
xfs_fsr /ruta/al/archivo
# Ejecutar durante un tiempo especifico (en segundos)
xfs_fsr -t 600 /dev/sda1
# Modo verbose
xfs_fsr -v /dev/sda1Para el examen:
xfs_fsrfunciona en sistemas XFS montados (a diferencia de la mayoria de herramientas de reparacion que requieren FS desmontado).xfs_dbes el equivalente XFS dedebugfspara ext.
6. Puntos clave para el examen
-
fscksolo en FS desmontado o montado como solo lectura. NUNCA en FS montado en lectura-escritura. -
df -imuestra el uso de inodos. Un FS puede estar “lleno” por agotamiento de inodos aunque quede espacio en bloques. -
df -hpara espacio legible,df -Tpara ver el tipo de FS. -
du -shda un resumen en formato legible del tamano de un directorio. -
tune2fs -lmuestra informacion del superbloque (solo ext).tune2fs -cytune2fs -iconfiguran la verificacion automatica. -
tune2fs -janade journaling a ext2, convirtiendolo efectivamente en ext3. -
dumpe2fsmuestra informacion detallada incluyendo ubicaciones de superbloques de respaldo. -
xfs_repaires la herramienta real para reparar XFS (nofsck.xfs). -
xfs_infonecesita que el FS este montado y acepta el punto de montaje. -
El superbloque contiene metadatos criticos del FS. Los sistemas ext mantienen copias de respaldo.
-
Los inodos contienen metadatos de archivos pero NO el nombre del archivo.
Trampas del examen
Errores comunes y distinciones criticas que LPI suele evaluar en este subtema:
fsckNUNCA en un FS montado en lectura-escritura — Ejecutarfscken un filesystem montado puede causar corrupcion de datos. Debe estar desmontado o montado como solo lectura (mount -o remount,ro). El examen puede preguntar cual es el prerequisito para ejecutarfsck.- Disco “lleno” con espacio libre: agotamiento de inodos —
df -hpuede mostrar espacio disponible, perodf -imuestra que los inodos estan al 100%. Esto ocurre con muchos archivos pequenos. El examen puede presentar este escenario y preguntar la causa. tune2fses solo para ext2/ext3/ext4 — No funciona con XFS ni otros filesystems. Para XFS se usaxfs_info(consulta) oxfs_admin(modificacion). El examen puede ofrecertune2fscomo opcion para un filesystem XFS.xfs_repaires la herramienta real;fsck.xfsno hace nada —fsck.xfsexiste como placeholder pero no realiza ninguna reparacion. La herramienta real para reparar XFS esxfs_repair. El examen puede ofrecerfsck.xfscomo la forma correcta de reparar XFS.duvsdf—duestima el espacio usado por archivos/directorios;dfmuestra el espacio del filesystem completo.du -sh /varda el tamano de /var;df -h /varda el espacio total/usado/libre del filesystem donde esta /var.dumpe2fsmuestra info del superbloque incluyendo backups —dumpe2fs /dev/sda1 | grep -i superblockmuestra las ubicaciones de las copias del superbloque.e2fsck -b 32768 /dev/sda1usa una copia de respaldo. El examen puede preguntar como reparar un superbloque corrupto.- El inodo NO contiene el nombre del archivo — El nombre se almacena en la entrada del directorio. El inodo contiene permisos, propietario, tamano, timestamps y punteros a bloques. El examen puede incluir “nombre del archivo” en una lista de contenidos del inodo.
xfs_inforequiere FS montado;dumpe2fsno —xfs_infoacepta el punto de montaje (requiere FS montado);dumpe2fsacepta el dispositivo (no necesita estar montado). El examen puede confundir los requisitos de cada herramienta.xfs_fsrfunciona en FS montado — A diferencia dexfs_repairque requiere FS desmontado,xfs_fsr(desfragmentador) se ejecuta en un XFS montado. El examen puede preguntar que herramienta XFS funciona con el FS montado.