После сбоя в работе системы возникает ошибка ввода-вывода при попытке прочитать определенный файл. Я запустил btrfs scrub
и обнаружил несоответствие контрольной суммы, влияющее на этот файл.
Теперь я хочу проверить, не повреждены ли хотя бы части этого файла. Как я могу заставить btrfs прочитать файл в любом случае?
РЕДАКТИРОВАТЬ: я попытался btrfs check --fix-crc
как предложено в другом потоке, но, похоже, он не понимает флаг fix-crc
, и я не могу найти его на странице руководства. Может быть, это устарело?
Я знаю, что есть btrfs check --init-csum-tree
, но, насколько я знаю, он полностью пересчитывает все контрольные суммы, что означает полное перечитывание всего содержимого жесткого диска.
РЕДАКТИРОВАТЬ 2: я смог получить содержимое файла, которые не были затронуты ddrescue. Однако я также хотел бы получить доступ к содержимому поврежденного сектора (поскольку ошибки ввода-вывода генерируются только из-за ошибки контрольной суммы btrfs, после диска все в порядке).
В журнале dmesg отображается только csum failed root 5 ino 130384 off 260317184 csum 0x8068db14 expected csum 0x240ab6d1 mirror 1
Данное смещение является только локальным для файла, которое невозможно прочитать. Если бы я мог каким-то образом получить поврежденный блок partion, я мог бы легко прочитать содержимое, используя dd
.