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 ".

James
fuente
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

James
fuente
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.

Posipiet
fuente
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.

Karolis T.
fuente
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