Я использую систему RAID5 BTRFS с тремя дисками на моем сервере Ubuntu 18.04.2.
Один из дисков начал выдавать ошибки, и файловая система постоянно перемонтировалась как доступная только для чтения. Я попытался btrfs scrub
но это не сработало - файловая система была перемонтирована как доступная только для чтения. Пытался zero-log
Вот и захотелось заменить неисправный привод. Я читал, что можно btrfs add
новый диск, а затем удалите другой из массива вместо использования btrfs replace
, который, по-видимому, имел некоторые проблемы.
Я попробовал это, но получил ошибки. Каждый раз, когда я пытался бежать btrfs device delete <device>
файловая система перемонтирована как RO. То же самое, когда я пытался извлечь диск, даже не отключая его btrfs device delete missing
. Без изменений. РО.
Я смонтировал систему с -o usebackuproot
и -o degraded
.
Я выполнил восстановление фрагментов, но система отключилась. Пробовал несколько раз, так как теперь я больше не мог монтировать массив. Однако я все же закончил работу после того, как не запустил его с неисправным диском. Но восстановление фрагмента не удалось, и теперь я даже не могу смонтировать RAID.
При монтаже не выходных состояний can't read superblock on <device>
, но btrfs rescue super-recover
утверждает, что All supers are valid, no need to recover
.
При попытке монтировать состояния вывода not dmesg.
[54605.499604] BTRFS info (device dm-7): bdev /dev/mapper/luks-* errs: wr 29664, rd 30074, flush 32, corrupt 0, gen 31
[54605.525654] BTRFS error (device dm-7): parent transid verify failed on 38977536 wanted 82072 found 82114
[54605.526827] BTRFS error (device dm-7): parent transid verify failed on 38977536 wanted 82072 found 82114
[54605.526847] BTRFS warning (device dm-7): failed to read fs tree: -5
[54605.553948] BTRFS error (device dm-7): open_ctree failed
Восстановление работает после повторного подключения неисправного диска с помощью:
sudo btrfs restore -u 2 -vvv -ixm /dev/mapper/luks-* /mnt/pnt
У меня есть снимки одного конкретного каталога, наиболее важного - отказавшего RAID-массива. У меня также есть резервное копирование (я думаю) всего на другой диск.
Я почти в том месте, где я сделаю btrfs check --repair
. Это когда я делаю несколько пробных прогонов:
$ sudo btrfs check /dev/mapper/luks-*
parent transid verify failed on 38813696 wanted 82115 found 82116
parent transid verify failed on 38813696 wanted 82115 found 82116
checksum verify failed on 38813696 found 4E67B99A wanted AA84042C
parent transid verify failed on 38813696 wanted 82115 found 82116
Ignoring transid failure
Checking filesystem on /dev/mapper/luks-*
UUID: *
Error: could not find extent items for root 258
ERROR: failed to repair root items: No such file or directory
$ sudo btrfs check --check-data-csum /dev/mapper/luks-*
parent transid verify failed on 38813696 wanted 82115 found 82116
parent transid verify failed on 38813696 wanted 82115 found 82116
checksum verify failed on 38813696 found 4E67B99A wanted AA84042C
parent transid verify failed on 38813696 wanted 82115 found 82116
Ignoring transid failure
Checking filesystem on /dev/mapper/luks-*
UUID: *
Error: could not find extent items for root 258
ERROR: failed to repair root items: No such file or directory
$ sudo btrfs check --init-extent-tree /dev/mapper/luks-*
Checking filesystem on /dev/mapper/luks-*
UUID: *
Creating a new extent tree
Failed to find [38879232, 168, 16384]
btrfs unable to find ref byte nr 38895616 parent 0 root 1 owner 1 offset 0
Failed to find [38879232, 168, 16384]
btrfs unable to find ref byte nr 38912000 parent 0 root 1 owner 0 offset 1
parent transid verify failed on 38944768 wanted 82115 found 82116
Ignoring transid failure
checking extents
parent transid verify failed on 38977536 wanted 82072 found 82114
Ignoring transid failure
leaf parent key incorrect 38977536
bad block 38977536
ERROR: errors found in extent allocation tree or chunk allocation
checking free space cache
cache and super generation don't match, space cache will be invalidated
checking fs roots
root 5 missing its root dir, recreating
Failed to find [39043072, 168, 16384]
btrfs unable to find ref byte nr 1792131072 parent 0 root 4 owner 1 offset 0
Failed to find [39043072, 168, 16384]
btrfs unable to find ref byte nr 39878656 parent 0 root 4 owner 0 offset 1
Failed to find [22020096, 168, 16384]
btrfs unable to find ref byte nr 22036480 parent 0 root 3 owner 0 offset 1
leaf free space ret -21995796, leaf data size 16283, used 22012079 nritems 50
leaf free space ret -21995796, leaf data size 16283, used 22012079 nritems 50
leaf free space incorrect 22020096 -21995796
extent-tree.c:1915: do_chunk_alloc: BUG_ON `ret` triggered, value -1
btrfs(+0x1f1e5)[0x563d259ea1e5]
btrfs(+0x1f255)[0x563d259ea255]
btrfs(+0x1f268)[0x563d259ea268]
btrfs(+0x22cea)[0x563d259edcea]
btrfs(btrfs_reserve_extent+0xf9)[0x563d259ede44]
btrfs(btrfs_alloc_free_block+0x5e)[0x563d259ee5df]
btrfs(__btrfs_cow_block+0xfe)[0x563d259e2c3c]
btrfs(btrfs_cow_block+0xc5)[0x563d259e31e1]
btrfs(btrfs_search_slot+0xfa)[0x563d259e5095]
btrfs(btrfs_insert_empty_items+0x82)[0x563d259e62cf]
btrfs(btrfs_insert_item+0x64)[0x563d259e6600]
btrfs(btrfs_insert_inode+0x37)[0x563d259f3c89]
btrfs(btrfs_make_root_dir+0xb4)[0x563d259f9de3]
btrfs(+0x15c39)[0x563d259e0c39]
btrfs(cmd_check+0x19fb)[0x563d25a1efe2]
btrfs(main+0x143)[0x563d259e1c87]
Aborted
Есть идеи, что делать? Я попробую еще одно восстановление фрагментов с подключенным неисправным диском и посмотрю, живы ли на этот раз данные сервера. Если нужно, у меня есть журнал восстановления фрагментов.