syxoi
@syxoi

Как восстаносить btrfs с LVM и RAID0?

Здравствуйте!
Полетел один хард из программного массива raid0, к счастью, мне удалось снять дамп с харда с помощью ddrescue.
Во время работы система еще некоторое время поработала, но из-за сбойного харда могла ли система поломать ФС?
Я восставновил массив raid0, сразу же подгрузились LVM тома. Но не оказалось так просто.
Раньше в физическом томе LVM хранилась еще и ZFS, потом я ее снес и добавил места к btrfs.
Сейчас же я снял дамп с LVM раздела с btrfs (/dev/mapper/lvm-root).
Естесно, монтировать не получается даже в ро:
mount lvm dir:
mount: unknown filesystem type 'zfs_member'
Вообще непонятно, откуда тут zfs появилась?
Ладно, пробуем btrfs restore lvm dir:
parent transid verify failed on 341868544 wanted 66322 found 65220
parent transid verify failed on 341868544 wanted 66322 found 65220
parent transid verify failed on 341868544 wanted 66322 found 65220
parent transid verify failed on 341868544 wanted 66322 found 65220
Ignoring transid failure
Couldn't setup extent tree
Couldn't setup device tree
Could not open root, trying backup super
parent transid verify failed on 336117760 wanted 66320 found 66323
parent transid verify failed on 336117760 wanted 66320 found 66323
parent transid verify failed on 336117760 wanted 66320 found 66323
parent transid verify failed on 336117760 wanted 66320 found 66323
Ignoring transid failure
leaf parent key incorrect 336117760
Couldn't setup extent tree
parent transid verify failed on 336117760 wanted 66320 found 66323
Ignoring transid failure
leaf parent key incorrect 336117760
Couldn't setup device tree
Could not open root, trying backup super
Superblock bytenr is larger than device size
Could not open root, trying backup super

Пробуем btrfs-find-root lvm:
parent transid verify failed on 341868544 wanted 66322 found 65220
parent transid verify failed on 341868544 wanted 66322 found 65220
parent transid verify failed on 341868544 wanted 66322 found 65220
parent transid verify failed on 341868544 wanted 66322 found 65220
Ignoring transid failure
Couldn't setup extent tree
Couldn't setup device tree
Superblock thinks the generation is 66322
Superblock thinks the level is 1
Well block 335085568(gen: 66323 level: 1) seems good, but generation/level doesn't match, want gen: 66322 level: 1
Well block 342491136(gen: 66322 level: 0) seems good, but generation/level doesn't match, want gen: 66322 level: 1
Well block 340180992(gen: 66321 level: 0) seems good, but generation/level doesn't match, want gen: 66322 level: 1
Well block 336003072(gen: 66320 level: 1) seems good, but generation/level doesn't match, want gen: 66322 level: 1
Well block 327778304(gen: 66319 level: 1) seems good, but generation/level doesn't match, want gen: 66322 level: 1
Well block 294731776(gen: 66303 level: 1) seems good, but generation/level doesn't match, want gen: 66322 level: 1
Well block 268271616(gen: 66302 level: 1) seems good, but generation/level doesn't match, want gen: 66322 level: 1
Well block 257458176(gen: 66300 level: 1) seems good, but generation/level doesn't match, want gen: 66322 level: 1
Well block 212287488(gen: 66280 level: 1) seems good, but generation/level doesn't match, want gen: 66322 level: 1
Well block 201048064(gen: 66275 level: 1) seems good, but generation/level doesn't match, want gen: 66322 level: 1
и куча бла-бла бла

так, пробуем btrfs restore -t 335085568 lvm dir:
parent transid verify failed on 335085568 wanted 66322 found 66323
parent transid verify failed on 335085568 wanted 66322 found 66323
parent transid verify failed on 335085568 wanted 66322 found 66323
parent transid verify failed on 335085568 wanted 66322 found 66323
Ignoring transid failure
parent transid verify failed on 333627392 wanted 66323 found 66321
parent transid verify failed on 333627392 wanted 66323 found 66321
parent transid verify failed on 333627392 wanted 66323 found 66321
parent transid verify failed on 333627392 wanted 66323 found 66321
Ignoring transid failure
parent transid verify failed on 334643200 wanted 66323 found 66320
parent transid verify failed on 334643200 wanted 66323 found 66320
parent transid verify failed on 334643200 wanted 66323 found 66320
parent transid verify failed on 334643200 wanted 66323 found 66320
Ignoring transid failure
Error searching -1

и меня посылают куда подальше, но пробуем другой блок:
btrfs restore -t 27404550144 lvm dir
parent transid verify failed on 27404550144 wanted 66322 found 66204
parent transid verify failed on 27404550144 wanted 66322 found 66204
parent transid verify failed on 27404550144 wanted 66322 found 66204
parent transid verify failed on 27404550144 wanted 66322 found 66204
Ignoring transid failure
failed to inflate: -3
Error copying data for recu/home/su/.cache/opera/Cache/index-dir/the-real-index
Error searching recu/home/su/.cache/opera/Cache/index-dir/the-real-index
Error searching recu/home/su/.cache/opera/Cache/index-dir/the-real-index
Error searching recu/home/su/.cache/opera/Cache/index-dir/the-real-index
Error searching recu/home/su/.cache/opera/Cache/index-dir/the-real-index
Error searching recu/home/su/.cache/opera/Cache/index-dir/the-real-index
Error searching recu/home/su/.cache/opera/Cache/index-dir/the-real-index

Кажется, что-то нашлось! и, о чудо!! некоторые файлы он выцепил, но очень мало.
Я так понимаю, чтобы вынуть все файлы, нужно пройтись по всем этим блокам.
Только их огромное кол-во, а я далеко не программист и написать скрипт для меня тяжелая задача.
Подскажите, как быть?
Спасибо!
:)
  • Вопрос задан
  • 905 просмотров
Решения вопроса 1
syxoi
@syxoi Автор вопроса
Вобщем!
Делается восстановление данных с btrfs так:
1) Ищем блок с помощью btrfs-find-root, где, возможно есть данные. Просматриваем его.
2) С помощью btrfs restore -it 27404550144 /dev/sda1 recu-dir восстанавливаем.
Параметр -i (игнорировать ошибки) - обязателен, иначе процесс остановится на ошибке, это мне и помешало.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы