Вопрос или проблема
После отключения электроэнергии мой диск btrfs больше не монтируется.
mount
говорит не удается прочитать суперблок на /dev/sdb1
dmesg
говорит
[ 3543.386998] Ошибка BTRFS (устройство sdb1): неверное начало блока дерева, зеркало 1 хочет 762062323712, имеет 0
[ 3543.399692] Ошибка BTRFS (устройство sdb1): неверное начало блока дерева, зеркало 2 хочет 762062323712, имеет 0
btrfs check
говорит
проверка контрольной суммы не удалась на 762062323712, хотелось 0x00000000, найдено 0xb6bde3e4
проверка контрольной суммы не удалась на 762062323712, хотелось 0x00000000, найдено 0xb6bde3e4
проверка контрольной суммы не удалась на 762062323712, хотелось 0x00000000, найдено 0xb6bde3e4
неверный блок дерева 762062323712, несовпадение bytenr, хочет=762062323712, есть=0
ОШИБКА: не удалось прочитать группы блоков: ошибка ввода/вывода
ОШИБКА: не удается открыть файловую систему
Вещи, которые не помогли:
btrfs check --repair
-> такой же вывод, как уbtrfs check
btrfs rescue super-recover
-> говоритВсе суперблоки корректны, нет необходимости восстанавливать
Вещи, которые помогли:
btrfs restore
-> начинает копировать…mount
с-o rescue=ignorebadroots,ro
-> монтирует все правильно, только для чтения
Похоже, что на диске нет плохих секторов, это только проблема с контрольной суммой.
Как мне пересчитать контрольные суммы, чтобы сделать btrfs счастливым? Это btrfs rescue chunk-recover
?
Ответ или решение
Проблема, с которой вы столкнулись, связана с ошибками контрольных сумм в файловой системе Btrfs, которые возникли в результате аппаратного сбоя или отключения питания. Судя по вашим сообщениям об ошибках, файловая система не может корректно прочитать определенные блоки данных. Вот шаги, которые могут помочь вам исправить эту ситуацию и восстановить целостность вашей файловой системы Btrfs.
1. Резервное копирование данных
Прежде всего, если вы сможете сделать это, выполните резервное копирование данных, что уже, кажется, удалось сделать с помощью btrfs restore
. Это поможет сохранить ваши данные, если что-то пойдет не так в процессе восстановления.
btrfs restore /dev/sdb1 /путь/к/каталогу/для/резервного/копирования
2. Использование btrfs scrub
После резервного копирования попробуйте выполнить команду btrfs scrub start
, чтобы проверить всю файловую систему на наличие ошибок и попытаться исправить их. Этот процесс может занять некоторое время.
btrfs scrub start /mnt/point
3. Использование btrfs check --repair
Вы уже упомянули, что команда btrfs check --repair
не помогла. Это может произойти, если файлы на диске уже повреждены, и этот метод неэффективен. Однако стоит снова попробовать, если вы еще не сделали этого на размонтированном разделе.
umount /dev/sdb1
btrfs check --repair /dev/sdb1
4. Использование btrfs rescue
Если предыдущие шаги не помогли, можно попробовать btrfs rescue
. Вы уже пробовали btrfs rescue super-recover
, который не нашел необходимости в восстановлении суперблоков. Попробуйте другие варианты:
btrfs rescue chunk-recover
: Поскольку вы упомянули эту команду, попробуйте ее на размонтированном разделе. Это может помочь в восстановлении поврежденных кусочков данных.
btrfs rescue chunk-recover /dev/sdb1
5. Восстановление файловой системы
Если предыдущие шаги все еще не помогли, попробуйте создать новую файловую систему, если у вас есть полное резервное копирование данных, и отформатировать том:
mkfs.btrfs /dev/sdb1
6. Проверка состояния оборудования
Если проблема повторяется, рекомендуется проверить состояние вашего жесткого диска на наличие аппаратных проблем и сбоя с помощью утилит, таких как smartctl
.
smartctl -a /dev/sdb
Обратите внимание на предупреждения или ошибки, которые могут потребовать внимания.
Заключение
После выполнения этих шагов, проверьте состояние вашей файловой системы. В будущем, чтобы избежать подобных ситуаций, рекомендуется использовать источники бесперебойного питания (ИБП) и регулярно выполнять резервное копирование ваших данных.