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

btrfs, Принудительный пересчет неверной контрольной суммы

Большой жесткий диск с USB-подключением btrfs содержит файл размером 1 ТБ (образ диска). Первый btrfs scrub после записи этого файла было обнаружено 3 логических сбойных блока, разработанных где-то в середине этого файла:

[ 7702.964265] BTRFS warning (device sdd1): checksum error at logical
5473719291904 on dev /dev/sdd1, sector 222940168, root 5, inode 1245769,
offset 97110921216, length 4096, links 1 (path: dysk/dysk.bin)
[ 7702.964274] BTRFS error (device sdd1): bdev /dev/sdd1 errs: wr 0,
rd 0, flush 0, corrupt 17, gen 0
[ 7702.964278] BTRFS error (device sdd1): unable to fixup (regular) error
at logical 5473719291904 on dev /dev/sdd1
[…]
[ 9588.625906] BTRFS warning (device sdd1): checksum error at logical
5241172611072 on dev /dev/sdd1, sector 691494312, root 5, inode 1245769,
offset 310632271872, length 4096, links 1 (path: dysk/dysk.bin)
[ 9588.625916] BTRFS error (device sdd1): bdev /dev/sdd1 errs: wr 0,
rd 0, flush 0, corrupt 18, gen 0
[ 9588.625920] BTRFS error (device sdd1): unable to fixup (regular) error
at logical 5241172611072 on dev /dev/sdd1
[…]
[20545.302898] BTRFS warning (device sdd1): checksum error at logical
3991747321856 on dev /dev/sdd1, sector 3185809200, root 5, inode 1245769,
offset 907925676032, length 4096, links 1 (path: dysk/dysk.bin)
[20545.302908] BTRFS error (device sdd1): bdev /dev/sdd1 errs: wr 0,
rd 0, flush 0, corrupt 19, gen 0
[20545.302912] BTRFS error (device sdd1): unable to fixup (regular) error
at logical 3991747321856 on dev /dev/sdd1

Для этого файла нет резервных копий, поэтому идеальное восстановление невозможно. Полная область раздела btrfs может быть прочитана без ошибок ввода-вывода, поэтому я думаю, что есть два возможных случая: либо блок данных был записан неправильно (невозможно восстановить), либо сохранена неправильная контрольная сумма (исправление должно быть простым: пересчитать контрольную сумму ). Учитывая, что первое дело уже потеряно, как я могу спросить btrfs пересчитать контрольную сумму блока данных?