可以挂载半个ext4分区吗

可以挂载半个ext4分区吗

我有一个硬件 raid 阵列,在迁移过程中磁盘发生故障,控制器发生故障且无法恢复。我编写了一个小型 python 脚本,它已正确映射出当前数组的状态(大约 160GB 已迁移,其余 5.TB 未迁移),我将使用该信息来重建文件系统转移到新磁盘上。这个过程可能需要很长时间。

所以我的问题是,如果我恢复前 250GB,我可以在处理之前挂载此部分文件系统并检查脚本是否执行正确的操作(例如,如果我的块/条带顺序不正确,结果将是垃圾)整个阵列?如果是这样,我需要运行什么安装命令来安装它。

顺便说一句,我假设我只需要文件系统而不需要分区表?

编辑:有关故障的一些更具体的细节:我有一个 4 磁盘 raid 5,我在线将容量扩展到 5 个磁盘,新磁盘出现故障。

到目前为止我所做的是计算迁移到达的点(使用 A xor B xor C == D,旧数组为 true,新数组为 false,忽略空白空间的结果)

使用旧条带大小、新条带大小和迁移后的大小计算数组之间的“空隙空间”;通过将空白空间末尾的块与迁移块的末尾进行比较来仔细检查此结果,直到找到匹配项。

现在我正在编写一些代码来重建条带,将阵列的两半粘在一起并将其写入新磁盘,理想情况下,我希望能够检查此代码的结果,而不必写出完整的 6TB 阵列。通过写出前 250GB 左右,我可以检查和完善恢复整个阵列的过程,而不必等待几天才能完成恢复。

答案1

您无法安装半个分区。半个分区不是包含文件系统中一半文件的容器,它基本上不可用。访问一个文件需要遍历多个目录和索引节点,这些目录和索引节点可能分布在整个分区上。

但是,您可以检查分区的开头,看看它是否具有有效的文件系统标头。这只需要分区的开头(前几千字节)就可以了。file -s /dev/something将告诉您该特定设备是否似乎包含分区(假设您已经有正在重新组装的 RAID 阵列的设备条目)。

答案2

您应该尝试一下,但使用只读方法。如果文件系统超级块仍然可访问,您应该能够挂载它。然后探索文件系统可能会产生大量 IO 错误并打印错误的文件名和内容,但这是在任何情况下都能得到的最好结果(除了testdisk扫描特定文件类型的工具)。

我会尝试:

  • tune2fs -l <blockdevice>:如果有效,您应该能够安装它
  • `mount -o ro /mnt/recovery

答案3

请更详细地描述您的迁移。您是否扩大或缩小了阵列,添加或删除了磁盘,或者什么。您不需要错误目标,而是使用线性和快照,这样您就可以在虚拟层上进行诸如 等实验fsckdebugfs而无需为每个实验创建另一个副本。使用与中描述的类似方法https://raid.wiki.kernel.org/index.php/Recovering_a_failed_software_RAID#Making_the_harddisks_read-only_using_an_overlay_file

挂载可能不是“检查块/条带顺序是否不正确”等的好方法。如果阵列增长到另一个磁盘,则应该有一个区域新旧数据表示重叠,因此可能可以完全恢复。

相关内容