XFS

Reparación de un sistema XFS

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

Con tantas piezas diferentes que constituyen una pila de almacenamiento típica, es un milagro que todo funcione. Sin embargo, las cosas funcionan bien la mayor parte del tiempo. Las pocas veces que las cosas van mal, necesitamos utilidades como xfs_repair para salir del lío.

Las cosas pueden salir mal cuando está escribiendo un archivo y se corta la energía o hay un pánico en el kernel. Incluso los datos que permanecen inactivos en un disco pueden deteriorarse con el tiempo debido a que la estructura física de los elementos de la memoria puede cambiar, esto se conoce como descomposición de bits. En todos los casos, necesitamos un mecanismo para:

  1. Verificar que los datos que se están leyendo 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 comprobación coincide, los datos no se han modificado
  2. Una forma de reconstruir los datos corruptos o perdidos, ya sea de un bloque espejo o de un bloque de paridad.

Configuración de la zona de pruebas

Configuremos un banco de pruebas para ejecutar una rutina de reparación de xfs en lugar de usar discos reales con datos valiosos. Si ya tiene un sistema de archivos roto, puede omitir esta sección y pasar directamente a la siguiente. Este banco de pruebas está formado por una máquina virtual de Ubuntu a la que se conecta un disco virtual que proporciona almacenamiento sin procesar. 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 la 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 parte
└─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 está instalado el sistema operativo, ahora hay un nuevo dispositivo sdb. Creemos rápidamente una partición y formateemos con el sistema de archivos XFS.

Abra la utilidad parted como usuario root:

$ parted -a óptimo / dev / sdb

Primero creemos una tabla de particiones usando mklabel, a esto le sigue la creación de una sola partición de todo el disco (que tiene un tamaño de 107 GB). Puede verificar que la partición está hecha enumerándola usando el comando de impresión:

(parted) mklabel gpt
(separado) mkpart primaria 0107
(partido) imprimir
(se separó) renunció

Bien, ahora podemos ver usando lsblk que hay un nuevo dispositivo de bloque debajo del dispositivo sdb, llamado sdb1.

Formateemos este almacenamiento como xfs y montémoslo en el directorio / mnt. Nuevamente, realice las siguientes acciones como root:

$ mkfs.xfs / dev / sdb1
$ montaje / 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 si = / dev / urandom of = / mnt / myfile.recuento de txt = 1024 bs = 1024

El comando anterior escribiría un archivo myfile.txt de 1 MB de tamaño. Si lo desea, puede generar automáticamente más archivos de este tipo, distribuirlos en varios directorios dentro del sistema de archivos xfs (montado en / mnt) y luego verificar la fragmentación. Use bash o python o cualquier otro de su lenguaje de scripting favorito para esto.

Comprobación y reparación de errores

La corrupción de datos puede infiltrarse silenciosamente en sus discos sin su conocimiento. Si no se lee un bloque de datos y no se compara la suma de comprobación, 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 completo de todos los bloques de datos para verificar la descomposición de bits u otros errores con frecuencia.

Se supone que la utilidad xfs_scrub realiza esta tarea por su. Inspirada en parte por el comando scrub de OpenZFS, esta función experimental está disponible solo en xfsprogs versión 4.15.1-1ubuntu1 que no es una versión estable. Si detecta un error de forma incorrecta, podría inducirle a error y provocar daños en los 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 intentar reparar un sistema de archivos dañado, primero tendría que desmontarlo. Esto es para evitar que las aplicaciones escriban inadvertidamente en el sistema de archivos cuando se supone que debe dejarse solo.

$ umount / dev / sdb1

Reparar errores es tan simple como ejecutar:

$ xfs_repair / dev / sdb1

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

Próximos pasos

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

Si un controlador falla, o una tarjeta RAID ha perdido su vida, entonces ningún software en el mundo puede reparar el sistema de archivos por usted. No desea facturas costosas de recuperación de datos y tampoco desea tiempos de inactividad prolongados, así que esté atento a esos SSD y discos giratorios!

Cómo cambiar la configuración del mouse y el panel táctil con Xinput en Linux
La mayoría de las distribuciones de Linux se envían con la biblioteca "libinput" de forma predeterminada para manejar eventos de entrada en un sistema...
Vuelva a asignar los botones del mouse de manera diferente para diferentes programas con X-Mouse Button Control
Tal vez necesite una herramienta que pueda hacer que el control de su mouse cambie con cada aplicación que use. Si este es el caso, puede probar una a...
Revisión del mouse inalámbrico Microsoft Sculpt Touch
Recientemente leí sobre el Microsoft Sculpt Touch mouse inalámbrico y decidí comprarlo. Después de usarlo por un tiempo, decidí compartir mi experienc...