Восстановление ZFS. Поиск удаленного Zvol 4 дня спустя.
Недавно мне довелось столкнуться с задачей, когда клиент случайно удалил важный Zvol, содержащий множество документов пользователей, но его отсутствие заметили, только через на следующий рабочий день + время на ожидание обслуживающего персонала, кода пул активно эксплуатировался (прошло близко к 100 000 транзакций).
Классическое решение с анализом MOS, поиском объектов не увенчалось успехом. Проверка связок UB/MOS также была безрезультатной и фактически отражало лишь последние 20 минут жизни пула. При этом часть связок уже имела явные проблемы неполноты древа из-за перезаписанных блоков с метаданными.
Все осложнялось используемым сжатием LZ4. Коммерческие продукты такие как PC3000Express, UFS Explorer, Klennet Recovery в данной ситуации также ничем не помогли.
Пришлось рассмотреть задачу иначе: написать анализатор объектов ZFS (поиск сжатых и несжатых DMU и Indirect blocks). Собрать информацию с пула и проанализировать осиротевшие метаданные, которых в результате поиска обнаружилось заметно больше, чем через MOS.
Дальнейший метод строился на определении особенностей нужного Zvol, чтобы понять какого рода древо нас ожидает и сколько уровней. Для Zvol с заявленным размером 300ГБ и около 200Гб занятого (фактические в аллокации) и блоке в 64кб нас ожидает структура L3-L2-L1 - L0 (данные).
После того как появилось понимание чего ждать в древе, то был проведен анализ все связок L3-L2 (как приближенная оценка с высокой гранулярностью) чтобы отбросить все то, что не является структурами искомого Zvol.
Дальше выяснилось, что из-за принципа CoW ZFS за 100 000 транзакций уже успела переписать немало. Отдельно целого объекта уже не существует ни в одной копии. Сбор из сотен обрывков в итоге дал результат, что удалось собрать виртуальный диск, который уже содержал около 75-80% живых файлов.
Подробнее я изложил на хабре в публикации «Восстановление данных с ZFS: задача со звёздочкой об удалённом Zvol»
К сожалению там с аудиторией не получилось диалога (он отсутствовал, вероятно сильно специфическая тема). Хотелось бы обсудить с профильным сообществом перспективы развития подобных методов восстановления данных и какие реальные потребности пользователей возникают.