64KBブロックサイズでXFSからファイルを取得する


9

私は、RAID 1にあった、完全に機能し、破損しておらず、暗号化されていない2つのNASドライブの1つからファイルを回復する使命を帯びていました。NASはPatriot Javelin S4でした(私の調査でわかったように)Promise FasttrackフェイクRAIDコントローラを使用します。

これに関する情報は非常に少ないため、同じ状況のグーグルにとって、このNASに関するいくつかの事実があります。

  • RAIDコントローラー:Promise FastTrack(FakeRaid)
  • ボリュームシステム:LVM2
  • ファイルシステム:64kbブロックサイズ(65536バイト)のXFS
  • Arch:800MHz AMCC PowerPCプロセッサ、256MB RAM(Matthewの研究に感謝)

これを行ったとき、私はWindows 10とMacOSコンピュータしか持っていませんでした。LVM2ボリュームにXFSをマウントできるソフトウェアは見つかりませんでした(1つを例外として、以下で詳しく説明します)。私は古いネットブックAcer Aspire Oneを取り出し、それにpuppy linux(具体的にはlxpupフレーバー)をインストールする必要がありました。

子犬のLinuxでは、と呼ばれるツールを使用してこのファイルシステムをマウントできましたdmraid。このツールには、Promise FastTrackのIDであるpdcボリュームをマウントする方法があります。なんとかそれをマウントしているいくつかのフープを飛び越えることができたら、私は実際のXFSファイルシステムにアクセスできるようになり、そして残念なことに、それは64kbのブロックサイズであることがわかりました。

ここで、「read xfs 64kb block size」のようなものをググって始めて、どこにも行きませんでした。「カーネルにパッチを適用しない限り、Linuxは4kbを超えるブロックサイズを読み取ることができません」と答えるのはほんのわずかです。カーネルにパッチを当てる方法がわかりませんし、これを可能にするエミュレーションもないので困惑しています。

Win / Macでこのパーティションを読み取ることができないアプリの1つの例外について言及しました。その例外はufsexplorerでした。100ドルのアプリで、シ​​ームレスにファイルを表示できました。私はそれが機能することを証明するいくつかのファイルをコピーしましたが、試用版では小さなファイルしかコピーできません。

64kbのxfsを読み取るのに役立つような複雑さのレベルにある無料のオープンソースツールはありません。

私の質問は、そのようなツールを誰かが知っていますか?1つ以上のツール、カーネルパッチ、または他の何か(無料)を使用してデータを取得する方法についての具体的な指示があれば、高く評価されます。

もう1つのポイント:これらのドライブのローカルイメージを作成する必要がないことを強く望みます(それが唯一の方法でない限り)。結局のところ、それは2TBのデータであり、私はこれほどのスペースを持っていないかもしれません。

PS 64 kbのxfsを読み取ることができる既知のLinuxがAcerにインストールできる場合、それも実行可能なソリューションです。

更新1https://www.cgsecurity.org/wiki/TestDiskについて学んだところです。一撃の価値があるかもしれません。試してみる時間があったらまた報告します。

Update 2:TestDiskはXFSパーティションの存在を認識しているようですが、そこに進む方法がわかりません。ファイルを抽出する方法がわからないので、今はそれを放棄し、マシューの答えでqemuアプローチを試しました。


独自のカスタムカーネルを構築するか、xfsパーティションを使用してイメージを作成し、fs-driver.org
Alexander

@AlexanderTこんにちは、返信ありがとうございます。カスタムカーネルに関するリンクはありますか?また、ファイルシステムをオンザフライで変換しながら、ドライブを私のMacのドライブに複製する方法はありますか?そして明確にするために:私はNASドライブをSATA-> USBコンバーター経​​由で接続していますので、イメージを作成せずに直接WindowsまたはMacに接続できます。
Max Chernyak

xfsdumpが役立つかどうか試してみてください。
火星、

>それは64kbブロックサイズであることがわかりました。どのようにしてこの結論に至ったかを詳しく説明してください
poige

1
そうですか。まあ、私があなたの立場
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ブロックサイズが少なくともシステムページサイズと等しいことが必要です。

これは2つのことを意味します。

  1. これは、これまで知られていなかったバグの回避策です。
  2. システムのページサイズは元々64kでした。

私は行って本当に古いカーネル(EL4)をチェックしましたが、上記の制限はまだそこにありました。つまり、アーキテクチャ(x86)で実行したいことを実行することは基本的に不可能です。

NASの名前を指定して、グーグルで調べてみました。http//www.techwarelabs.com/patriot-javelin-s4-network-attached-storage/2/

これは、PPC CPUを使用することを意味します。

Javelinのハードウェアは、追加の役割を処理するだけでは不十分です。基本的に、800 MHz AMCC PowerPCプロセッサと256 MBのRAMを備えた組み込みLinuxシステムです。

実際、PowerPCでは、カーネルは64kページまたは4kページを使用するように構築できます。これは、ブロックが64kである理由と、以前は独自のNASで動作していたマシンでファイルシステムを実行できない理由を説明します。

ファイルシステムを開こうとする場合-PPC64LE(私はそのCPUの実際のアーキテクチャだと思います)を使用してハイパーバイザーで仮想マシンインスタンスを実行するのが最良のオプションだと思います。Fedoraは64kページでPPC64LEを構築します。

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

これを行うにはqemuを使用できます。この男はあなたがこれをどのように行うかについていくつかの(テストされていない)指示を与えるようです。

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

そこから、VM内のディスクを直接公開し、通常のdmraid / lvm / mountを実行して、ドライブにアクセスします。


qemuのアプローチを検討する時間があるとすぐに報告します。非常に希望に満ちているように見えます。このマシューに入れてくれた時間に感謝します。
Max Chernyak

現在、私は走ろうとして途方に暮れていますvirt-builder fedora-25 --arch ppc64le -o fedora-25-ppc64le.img。私はpuppy linuxを使用していて、「supermin:このシステムまたはディストリビューションで使用されているパッケージマネージャを検出できませんでした」と表示されます。
Max Chernyak 2017

それを行うには、fedora distroを使用します。
Matthew Ife

私はまだこの試みを終える機会がありませんでしたが、あなたに賞金を差し上げています。私はそれに向けて取り組んでいるので、引き続きフォローアップできることを願っています。
Max Chernyak 2017年

@hakunin今週初めに提案したように、ppc64leアーキテクチャで64kb xfsファイルシステムをフォーマットしてマウントすることができたので、これが機能することがわかりました。
Matthew Ife
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.