Как испортить файловую систему

8

Я собираюсь протестировать xfs_repair на некоторых больших файловых системах (около 50 ТБ), так как в прошлом использование памяти было высоким. Хотя я мог тестировать программу только на правильных файловых системах, было бы неплохо проверить их на поврежденной системе.

Так что будет лучшим способом испортить файловую систему. Дополнительный кредит, если метод неоднократно дает одно и то же искажение каждый раз ....

Чтобы дать людям представление о том, что я имею в виду в 2006 году

«Чтобы успешно проверить или запустить восстановление в многотерабайтной файловой системе, вам необходимо:

  • 64-битная машина
  • 64-битный xfs _ исправление / xfs _ проверка двоичного файла
  • ~ 2 ГБ ОЗУ на терабайт файловой системы
  • 100-200 МБ ОЗУ на миллион инодов в файловой системе.

xfs_repair обычно использует меньше памяти, чем эта, но эти цифры дают приблизительную оценку того, что может потребоваться для восстановления большой файловой системы, заполненной на> 80%.

FWIW, в прошлый раз, когда это произошло внутренне, рассматриваемая файловая система объемом 29 ТБ потребовала ~ 75 ГБ ОЗУ + подкачка для восстановления ».

Джеймс
источник
Интересный вопрос, но можно ли улучшить форматирование цитаты?
Курятник
Если так, то я не знаю как?
Джеймс
Попробуйте окружить его `
Брэд Гилберт
Это интересный тест. Я планирую опубликовать результаты в любом месте?
3dinfluence
Ну, я, вероятно, отправлю сообщение в список рассылки xfs, и я всегда смогу отредактировать этот вопрос с результатами.
Джеймс

Ответы:

12

У xfs_db есть опция blocktrash, которая

Корзина случайно выбранных блоков метаданных файловой системы. Износ происходит случайно выбранных битов в выбранных блоках. Эта команда доступна только в отладочных версиях xfs_db. Это полезно для тестирования xfs_repair(8)и xfs_check(8).

Например

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

Джеймс
источник
2

dd блокирует устройство, на котором находится файловая система. Вы можете написать это так, чтобы это можно было повторить. Просто несколько случайных блоков в случайных местах, а затем двигаться дальше.

Posipiet
источник
В файловой системе объемом 50 ТБ, которая в основном пуста, вам наверняка придется повезти, если вы повредите систему?
Джеймс
Ну, вам просто нужно использовать достаточно случайных блоков :-). В любом случае, «столкновение», вероятно, более вероятно, чем вы думаете, из-за парадокса дня рождения: en.wikipedia.org/wiki/Birthday_Paradox .
слеске
0

Вы можете попробовать перезаписать первые 512 байт (MBR и таблицу разделов) блочного устройства.

Сделайте резервную копию сначала:

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

И обнуляем это позже:

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

После этого ваша машина не должна загружаться, вы можете проверить восстановление XFS с помощью live CD.

Каролис Т.
источник
Я хочу иметь относительно небольшое повреждение, так как время выполнения и использование памяти зависят от количества файлов и размера файловой системы
Джеймс
Это всего лишь 512 байт коррупции. Это просто проверяет, способна ли файловая система восстанавливаться без какой-либо информации о том, как должна выглядеть файловая система - если xfs не убрал где-нибудь запасные суперблоки.
Towo