У меня была задача восстановить файлы с одного из двух моих отлично работающих, не поврежденных, незашифрованных дисков 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 в ответе Мэтью.
Ответы:
Я провел небольшое исследование вашей проблемы. Не просто, но выглядит выполнимо.
Область нарушения кода - это (ну, в более новых ядрах):
fs/xfs/libxfs/xfs_sb.c
Это в основном требует, чтобы размер блока XFS был как минимум равен размеру системной страницы.
Это означает две вещи.
Я пошел и проверил действительно старое ядро (EL4), и указанное выше ограничение все еще было. Это означает, что принципиально невозможно сделать то, что вы хотите сделать в своей архитектуре (x86).
Учитывая то, что вы указали имя NAS, я немного погуглил и обнаружил это: http://www.techwarelabs.com/patriot-javelin-s4-network-attached-storage/2/
Что подразумевает, что он использует процессор PPC.
Действительно, ядра PowerPC могут быть построены так, чтобы использовать страницы размером 64 КБ или 4 КБ. Это объясняет, почему блок имеет размер 64 КБ, а также почему вы не можете запустить файловую систему на своем компьютере, где она раньше работала на собственном NAS.
Если вы хотите попытаться открыть файловую систему - я думаю, что ваш лучший вариант - запустить экземпляр виртуальной машины в гипервизоре с использованием PPC64LE (я думаю, это реальная архитектура этого процессора), Fedora создаст свой PPC64LE с 64k-страницами.
https://alt.fedoraproject.org/alt/
Вы можете использовать QEMU, чтобы сделать это. Этот парень, кажется, дает некоторые (не проверенные) инструкции о том, как вы будете делать это.
https://rwmj.wordpress.com/tag/ppc64le/
Оттуда непосредственно выставьте диск (и) в виртуальную машину и выполните обычный dmraid / lvm / mount, чтобы получить доступ к диску.
источник
virt-builder fedora-25 --arch ppc64le -o fedora-25-ppc64le.img
. Я нахожусь на щенке linux и получаю "supermin: не удалось обнаружить менеджер пакетов, используемый этой системой или дистрибутивом".