Назад | Перейти на главную страницу

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

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

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

При этом у меня был только компьютер с 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 долларов, оно могло беспрепятственно показывать мне файлы. Я скопировал несколько файлов, доказывающих, что это работает, но пробная версия позволяет копировать только крошечные файлы.

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

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

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

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

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

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

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

Область кода, которая вас нарушает (ну, в новых ядрах): 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 с 64k страницами.

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

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

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

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