Reparación de un sistema XFS

Reparación de un sistema XFS
Los sistemas de archivos se construyen en la parte superior de los dispositivos de almacenamiento. Hay controladores RAID y controladores de disco que ejecutan su propia pequeña pieza de firmware. Hay cachés para mejorar el rendimiento. Hay discos con diferentes tamaños del sector y hay discos que informarían un tamaño del sector diferente dependiendo de cómo haga la pregunta.

Con tantas partes diferentes que constituyen una pila de almacenamiento típica, es un milagro que cualquier cosa funcione en absoluto. Sin embargo, las cosas funcionan bien la mayor parte del tiempo. Las pocas veces en que las cosas salen mal, necesitamos utilidades como xfs_repair para sacarnos del desastre.

Las cosas pueden salir mal cuando está escribiendo un archivo y se apaga la energía o hay un pánico del núcleo. Incluso los datos que se sientan inactivos en un disco pueden decaer con el tiempo debido a la estructura física de los elementos de memoria puede cambiar, esto se conoce como Bit Rot. En todos los casos, necesitamos un mecanismo para:

  1. Verificar los datos que se leen son los mismos datos que se escribieron por última vez. Esto se implementa teniendo una suma de verificación para cada bloque de datos y comparando la suma de verificación para ese bloque cuando se leen los datos. Si la suma de verificación coincide, los datos no han sido alterados
  2. Una forma de reconstruir los datos corruptos o perdidos, ya sea desde un bloque de espejo o desde un bloque de paridad.

Configuración de sandbox

Configurar un TestBench para ejecutar una rutina de reparación XFS en lugar de usar discos reales con datos valiosos sobre ella. Si ya tiene un sistema de archivos roto, puede omitir esta sección y saltar directamente a la siguiente. Este banco de pruebas se compone de una VM ubuntu a la que se conecta un disco virtual que proporciona almacenamiento en bruto. Puede usar VirtualBox para crear la VM y luego crear un disco adicional para adjuntar a la VM.

Simplemente vaya a la configuración de su VM y debajo Configuración → Almacenamiento Sección Puede agregar un nuevo disco al controlador SATA Puede crear un nuevo disco. Como se muestra a continuación, pero asegúrese de que su VM esté apagada cuando haga esto.

Una vez que se crea el nuevo disco, encienda la VM y abra el terminal. El comando lsblk Enumera todos los dispositivos de bloque disponibles.

$ lsblk
SDA 8: 0 0 60g 0 disco
├─Sda1 8: 1 0 1M 0 Part
└─Sda2 8: 2 0 60g 0 parte /
SDB 8:16 0 100G 0 Disco
SR0 11: 0 1 1024m 0 ROM

Aparte del dispositivo de bloque principal SDA, Donde se instala el sistema operativo, ahora hay un nuevo dispositivo SDB. Creemos rápidamente una partición a partir de ella y la formaticemos con el sistema de archivos XFS.

Abra la utilidad separada como usuario root:

$ separado -A óptimo /dev /sdb

Creemos una tabla de partición primero usando Mklabel, esto se sigue creando una sola partición fuera del disco (que tiene un tamaño de 107 GB). Puede verificar que la partición se realice enumerándola usando el comando de impresión:

(separado) mklabel gpt
(separado) MKPART primario 0 107
(separado) Imprimir
(separado) Salir

De acuerdo, ahora podemos ver el uso de LSBLK que hay un nuevo dispositivo de bloque debajo del dispositivo SDB, llamado SDB1.

Formaticemos este almacenamiento como XFS y montelo en el directorio en /mnt. Nuevamente, haga las siguientes acciones como root:

$ MKFS.xfs /dev /sdb1
$ MONTO /DEV /SDB1 /MNT
$ DF -H

El último comando imprimirá todos los sistemas de archivos montados y puede verificar que /dev /sdb1 esté montado en /mnt.

A continuación, escribimos un montón de archivos como datos ficticios para desfragmentar aquí:

$ dd if =/dev/urandom of =/mnt/myfile.TXT Count = 1024 BS = 1024

El comando anterior escribiría un archivo myfile.Txt de tamaño de 1 MB. Si lo desea, puede generar automáticamente más archivos de este tipo, extenderlos a través de varios directorios dentro del sistema de archivos XFS (montado en /mnt) y luego verificar si hay fragmentación. Use Bash o Python o cualquier otro lenguaje de secuencia de comandos favorito para esto.

Comprobación y reparación de errores

Las corrupciones de datos pueden arrastrarse silenciosamente a sus discos sin su conocimiento. Si no se lee un bloque de datos y la suma de verificación no se compara, el error puede aparecer en el momento equivocado. Cuando alguien intenta acceder a los datos, en tiempo real. En cambio, es una buena idea ejecutar un escaneo exhaustivo de todos los bloques de datos para la verificación de la pudrición de bit u otros errores con frecuencia.

Se supone que la utilidad xfs_scrub hará esta tarea por su. Inspirado en parte por el comando Scrub de OpenZFS, esta característica experimental está disponible solo en XFSProgs versión 4.15.1-1ubuntu1, que no es una liberación estable. Si detecta erróneamente el error, podría engañarlo en causar la corrupción de datos en lugar de solucionarlo! Sin embargo, si desea experimentar con él, puede usarlo en un sistema de archivos montado usando el comando:

$ xfs_scrub /dev /sdb1

Antes de tratar de reparar un sistema de archivos corrupto, primero tendría que desmontarlo. Esto es para evitar que las aplicaciones escriban inadvertidamente al sistema de archivos cuando se supone que se deja solo.

$ Umount /dev /sdb1

Reparar errores es tan simple como en ejecución:

$ xfs_repair /dev /sdb1

Los metadatos esenciales siempre se mantienen como múltiples copias, incluso si no está usando RAID y si algo ha salido mal con el Superblock o Inodes, este comando puede solucionar ese problema para usted con toda probabilidad.

Próximos pasos

Si está viendo la corrupción de datos a menudo (o incluso una vez, si está ejecutando algo de la misión crítica), considere reemplazar sus discos, ya que este podría ser un indicador temprano de un disco que está a punto de morir.

Si un controlador falla, o una tarjeta RAID ha renunciado a la vida, entonces ningún software en el mundo puede reparar el sistema de archivos para usted. No desea costosas facturas de recuperación de datos y tampoco desea largas horas de inactividad, así que vigile esos SSD y platos giratorios!