Получение файлов из XFS с размером блока 64 КБ

Я выполнял задание по восстановлению файлов с одного из моих 2-х отлично работающих, не поврежденных, незашифрованных дисков NAS, которые раньше были в RAID 1. NAS был Patriot Javelin S4, который (как я выяснил из своего исследования) использует поддельный RAID-контроллер Promise Fasttrack.

Информация очень мало, поэтому для гуглеров в такой же ситуации вот некоторые факты об этом NAS:

  • RAID-контроллер: Promise FastTrack (FakeRaid)
  • Система томов: LVM2
  • Файловая система: XFS с размером блока 64 КБ (65536 байтов)
  • Arch: процессор AMCC PowerPC 800 МГц, 256 МБ ОЗУ (благодаря исследованиям Мэтью)

При этом у меня был только компьютер с Windows 10 и MacOS, и я не обнаружил программного обеспечения, способного монтировать XFS в том LVM2 (за одним исключением, подробнее об этом ниже). Мне пришлось вынуть мой старый нетбук Acer Aspire One и установить на него puppy linux (в частности, lxpup).

На puppy linux мне удалось смонтировать эту файловую систему с помощью инструмента под названием dmraid . У этого инструмента есть способ монтировать том pdc, который является его идентификатором для Promise FastTrack. Как только мне удалось прыгнуть через несколько обручей, монтирующих его, я получил доступ к фактической файловой системе XFS, и, к моему ужасу, размер блока оказался 64 КБ.

Именно здесь я начал гуглить такие вещи, как «читать блок xfs 64 КБ» размер" и никуда не денешься. Всего несколько ответов, в которых говорится: «Linux не может читать блоки размером более 4 КБ, если вы не исправите ядро». Я понятия не имею, как исправить ядро, и меня сбивает с толку, что нет какой-либо эмуляции, позволяющей это сделать.

Я упомянул одно исключение среди приложений, которые не могут читать этот раздел на Win / Mac. Этим исключением был ufsexplorer. Это приложение за 100 долларов, оно могло беспрепятственно показывать мне файлы. Я скопировал несколько файлов, доказывающих, что это работает, но пробная версия позволяет копировать только крошечные файлы.

Я отказываюсь верить, что нет бесплатного инструмента с открытым исходным кодом любого уровня сложности, который не мог бы мне помочь прочтите 64kb xfs.

Мой вопрос: знает ли кто-нибудь такой инструмент? Любые конкретные инструкции о том, как получить данные с помощью одного или нескольких инструментов или исправления ядра, или что-то еще (бесплатное) приветствуются.

Еще один момент: я бы очень предпочел не создавать локальные образы этих дисков (если только это не единственный способ). В конце концов, это 2 ТБ данных, у меня может не так много места.

PS Если есть известный Linux, который я могу установить на свой Acer, который может читать 64 КБ xfs, это тоже жизнеспособное решение.

Обновление 1 : Я только что узнал о https://www.cgsecurity.org/wiki/TestDisk . Может, стоит попробовать. Сообщу, как только у меня будет время попробовать.

Обновление 2 : TestDisk, похоже, распознает наличие раздела XFS, но я не уверен, как действовать оттуда. Я не вижу способа извлечь файл, поэтому я просто отказался от него и попробовал подход qemu в ответе Мэтью.

9
задан 6 June 2017 в 11:41
1 ответ

Я немного исследовал вашу проблему. Это непросто, но выглядит выполнимым.

Сфера взлома кода следующая (ну, в новых ядрах): fs / xfs / libxfs / xfs_sb.c

271         /*
272          * Until this is fixed only page-sized or smaller data blocks work.
273          */
274         if (unlikely(sbp->sb_blocksize > PAGE_SIZE)) {
275                 xfs_warn(mp,
276                 "File system with blocksize %d bytes. "
277                 "Only pagesize (%ld) or less will currently work.",
278                                 sbp->sb_blocksize, PAGE_SIZE);
279                 return -ENOSYS;
280         }

Это в основном требует, чтобы размер блока XFS был как минимум равен размеру страницы системы.

Это означает две вещи.

  1. Это обходной путь для ошибка, о которой ранее не было известно.
  2. Первоначально размер системной страницы составлял 64 КБ.

Я пошел и проверил действительно старое ядро ​​(EL4), и это ограничение, указанное выше, все еще сохранялось. Это означает, что в принципе невозможно делать то, что вы хотите, на вашей архитектуре (x86).

Учитывая, что вы указали имя NAS, я немного погуглил и обнаружил следующее: http://www.techwarelabs.com/patriot-javelin-s4-network-attached-storage/2/

Это означает, что он использует ЦП PPC.

Аппаратное обеспечение Javelin более чем способно обработки дополнительные роли. По сути, это встроенная система Linux с Процессор AMCC PowerPC 800 МГц и 256 МБ ОЗУ.

Действительно, ядра PowerPC могут быть построены для использования либо страниц 64k, либо страниц 4k. Это объясняет, почему размер блока составляет 64 КБ, а также почему вы не можете запустить файловую систему на своем компьютере, где раньше она работала на собственном NAS.

Если вы хотите попытаться открыть файловую систему - я думаю, ваш лучший вариант - запустить экземпляр виртуальной машины в гипервизоре, используя PPC64LE (я думаю, что это реальная архитектура этого процессора), Fedora построит свой PPC64LE с 64 КБ страниц.

https://alt.fedoraproject.org/alt/

Вы можете используйте для этого qemu. Этот парень, кажется, дает некоторые (не проверенные) инструкции о том, как это сделать.

https://rwmj.wordpress.com/tag/ppc64le/

Оттуда напрямую откройте диск (ы) ) в виртуальной машине и выполните обычную команду dmraid / lvm / mount, чтобы получить доступ к диску.

8
ответ дан 2 December 2019 в 22:33

Теги

Похожие вопросы