因此,出于各种原因,我最终得到了一个 45TB 的单一 Linux 逻辑卷,没有分区表,格式化为包含 28TB 数据的 NTFS(文件系统本身是 28TB)。
文件系统是在 Linux 中创建的,可由 Linux 挂载。当我尝试将它安装在同一个盒子上的基于 KVM 的 Windows VM 中时,问题就来了。Windows 看不到 28TB 的文件系统,而是一个 1.8TB 的磁盘,其中包含一些随机大小的无用分区。
我认为这是因为 Windows 试图读取真正的 NTFS 文件系统数据的前几个字节作为分区表。
我可以看到这个问题的一些可能的解决方案,但无法弄清楚如何实际执行其中的任何一个:
- Windows 是否将未分区的磁盘(单个卷)读取为文件系统?
- 在不破坏文件系统本身保存的数据的情况下,以某种方式在此逻辑卷上生成分区表?
- 以某种方式伪造分区表,指向 LVM 卷并将其导出到 KVM 来宾(在 libvirt 中运行)
parted 报告的当前“分区表”是:
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/chandos--dh-data: 48.0TB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Number Start End Size File system Flags
1 0.00B 48.0TB 48.0TB ntfs
我有一个类似的问题,我不小心成像了一个分区而不是一个磁盘。图片正在网络上复制,我没有时间再复制。然而,它们比 28TB 小得多,而且我使用了一个需要制作图像副本的过程。
初始图像是使用以下方法拍摄的:
要添加分区表,而不是通过网络复制所有内容,我只将 MBR 复制到一个文件中。
然后,我添加了 mbr 并复制了数据。
一旦完成,
/newfile.bin
就有了完整的分区表+数据。我实际上还没有找到一个好的解决方案。幸运的是,还有另一个方便的驱动器架,它有大约 30TB 的空间,我可以用它来迁移到新分区的卷。这需要很长时间,但应该可以。
有人建议可以使用Linux Device Mapper来完成一些聪明的事情(创建一个虚拟设备,从一个文件映射一个伪造的 GPT 分区表,以及 LVM 逻辑卷),但我会把它留给更聪明的人去工作出去。
编辑:实际上最终在这里写了一个解决方案
大于2TB的磁盘需要使用GPT分区表。对于磁盘 <2TB MBR 就足够了。