Pobieranie plików z XFS o rozmiarze bloku 64kb

9

Miałem misję odzyskania plików z jednego z moich 2 doskonale działających, nieuszkodzonych, nieszyfrowanych dysków NAS, które były w RAID 1. NAS był Patriot Javelin S4, który (jak dowiedziałem się z moich badań ) używa fałszywego kontrolera RAID firmy Promise Fasttrack.

Informacje na ten temat są bardzo ograniczone, więc dla googlersów w tej samej sytuacji oto kilka faktów na temat tego NAS:

  • Kontroler RAID: Promise FastTrack (FakeRaid)
  • System głośności: LVM2
  • System plików: XFS o rozmiarze bloku 64kb (65536 bajtów)
  • Arch: procesor PowerPC 800 MHz AMCC, 256 MB pamięci RAM (dzięki badaniom Matthew)

Miałem przy tym tylko komputer z systemem Windows 10 i MacOS i nie znalazłem żadnego oprogramowania zdolnego do zamontowania XFS w woluminie LVM2 (z jednym wyjątkiem, więcej o tym poniżej). Musiałem wyjąć mojego starego netbooka Acer Aspire One i zainstalować na nim Linuksa Puppy (w szczególności smak LXPUP).

Na Linux Linuksie udało mi się zamontować ten system plików za pomocą narzędzia o nazwie dmraid. To narzędzie ma sposób montowania wolumenu pdc, który jest jego identyfikatorem dla Promise FastTrack. Gdy udało mi się przeskoczyć przez kilka obręczy, które go zamontowały, uzyskałem dostęp do rzeczywistego systemu plików XFS i ku mojemu rozczarowaniu okazało się, że ma rozmiar bloku 64 kb.

W tym miejscu zacząłem googlować takie rzeczy, jak „odczytać rozmiar bloku 64 kb xfs” i nigdzie się nie dostać. Tylko kilka odpowiedzi, które mówią: „linux nie może odczytać bloków większych niż 4kb, chyba że załatałeś jądro”. Nie mam pojęcia, jak załatać jądro i jestem zaskoczony, że nie ma na to żadnej emulacji.

Wspomniałem o 1 wyjątku wśród aplikacji, które nie mogą odczytać tej partycji na Win / Mac. Tym wyjątkiem był ufsexplorer. Jest to aplikacja za 100 USD, która bez problemu pokazała mi pliki. Skopiowałem kilka plików, udowadniając, że to działa, ale wersja próbna pozwala tylko na kopiowanie małych plików.

Nie chcę wierzyć, że nie ma darmowego narzędzia o otwartym kodzie źródłowym o dowolnym poziomie złożoności, które nie pomogłoby mi w odczytaniu xfs 64kb.

Moje pytanie brzmi: czy ktoś wie o takim narzędziu? Wszelkie szczegółowe instrukcje dotyczące uzyskiwania danych za pomocą jednego lub więcej narzędzi, łatania jądra lub czegoś innego (za darmo) są bardzo mile widziane.

Jeszcze jedna uwaga: zdecydowanie wolałbym nie tworzyć lokalnych obrazów tych dysków (chyba że to jedyny sposób). W końcu to 2 TB danych, może nie mam tak dużo miejsca.

PS Jeśli istnieje znany linux, który mogę zainstalować na moim Acer, który może odczytać 64kb xfs, to również jest realne rozwiązanie.

Aktualizacja 1 : Właśnie dowiedziałem się o https://www.cgsecurity.org/wiki/TestDisk . Może warto spróbować. Zgłosi się, gdy będę miał czas, aby spróbować.

Aktualizacja 2 : TestDisk wydaje się rozpoznawać obecność partycji XFS, ale nie jestem pewien, jak tam przejść. Nie widzę sposobu na wyodrębnienie pliku, więc po prostu porzuciłem go i wypróbowałem podejście qemu w odpowiedzi Matthew.

Max Chernyak
źródło
Widzę dwa rozwiązania, zbuduj własne niestandardowe jądro lub zrób obrazek z partycją xfs i spróbuj otworzyć go pod Windows przez fs-driver.org
Alexander Tolkachev
@AlexanderT Cześć, dziękuję za odpowiedź. Jakieś linki o niestandardowym jądrze? Ponadto, czy może istnieje sposób sklonowania dysku na dysk mojego komputera Mac podczas konwersji systemu plików w locie? I dla jasności: mam napęd NAS podłączony przez konwerter SATA -> USB, dzięki czemu mogę podłączyć go bezpośrednio do systemu Windows lub Mac bez robienia zdjęcia.
Max Chernyak
Spróbuj sprawdzić, czy xfsdump pomaga.
Marsjan
> okazało się, że ma rozmiar bloku 64kb.
Opracujcie, jak doszliście
1
Widzę. Cóż, chciałbym być w twoich butach, pisząc na odpowiednią listę mailową: xfs.org/index.php/XFS_email_list_and_archives
poige

Odpowiedzi:

8

Zrobiłem trochę badań nad twoim problemem. Niełatwe, ale wygląda na wykonalne.

Obszar łamania kodu jest następujący (cóż, w nowszych jądrach): 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         }

Zasadniczo wymaga, aby rozmiar bloku XFS był co najmniej równy rozmiarowi strony systemowej.

To oznacza dwie rzeczy.

  1. Jest to obejście błędu wcześniej nieznanego.
  2. Rozmiar strony systemowej pierwotnie wynosił 64 KB.

Poszedłem i sprawdziłem naprawdę stare jądro (EL4) i powyższe ograniczenie nadal tam było. Oznacza to, że zasadniczo nie jest możliwe robienie tego, co chcesz robić na swojej architekturze (x86).

Biorąc pod uwagę nazwę NAS, zrobiłem trochę google i odkryłem to: http://www.techwarelabs.com/patriot-javelin-s4-network-attached-storage/2/

Co oznacza, że ​​używa procesora PPC.

Sprzęt Javelin jest w stanie obsłużyć dodatkowe role. Zasadniczo jest to wbudowany system Linux z procesorem AMCC PowerPC 800 MHz i 256 MB pamięci RAM.

Rzeczywiście, w jądrach PowerPC można zbudować tak, aby korzystało z 64 tysięcy stron lub 4 tysięcy stron. To by wyjaśniało, dlaczego blok ma 64k, a także dlaczego nie możesz uruchomić systemu plików na swoim komputerze, gdzie wcześniej działał na swoim własnym NAS.

Jeśli chcesz spróbować otworzyć system plików - myślę, że najlepszą opcją jest uruchomienie instancji maszyny wirtualnej w hiperwizorze za pomocą PPC64LE (myślę, że taka jest rzeczywista architektura tego procesora), Fedora zbuduje PPC64LE z 64k stronami.

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

Możesz to zrobić za pomocą qemu. Ten facet wydaje jakieś (nie przetestowane) instrukcje, jak to zrobić.

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

Stamtąd bezpośrednio ujawnij dyski w maszynie wirtualnej i wykonaj normalne polecenie dmraid / lvm / mount, aby uzyskać dostęp do dysku.

Matthew Ife
źródło
Zamelduję się, jak tylko będę miał czas na przyjrzenie się podejściu qemu. Wygląda bardzo obiecująco, doceń czas poświęcony temu Mateuszowi.
Max Chernyak
Obecnie jestem zdumiony próbując uciec virt-builder fedora-25 --arch ppc64le -o fedora-25-ppc64le.img. Korzystam z linuksowego szczeniaka i otrzymuję komunikat „supermin: nie mogłem wykryć menedżera pakietów używanego przez ten system lub dystrybucję”.
Max Chernyak
Aby to zrobić, użyj dystrybucji fedora.
Matthew Ife
Nie miałem jeszcze okazji dokończyć tej próby, ale daję ci nagrodę. Mam nadzieję, że nadal będę w stanie to kontynuować, pracując nad tym.
Max Chernyak
@hakunin Byłem w stanie zarówno sformatować, jak i zamontować system plików xfs 64kb w architekturze ppc64le, jak to sugerowałem wcześniej w tym tygodniu, więc wiem, że to zadziała.
Matthew Ife