从 XFS 中获取 64kb 块大小的文件

Max*_*yak 9 xfs fakeraid lvm data-recovery raid1

我一直在执行一项任务,从我曾经在 RAID 1 中的 2 个完美工作、未损坏、未加密的 NAS 驱动器中的一个中恢复文件。 NAS 是 Patriot Javelin S4,它(正如我从我的研究中发现的那样) ) 使用 Promise Fasttrack 假突袭控制器。

这方面的信息非常稀少,因此对于处于相同情况的谷歌人来说,这里有一些关于这个 NAS 的事实:

  • RAID 控制器:Promise FastTrack (FakeRaid)
  • 卷系统:LVM2
  • 文件系统:XFS 块大小为 64kb(65536 字节)
  • Arch:800MHz AMCC PowerPC 处理器,256MB RAM(感谢 Matthew 的研究)

执行此操作时,我只有 Windows 10 和 MacOS 计算机,并且我发现没有能够在 LVM2 卷中安装 XFS 的软件(有 1 个例外,更多内容见下文)。我不得不拿出我的旧上网本 Acer Aspire One,并在其上安装 puppy linux(特别是 lxpup 风格)。

在 puppy linux 上,我设法使用名为dmraid. 这个工具有一种挂载 pdc 卷的方法,它是 Promise FastTrack 的 id。一旦我设法跳过安装它的一些箍,我就可以访问实际的 XFS 文件系统,但令我沮丧的是,它原来是 64kb 块大小。

这就是我开始在谷歌上搜索诸如“读取 xfs 64kb 块大小”之类的东西但一无所获的地方。只有几个答案说:“除非您修补内核,否则 linux 无法读取大于 4kb 的块大小”。我不知道如何修补内核,而且我很困惑没有任何类型的仿真允许这样做。

我提到了无法在 Win/Mac 上读取此分区的应用程序中的 1 个例外。那个例外是 ufsexplorer。这是一个 100 美元的应用程序,它能够无缝地向我展示文件。我复制了几个文件证明它有效,但试用版只允许复制小文件。

我拒绝相信没有任何复杂程度的免费开源工具无法帮助我阅读 64kb xfs。

我的问题是:有人知道任何这样的工具吗?非常感谢有关如何使用一种或多种工具、内核补丁或其他(免费)获取数据的任何具体说明。

还有一点:我非常希望不必为这些驱动器创建本地映像(除非这是唯一的方法)。毕竟是2TB的数据,我可能没有那么多空间。

PS 如果有一个已知的 linux 可以安装在我的 Acer 上,它可以读取 64kb xfs,这也是一个可行的解决方案。

更新 1:我刚刚了解了https://www.cgsecurity.org/wiki/TestDisk。可能值得一试。一旦我有时间尝试就会回来报告。

更新 2:TestDisk 似乎正在识别 XFS 分区的存在,但我不确定如何在那里进行。我看不到提取文件的方法,所以我暂时放弃了它,并在 Matthew 的回答中尝试了 qemu 方法。

Mat*_*Ife 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         }
Run Code Online (Sandbox Code Playgroud)

它基本上要求 XFS 块大小至少等于系统页面大小。

这意味着两件事。

  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 以访问驱动器。