LINUX.ORG.RU

Как подчистить btrfs после repair?

 ,


0

2

Есть старенькая машина 15-летней давности. Недавно я загрузил ее по полной программе. И сразу read-only в btrfs. Проверил память, битая. Заменил память. Запустил btrfs check –repair с флешки (grml 2024.02, версия btrfs 6+)
Куча ошибок исправлена, судя по выводу. Но ошибки остались, естественно, так как не было избыточности данных. Загружаюсь в Mint, система работает, и btrfs больше не переходит в read-only.

Вот результат (btrfs check –force):

(…) Много записей типа
incorrect local backref count on 318316544 parent 11601936384 owner 0 offset 0 found 0 wanted 1 back 0x5591dbf43cf0
backref disk bytenr does not match extent record, bytenr=318316544, ref bytenr=0
backpointer mismatch on [318316544 8192]

(…) Потом много записей типа
backpointer mismatch on [17160978432 4096] ref mismatch on [17160982528 4096] extent item 4, found 3
incorrect local backref count on 17160982528 parent 11427397632 owner 0 offset 0 found 0 wanted 1 back 0x5591ddd48880
backref disk bytenr does not match extent record, bytenr=17160982528, ref bytenr=0

(…) Потом много записей типа
unresolved ref dir 409 index 992 namelen 18 name subscriptions.conf filetype 1 errors 2, no dir index

(…) Результат:
ERROR: errors found in fs roots
found 13489639424 bytes used, error(s) found
total csum bytes: 11854028
total tree bytes: 726679552
total fs tree bytes: 687980544
total extent tree bytes: 23232512
btree space waste bytes: 133227555
file data blocks allocated: 35830775808
referenced 27065204736

Снапшотов btrfs нет. Как подчистить остатки? Потерянные файлы не проблема. Я просто переустановлю все имеющиеся пакеты. И система как новенькая.
Переустанавливать систему с нуля не хочу принципиально.



Последнее исправление: diogjibn (всего исправлений: 4)

Скопировать всё на новую ФС, очевидно. Не вижу смысла пытаться что-то тут «почистить», если нет спортивного интереса.

anonymous
()

Кто тебя теперь просил запускать? Ошибки чексум лечатся скрабом. Скажи спасибо себе или тому дебилу, что советы давал

anonymous
()

Битые метаданные в btrfs практически не лечатся, увы.

Переустанавливать систему с нуля не хочу принципиально.

Ну так и не переустанавливай — заархивируй, пересоздай ФС, разархивируй. Чай не винда.

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

Не ври. Запускаешь:

sudo btrfs scrub start -Bd /

Он ошибки правит, что нельзя исправить, просто файлы удаляешь — все равно битые. А после repair неизвестно что будет

~
❯ sudo btrfs scrub status /
UUID:             83ba9a0a-7858-48f0-b679-618954059b1a
Scrub started:    Sun Oct 27 21:02:14 2024
Status:           running
Duration:         0:00:14
Time left:        0:02:57
ETA:              Sun Oct 27 21:05:25 2024
Total to scrub:   330.97GiB
Bytes scrubbed:   24.14GiB  (7.29%)
Rate:             1.72GiB/s
Error summary:    no errors found
rtxtxtrx ★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)

ну теперь снапшоты хомяка будешь делать, чтобы хранились хотя бы дней 10. там файлы как-то по этому смещение искать надо и удалять, тогда ошибки исчезнут. «умников» не слушай и битые файлы на новую файловую систему не копируй, они поврежденные, их прочитать нельзя, только ты уже никогда не узнаешь какой был битым. если там убит какой фильмец и аудио-файл, то его можно не удалять, он будет с артефактами воспроизводиться… А вот с бинарниками или какими структированными докуменами можно попрощаться

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

Прежде чем обличать во вранье, научился бы отличать битые данные от битых метаданных.

А после repair неизвестно что будет

На всякий случай, я не ТС и check --repair делать ему советовал тоже не я.

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

Нет, это не одно и то же. Во-первых, повреждённые inline extents не приводят к forced RO из-за неконсистентных обратных ссылок и потерявшихся записей в каталогах. Во-вторых, расскажи, пожалуйста, как скраб должен помочь при

Проверил память, битая

?

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

Проверил память, битая

  • Это я убил (с) Джейсон Стетхем

У него большая часть файлов живая. Его все устраивает.

А как найти поврежденные, чтобы их удалить тут написано:

https://wiki.archlinux.org/title/Identify_damaged_files

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

У него большая часть файлов живая. Его все устраивает.

Я что-то говорил про то, сколько у ТС живых или мёртвых файлов? Советую научиться разговаривать с собеседником, а не с голосами в голове.

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

Хорошая идея. В крайнем случае так и сделаю. Данные на ext4. Но она ничем себя не проявила, кроме запуска fsck при загрузке (это я задним числом узнал). А btrfs сразу read-only. Это внушает оптимизм. Интерес скорее спортивный, так как машина для торрентов, ничего критичного.

Сейчас что-то можно сделать при помощи btrfs rescue?

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

Сейчас что-то можно сделать при помощи btrfs rescue?

btrfs rescue вытаскивает файлы, отключая все проверки, которые только можно отключить.

Если ФС монтируется, то rescue не нужен — монтируешь и копируешь файлы (все, что копируются; ФС не даст тебе скопировать мусор). Если не монтируется — то btrfs rescue и вручную проверяешь на мусор.

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

Зависит от того, в каком конкретно месте и как побились деревья. Снапшоты не создают полную копию метаданных (в этом весь смысл).

Но даже если можно, то всё равно 99% пришлось бы копировать файлы и пересоздавать ФС.

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

А что значит «актуальна»?

Она всё ещё есть, всё ещё поддерживается, всё ещё делает то, что должна. Но трогать её руками, по-моему, уже давно неактуально, кроме разве что случая, когда у тебя ОЧЕНЬ много мелких файлов и ты не хочешь, чтобы они все хранились с той же степенью избыточности, что и метаданные.

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

Как я уже сказал, снапшот далеко не факт что поможет при битых метаданных, т. к. снапшоты не создают полную копию метаданных.

Но да, в порядке возрастающей серьёзности — пытаемся откатиться на снапшот, пытаемся примонтировать снапшот (-o subvolid=...) и вытащить из него файлы, делаем btrfs rescue (опционально из этого же снапшота).

Тут нужно предостеречь, что восстановительный тулинг в btrfs, мягко говоря, сосёт. Лучше всего держать где-нибудь текстовый файлик со списком снапшотов и маппингом их имён на внутренние IDшники (т.е. выводом btrfs sub list -a /path/to/filesystem).

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

Огромнейшее спасибо за дельный совет. Все так и сделал + переустановил все имеющиеся пакеты в системе, не глядя. Система работает как часы. ДА ЗДРАВСТВУЕТ BTRFS!

diogjibn
() автор топика