Abrufen von Dateien aus XFS mit einer Blockgröße von 64 KB

9

Ich war auf der Mission, Dateien von einem meiner 2 perfekt funktionierenden, nicht beschädigten, nicht verschlüsselten NAS-Laufwerke wiederherzustellen, die sich früher in RAID 1 befanden. Das NAS war Patriot Javelin S4, wie ich aus meinen Recherchen herausgefunden habe ) verwendet Promise Fasttrack Fake Raid Controller.

Informationen hierzu sind sehr knapp, daher gibt es für Googler in der gleichen Situation einige Fakten zu diesem NAS:

  • RAID-Controller: Promise FastTrack (FakeRaid)
  • Volumensystem: LVM2
  • Dateisystem: XFS mit einer Blockgröße von 64 KB (65536 Byte)
  • Bogen: 800 MHz AMCC PowerPC-Prozessor, 256 MB RAM (dank Matthews Forschung)

Ich hatte dabei nur Windows 10- und MacOS-Computer und fand keine Software, die XFS in LVM2-Volume mounten kann (mit einer Ausnahme, mehr dazu weiter unten). Ich musste mein altes Netbook Acer Aspire One herausnehmen und Puppy Linux darauf installieren (speziell LXPup-Geschmack).

Unter Puppy Linux gelang es mir, dieses Dateisystem mit einem Tool namens zu mounten dmraid. Dieses Tool bietet die Möglichkeit, ein PDF-Volume zu mounten. Dies ist die ID für Promise FastTrack. Nachdem ich es geschafft hatte, durch einige Rahmen zu springen, die es montierten, erhielt ich Zugriff auf das eigentliche XFS-Dateisystem, und zu meiner Bestürzung stellte sich heraus, dass es eine Blockgröße von 64 KB hatte.

Hier habe ich angefangen, Dinge wie "xfs 64kb Blockgröße lesen" zu googeln und nichts zu erreichen. Nur ein paar Antworten, die besagen: "Linux kann keine Blockgrößen lesen, die größer als 4 KB sind, es sei denn, Sie patchen den Kernel." Ich habe keine Ahnung, wie ich den Kernel patchen soll, und ich bin verblüfft, dass es keine Emulation gibt, die dies zulässt.

Ich habe eine Ausnahme unter Apps erwähnt, die diese Partition unter Win / Mac nicht lesen können. Diese Ausnahme war ufsexplorer. Es ist eine 100-Dollar-App, die mir die Dateien nahtlos zeigen konnte. Ich habe ein paar Dateien kopiert, um zu beweisen, dass es funktioniert, aber die Testversion erlaubt nur das Kopieren winziger Dateien.

Ich weigere mich zu glauben, dass es kein kostenloses Open-Source-Tool gibt, das so komplex ist, dass ich 64kb xfs nicht lesen kann.

Meine Frage ist: Kennt jemand ein solches Werkzeug? Alle spezifischen Anweisungen zum Abrufen der Daten mit einem oder mehreren Tools, Kernel-Patches oder etwas anderem (kostenlos) sind sehr willkommen.

Noch ein Punkt: Ich würde es sehr vorziehen, keine lokalen Images dieser Laufwerke erstellen zu müssen (es sei denn, dies ist der einzige Weg). Immerhin sind es 2 TB Daten, ich habe möglicherweise nicht so viel Speicherplatz.

PS Wenn es ein bekanntes Linux gibt, das ich auf meinem Acer installieren kann und das 64 KB xfs lesen kann, ist dies auch eine praktikable Lösung.

Update 1 : Ich habe gerade von https://www.cgsecurity.org/wiki/TestDisk erfahren . Könnte einen Versuch wert sein. Ich melde mich wieder, sobald ich Zeit hatte, es zu versuchen.

Update 2 : TestDisk scheint das Vorhandensein einer XFS-Partition zu erkennen, aber ich bin mir nicht sicher, wie ich dort vorgehen soll. Ich sehe keine Möglichkeit, eine Datei zu extrahieren, deshalb habe ich sie vorerst aufgegeben und den Qemu-Ansatz in Matthews Antwort ausprobiert.

Max Chernyak
quelle
Ich sehe zwei Lösungen, erstelle deinen eigenen benutzerdefinierten Kernel oder erstelle ein Image mit deiner xfs-Partition und versuche es unter Windows von fs-driver.org
Alexander
@ AlexanderT Hallo, danke für die Antwort. Irgendwelche Links zum benutzerdefinierten Kernel? Gibt es vielleicht auch eine Möglichkeit, das Laufwerk in das Laufwerk meines Mac zu klonen, während das Dateisystem im laufenden Betrieb konvertiert wird? Und um es klar zu sagen: Ich habe das NAS-Laufwerk über SATA -> USB-Konverter angeschlossen, sodass ich es direkt an Windows oder Mac anschließen kann, ohne ein Image zu erstellen.
Max Chernyak
Versuchen Sie herauszufinden, ob xfsdump hilft.
Marsianer
> Es stellte sich heraus, dass es eine Blockgröße von 64 KB hatte.
Erläutern
1
Aha. Nun, das, was ich tun würde, um in Ihren Schuhen zu sein, ist das Schreiben an die entsprechende Mailingliste
poige

Antworten:

8

Ich habe ein bisschen nach Ihrem Problem gesucht. Nicht einfach, sieht aber machbar aus.

Der Bereich, in dem Sie Code brechen, ist folgender (nun, in neueren Kerneln): 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         }

Grundsätzlich muss die XFS-Blockgröße mindestens der Seitengröße des Systems entsprechen.

Dies bedeutet zwei Dinge.

  1. Dies ist eine Problemumgehung für einen Fehler, über den bisher nichts bekannt war.
  2. Die Seitengröße des Systems betrug ursprünglich 64 KB.

Ich habe einen wirklich alten Kernel (EL4) überprüft und diese Einschränkung war immer noch vorhanden. Dies bedeutet, dass es grundsätzlich nicht möglich ist, das zu tun, was Sie auf Ihrer Architektur (x86) tun möchten.

Nachdem Sie den Namen des NAS angegeben haben, habe ich gegoogelt und Folgendes entdeckt: http://www.techwarelabs.com/patriot-javelin-s4-network-attached-storage/2/

Dies bedeutet, dass eine PPC-CPU verwendet wird.

Die Hardware des Javelin ist mehr als in der Lage, zusätzliche Rollen zu übernehmen. Es handelt sich im Wesentlichen um ein eingebettetes Linux-System mit einem 800-MHz-AMCC-PowerPC-Prozessor und 256 MB RAM.

Auf PowerPC können Kernel so erstellt werden, dass sie entweder 64.000 Seiten oder 4.000 Seiten verwenden. Dies würde erklären, warum der Block 64 KB groß ist und warum Sie das Dateisystem nicht auf Ihrem Computer ausführen können, auf dem es zuvor auf einem eigenen NAS funktioniert hat.

Wenn Sie versuchen möchten, das Dateisystem zu öffnen - Ich denke, Ihre beste Option ist es, eine Instanz einer virtuellen Maschine in einem Hypervisor mit PPC64LE auszuführen (ich denke, das ist die eigentliche Architektur dieser CPU). Fedora erstellt ihr PPC64LE mit 64.000 Seiten.

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

Sie können dazu qemu verwenden. Dieser Typ scheint einige (nicht getestete) Anweisungen zu geben, wie Sie dies tun würden.

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

Legen Sie von dort aus die Festplatte (n) direkt in der VM frei und führen Sie Ihre normale dmraid / lvm / mount aus, um Zugriff auf das Laufwerk zu erhalten.

Matthew Ife
quelle
Ich werde berichten, sobald ich Zeit hatte, mich mit dem Qemu-Ansatz zu befassen. Sieht sehr hoffnungsvoll aus, schätzen Sie die Zeit, die Sie in diesen Matthäus gesteckt haben.
Max Chernyak
Momentan versuche ich zu rennen virt-builder fedora-25 --arch ppc64le -o fedora-25-ppc64le.img. Ich bin auf Puppy Linux und bekomme "Supermin: konnte den von diesem System oder der Distribution verwendeten Paketmanager nicht erkennen."
Max Chernyak
Verwenden Sie dazu eine Fedora-Distribution.
Matthew Ife
Ich hatte noch keine Chance, diesen Versuch zu beenden, aber ich gebe dir das Kopfgeld. Ich hoffe, ich kann noch weitermachen, während ich darauf hinarbeite.
Max Chernyak
@hakunin Ich konnte ein 64-KB-xfs-Dateisystem in einer ppc64le-Architektur sowohl formatieren als auch mounten, wie ich es Ihnen Anfang dieser Woche vorgeschlagen habe, damit ich weiß, dass dies funktionieren wird.
Matthew Ife