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

9

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

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

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

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

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

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

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

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

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

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

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

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

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

Макс Черняк
источник
Я вижу два решения: собрать собственное ядро ​​или создать образ с помощью раздела xfs и попытаться открыть его под windows. Fs-driver.org
Александр Толкачев,
@AlexanderT Привет, спасибо за ответ. Есть ссылки о кастомном ядре? Кроме того, возможно ли способ клонировать диск в дисковод моего Mac при преобразовании файловой системы на лету? И чтобы быть ясным: у меня есть диск NAS подключен через SATA -> USB конвертер, так что я могу подключить его непосредственно к Windows или Mac, не создавая изображение.
Макс Черняк
Попробуйте и посмотрите, поможет ли xfsdump.
Марсианин
> Оказалось, что размер блока составляет 64 КБ. Уточните, как вы пришли к такому выводу, пожалуйста
poige
1
Понимаю. Что ж, я бы хотел, чтобы вы были на месте, чтобы написать в соответствующий список рассылки: xfs.org/index.php/XFS_email_list_and_archives
poige

Ответы:

8

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

Область нарушения кода - это (ну, в более новых ядрах): 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 могут быть построены так, чтобы использовать страницы размером 64 КБ или 4 КБ. Это объясняет, почему блок имеет размер 64 КБ, а также почему вы не можете запустить файловую систему на своем компьютере, где она раньше работала на собственном NAS.

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

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

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

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

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

Мэтью Ифе
источник
Я доложу, как только у меня будет время изучить подход qemu. Выглядит очень обнадеживающе, цените время, которое вы вложили в этого Мэтью.
Макс Черняк
В настоящее время я пытаюсь бежать virt-builder fedora-25 --arch ppc64le -o fedora-25-ppc64le.img. Я нахожусь на щенке linux и получаю "supermin: не удалось обнаружить менеджер пакетов, используемый этой системой или дистрибутивом".
Макс Черняк
Используйте дистрибутив Fedora, чтобы сделать это.
Мэтью Ифе
У меня еще не было возможности закончить эту попытку, но я даю вам награду. Я надеюсь, что я все еще могу следить за тем, как я работаю над этим.
Макс Черняк
@hakunin Я смог как отформатировать, так и смонтировать файловую систему xfs 64 КБ в архитектуре ppc64le, как я и предлагал вам в начале этой недели, так что я знаю, что это будет работать.
Мэтью Ифе