Cómo corromper un sistema de archivos


8

Voy a probar 'xfs_repair' en algunos sistemas de archivos grandes (alrededor de 50 TB) ya que en el pasado el uso de memoria era alto. Si bien pude probar el programa solo en sistemas de archivos correctos, sería bueno probarlos en un sistema corrupto.

Entonces, ¿cuál sería la mejor manera de corromper un sistema de archivos? Crédito adicional si el método da repetidamente la misma corrupción cada vez ...

Darle a la gente una idea de lo que quiero decir en 2006 ish

"Para verificar o ejecutar con éxito la reparación en un sistema de archivos de varios terabytes, necesita:

  • una máquina de 64 bits
  • a 64 bits xfs _ reparar / xfs _ verificar binario
  • ~ 2 GB de RAM por terabyte de sistema de archivos
  • 100-200 MB de RAM por millón de inodos en el sistema de archivos.

xfs_repair usualmente usará menos memoria que esto, pero estos números le dan una cifra aproximada de lo que un sistema de archivos grande que está> 80% lleno puede requerir reparación.

FWIW, la última vez que esto surgió internamente, el sistema de archivos de 29TB en cuestión requirió ~ 75GB de RAM + intercambio para reparar ".


Pregunta interesante, pero ¿se puede mejorar el formato de la cita?
Coops

Si es así, no sé cómo.
James

Intenta rodearlo con `
Brad Gilbert

Esta es una prueba interesante. ¿Planeas publicar los resultados en alguna parte?
3dinfluence el

Bueno, probablemente publicaré en la lista de correo xfs y siempre podría editar esta pregunta con los resultados.
James

Respuestas:


12

xfs_db tiene una opción blocktrash que

Basura de bloques de metadatos del sistema de archivos seleccionados al azar. Trashing ocurre a bits seleccionados al azar en los bloques elegidos. Este comando solo está disponible en las versiones de depuración de xfs_db. Es útil para pruebas xfs_repair(8)y xfs_check(8).

Por ejemplo

xfs_db -x -c blockget -c "blocktrash -s 512109 -n 1000" /dev/xfstest/testfs


2

dd bloquea el dispositivo donde reside el sistema de archivos. Puede escribir esto para que sea repetible. Solo unos pocos bloques al azar en ubicaciones aleatorias, luego continúe.


En un sistema de archivos de 50TB que está mayormente vacío, ¿seguramente tendrías que tener la suerte de corromper el sistema?
James

Bueno, solo tienes que usar suficientes bloques al azar :-). De cualquier manera, una "colisión" es probablemente más probable de lo que piensas, debido a la paradoja del cumpleaños: en.wikipedia.org/wiki/Birthday_Paradox .
sleske

0

Puede intentar sobrescribir los primeros 512 bytes (MBR y tabla de particiones) del dispositivo de bloque.

Haz una copia de seguridad primero:

dd if=/dev/device bs=512 count=1 of=backup.bin

Y cero a continuación:

dd if=/dev/zero bs=512 count=1 of=/dev/device

Su máquina no debería arrancar después de eso, puede probar la reparación de XFS utilizando un CD en vivo.


Quiero tener una corrupción relativamente pequeña ya que el tiempo de ejecución y el uso de la memoria dependen de la cantidad de archivos y el tamaño del sistema de archivos
James

Esto es solo 512 bytes de corrupción. Esto solo verifica si el sistema de archivos puede recuperarse sin ninguna información sobre cómo debería verse el sistema de archivos, si xfs no ha guardado algunos superbloques de repuesto en alguna parte.
towo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.