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


9

我一直在执行任务,以从我以前使用过RAID 1的2个运行良好,未损坏,未加密的NAS驱动器之一中恢复文件。 )使用Promise Fasttrack假RAID控制器。

信息非常匮乏,因此对于处于相同情况的Google员工,以下是有关此NAS的一些事实:

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

执行此操作时,我只有Windows 10和MacOS计算机,但没有找到能够在XVM 2卷中挂载XFS的软件(有1个例外,下面对此进行了详细介绍)。我必须取出旧的上网本Acer Aspire One,并在上面安装uppy linux(特别是lxpup风格)。

在小狗linux上,我设法使用名为的工具挂载了此文件系统dmraid。该工具可以挂载pdc卷,这是Promise FastTrack的ID。一旦我设法跳过安装它的障碍,就可以访问实际的XFS文件系统,但令我沮丧的是,它的大小为64kb。

在这里,我开始搜索“读取xfs 64kb块大小”之类的东西,却一无所获。只有几个回答说:“除非您修补内核,否则Linux无法读取大于4kb的块大小”。我不知道该如何修补内核,而我对此感到困惑,因为没有任何模拟可以允许这样做。

我在无法在Win / Mac上读取此分区的应用程序中提到1个例外。那个例外是ufsexplorer。它是一款售价100美元的应用,能够无缝显示文件。我复制了一些文件以证明其有效,但是试用版仅允许复制微小文件。

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

我的问题是:有人知道这样的工具吗?非常感谢您提供有关如何使用一个或多个工具,内核修补程序或其他工具(免费)获取数据的任何特定说明。

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

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

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

更新2:TestDisk似乎可以识别XFS分区的存在,但是我不确定如何从那里进行格式化。我没有找到提取文件的方法,因此我暂时放弃了该文件,并尝试在Matthew的答案中使用qemu方法。


我看到了两种解决方案,构建自己的自定义内核或使用xfs分区创建映像,然后尝试通过fs-driver.org
Alexander Tolkachev

@AlexanderT您好,感谢您的回复。关于自定义内核的任何链接吗?另外,也许有一种方法可以在即时转换文件系统的同时将驱动器克隆到Mac的驱动器中?需要明确的是:我通过SATA-> USB转换器连接了NAS驱动器,因此我可以将其直接插入Windows或Mac,而无需创建映像。
马克斯·切尔纳克

尝试看看xfsdump是否有帮助。
火星人

>结果是64kb的块大小。请详细说明您如何得出此结论
poige

1
我知道了。好吧,我想穿的衣服
poige

Answers:


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块大小至少等于系统页面大小。

这意味着两件事。

  1. 这是以前未知的错误的解决方法。
  2. 系统页面大小最初为64k。

我去检查了一个非常老的内核(EL4),上面的限制仍然存在。这意味着在架构(x86)上执行您想做的事情根本上是不可行的。

鉴于您提供了NAS的名称,我进行了一次谷歌搜索并发现了这一点:http : //www.techwarelabs.com/patriot-javelin-s4-network-attached-storage/2/

这意味着它使用了PPC CPU。

标枪的硬件具有处理其他角色的能力。它实质上是一个嵌入式Linux系统,带有800 MHz AMCC PowerPC处理器和256 MB RAM。

实际上,在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。我使用的是linux小狗,并且收到“ supermin:无法检测到此系统或发行版使用的软件包管理器”。
Max Chernyak

使用Fedora发行版来做。
马修·伊夫

我还没有机会完成这个尝试,但是我给了你赏金。我希望我可以继续努力。
Max Chernyak

@hakunin我能够按照本周早些时候的建议在ppc64le架构中格式化和挂载64kb xfs文件系统,所以我知道这是可以的。
马修·伊夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.