Назад | Перейти на главную страницу

Восстановить раздел JFS с повторяющимися ссылками на блоки

После серьезного сбоя сервера мне не удалось смонтировать раздел JFS в Linux. В jfs_fsck инструмент возвращается

Duplicate block references have been detected in Metadata.  CANNOT CONTINUE.
processing terminated:  <date> <time>  with return code: 10060  exit code: 4.

Раздел 12 ТБ содержит результаты научных вычислений, которые могут быть воспроизведены в течение нескольких недель и не подлежат резервному копированию. Хотя я не могу исключить возможность того, что некоторые невоспроизводимые данные будут валяться из-за халатности пользователя.

Мой план по восстановлению раздела был следующим:

  1. Воспроизвести журнал и смонтировать раздел только для чтения
  2. Скопируйте файлы, которые можно читать, в другую файловую систему
  3. Определите блок с повторяющимися ссылками, используя jfs_fsck -v
  4. Определите inodes, соответствующие этим блокам, с помощью jfs_debugfs
  5. Найдите объекты файловой системы, соответствующие inodes, используя find -inum
  6. Отключите все объекты, используя jfs_debugfs
  7. Бегать jfs_fsck снова и надеюсь, что он завершится без ошибок

Этот план сработал только на этапах (1) - (4). Сначала он потерпел неудачу на этапе (5), где find похоже, не получил ни одного inode после нескольких часов работы и может работать вечно. При копировании файлов я обнаружил, что в некоторых каталогах деревья B + превращаются в графы с циклами, поэтому не исключено, что обход каталога не завершится.

Я сразу перешел к шагу (6) и сначала отключил каталоги, в которых я мог найти поврежденные структуры. Но это не помогло сделать jfs_fsck работать до завершения. Затем я удалил все каталоги, кроме записи в корневом каталоге. Все же jfs_fsck все еще не удалось завершить.

Думаю, мне нужно отредактировать не только структуру каталогов, но и карты размещения блоков. Однако я не мог найти способ сделать это с помощью jfs_debugfs.

Есть ли инструменты, которые могут помочь восстановить раздел с повторяющимися ссылками на блоки?

Если вы вообще можете смонтировать диск R / O, вы, вероятно, можете попытаться скопировать данные, которые вы можете. Если журнал поврежден, возможно, потеряны только несколько последних изменений файла. Таким образом, вы можете попытаться извлечь файлы.

Однако, если файл представляет собой данные, как узнать, правильно ли он или сам не был поврежден.

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

На этом этапе я думаю, что для обеспечения целостности данных вам, вероятно, придется повторно запустить моделирование.