BTRFS error: parent transid verify failed — Восстановление Btrfs на Linux
Архитектура ошибки и симптомы сбоя
Критическая ошибка «BTRFS error (device sda1): parent transid verify failed» возникает в файловой системе Btrfs при рассинхронизации поколений (Generation ID / Transaction ID) в структуре Copy-on-Write деревьев (B-trees). Ошибка означает, что родительский узел дерева ссылается на дочерний блок с номером транзакции X, но физически на диске записан блок с номером Y. Это происходит при отключении питания во время сброса кэша или сбоях контроллера диска.
Диагностическая таблица параметров сбоя
| Параметр | Значение | Инженерный смысл сбоя |
|---|---|---|
| parent transid verify failed | B-tree Generation Mismatch | Нарушение ссылочной целостности между поколениями узлов B-дерева Btrfs. |
| wanted X, bytenr Y | TransID Details | Ожидаемый номер транзакции X не совпадает с прочитанным на блоке Y. |
| Impact | Mount Failure / Read-Only | Невозможность смонтировать файловую систему в стандартном режиме. |
Пошаговое дерево решений и сценарии траблшутинга
Сценарий 1: Монтирование с использованием резервных корней (Backup Roots)
Btrfs сохраняет предыдущие стабильные деревья корней (Generation Roots). Смонтируйте раздел с опцией usebackuproot:
# Монтирование со старым рабочим корнем дерева:
sudo mount -o ro,usebackuproot /dev/sda1 /mnt
# Если монтирование прошло успешно, выполните экстренный бэкап данных:
rsync -avP /mnt/ /backup_disk/Сценарий 2: Аварийное восстановление файлов через btrfs restore
Если ФС не монтируется ни с какими опциями, скопируйте файлы напрямую без монтирования:
# Извлечение файлов на внешний исправный диск:
sudo btrfs restore -v -D /dev/sda1 /backup_disk/recovered_files/Сценарий 3: Ремонт деревьев транзакций через btrfs check
# ВНИМАНИЕ: Используйте флаг --repair только после снятия полного бэкапа (dd/ddrescue)!
sudo btrfs check --repair /dev/sda1ITSTM проводит глубокую реконструкцию метаданных Btrfs/ZFS, сборку поврежденных B-деревьев и спасение корпоративных данных.
Частые вопросы (FAQ)
Почему возникает ошибка parent transid verify failed?
Основная причина — некорректное кэширование записи накопителем (Write-Cache). Если диск сообщил ядру, что данные сброшены на пластины/чипы, но фактически сбросил только метаданные без дочерних узлов, при перезагрузке нарушается дерево transid.
Опасен ли запуск btrfs check --repair?
Да. Если структуры повреждены слишком сильно, алгоритм repair может удалить поврежденные поддеревья вместе с содержащимися в них пользовательскими файлами. Всегда сначала пробуйте btrfs restore.