LINUX.ORG.RU

Восстановление раздела с btrfs

 


0

0

Есть флешка на 8Гб. На ней было 2 раздела btrfs с установленным линухом. Ковырялся с компьютером восстанавливая винду и использовал эту флешку. Не уверен что произошло но вроде как винда форматнула оба раздела. Теперь на флешке видно два раздела, первый видится как fat32 с именем Part00, второй как неизвестная фс.

Второй раздел монтируется с помощью

mount -t btrfs -o recovery,ro /dev/sdd2 /mnt/1/
И информацию вытащить с него удалось.

Дальнейшие манипуляции вида

mount -t btrfs -o recovery /dev/sdd2 /mnt/1/
btrfs check -—repair /dev/sdd2
btrfs scrub start -Bf /dev/sdd2
Восстановили 2й раздел

С первым разделом такой трюк не проходит.

Пробовал сканировать тестдиском, он предлагает восстановить 2й раздел как fat32 под именем Part01

Посоветуйте варианты восстановления 1го раздела.

★★★★★

btrfs inspect-internal dump-super -a /dev/sdd1


если есть хоть один суперблок то можно из него восстановить основной через

btrfs rescue super-recover

и попытаться смонтировать
Если не монтируется то вытащить файлы через
btrfs restore

feanor ★★★
()
Ответ на: комментарий от feanor

Спасибо за помощь похожее я и пытался найти но не смог.

Но все равно не могу разобраться.

[root@ArchLinux behem0th]# btrfs inspect-internal dump-super -a /dev/sde1            
superblock: bytenr=65536, device=/dev/sde1
---------------------------------------------------------
ERROR: bad magic on superblock on /dev/sde1 at 65536

superblock: bytenr=67108864, device=/dev/sde1
---------------------------------------------------------
csum_type               0 (crc32c)
csum_size               4
csum                    0xc60de5c7 [match]
bytenr                  67108864
flags                   0x1
                        ( WRITTEN )
magic                   _BHRfS_M [match]
fsid                    43ffddc3-7ebe-4ddc-ba65-c18389e00113
label                   arch-live-root
generation              1212
root                    5682053120
sys_array_size          97
chunk_root_generation   433
root_level              0
chunk_root              84017152
chunk_root_level        0
log_root                0
log_root_transid        0
log_root_level          0
total_bytes             4999999488
bytes_used              2324013056
sectorsize              4096
nodesize                16384
leafsize (deprecated)           16384
stripesize              4096
root_dir                6
num_devices             1
compat_flags            0x0
compat_ro_flags         0x0
incompat_flags          0x169
                        ( MIXED_BACKREF |
                          COMPRESS_LZO |
                          BIG_METADATA |
                          EXTENDED_IREF |
                          SKINNY_METADATA )
cache_generation        1212
uuid_tree_generation    1212
dev_item.uuid           4120a190-1007-464b-acb2-708a94b38e55
dev_item.fsid           43ffddc3-7ebe-4ddc-ba65-c18389e00113 [match]
dev_item.type           0
dev_item.total_bytes    4999999488
dev_item.bytes_used     4181581824
dev_item.io_align       4096
dev_item.io_width       4096
dev_item.sector_size    4096
dev_item.devid          1
dev_item.dev_group      0
dev_item.seek_speed     0
dev_item.bandwidth      0
dev_item.generation     0
Как я понял 1й суперблок не читается, второй выглядит рабочим.

Пробую восстановить

[root@ArchLinux behem0th]# btrfs rescue super-recover /dev/sde1
All supers are valid, no need to recover

Но не монтируется

[root@ArchLinux behem0th]# mount -t btrfs -o ro /dev/sde1 /mnt/1/
mount: /mnt/1: wrong fs type, bad option, bad superblock on /dev/sde1, missing codepage or helper program, or other error.

Может проблема не только в самом разделе но и в MBR?

Behem0th ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

Я думал принудительно как то заставить перезаписать 1й суперблок, но в мане нет никаких опций.

super-recover [options] <device>

           Recover bad superblocks from good copies.

           Options

           -y

               assume an answer of yes to all questions.

           -v

               verbose mode.
Behem0th ★★★★★
() автор топика
Ответ на: комментарий от Behem0th
[root@ArchLinux behem0th]# btrfs rescue super-recover -v /dev/sde1
All Devices:
        Device: id = 1, name = /dev/sde1

Before Recovering:
        [All good supers]:
                device name = /dev/sde1
                superblock bytenr = 67108864

        [All bad supers]:

All supers are valid, no need to recover
[root@ArchLinux behem0th]# btrfs rescue super-recover -v /dev/sde2
All Devices:
        Device: id = 1, name = /dev/sde2

Before Recovering:
        [All good supers]:
                device name = /dev/sde2
                superblock bytenr = 65536

                device name = /dev/sde2
                superblock bytenr = 67108864

        [All bad supers]:

All supers are valid, no need to recover

У второго раздела оба суперблока нормальные но несморя на это вот что в parted

(parted) print                                                            
Модель: JetFlash TS8GJFV35 (scsi)
Диск /dev/sde: 8179MB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: msdos
Флаги диска: 

Номер  Начало  Конец   Размер  Тип      Файловая система  Флаги
 1     1049kB  5001MB  5000MB  primary  fat32
 2     5002MB  8179MB  3177MB  primary
(parted)      

Behem0th ★★★★★
() автор топика

Смотнировать раздел со 2м суперблоком не получается.

[root@ArchLinux btrfs_recover]# mount -t btrfs -o sb=67108864 /dev/sde1 /mnt/1/
mount: /mnt/1: wrong fs type, bad option, bad superblock on /dev/sde1, missing codepage or helper program, or other error.

Behem0th ★★★★★
() автор топика
Ответ на: комментарий от Radjah

Первое что сделал это dd`шкой снял образ.

Behem0th ★★★★★
() автор топика

И восстановить тоже не получается, падает восстановив максимум 15Мб.

[root@ArchLinux btrfs_recover]# btrfs restore /dev/sde1 root_live/
No valid Btrfs found on /dev/sde1
Could not open root, trying backup super
*** stack smashing detected ***: <unknown> terminated
Аварийный останов (стек памяти сброшен на диск)

Behem0th ★★★★★
() автор топика
Последнее исправление: Behem0th (всего исправлений: 1)
Ответ на: комментарий от Behem0th

Хм, видимо chunk tree поврежден, без него ничего не восстановить. Можно попопробовать

btrfs rescue chunk-recover

чтобы просканировать весь раздел и восстановить chunk tree.

Немного удивил btrfs rescue super-recover, стоит сохранить образ и завести баг в linux-btrfs списке рассылки.

Можно попробовать старую версию утилиты
btrfs-select-super -s 1

feanor ★★★
()
Последнее исправление: feanor (всего исправлений: 1)
Ответ на: комментарий от feanor
[behem0th@ArchLinux mnt]$ btrfs-select-super -s 1 /dev/sde1
using SB copy 1, bytenr 67108864

После чего раздел стал монтироваться что позволило скопировать оттуда информацию.

Спасибо за помощь.

стоит сохранить образ и завести баг в linux-btrfs списке рассылки.

А где у них багзилла то? А то в список рассылки писать такое вроде.

Behem0th ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

Лучше как раз в список рассылки linux-btrfs@vger.kernel.org. Bugzilla чаще всего равнозначна /dev/null, хотя можно завести баг в багзилле и потом написать об этом в список рассылки. :)

feanor ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.