![如何在 Windows 7 上创建不跨整个磁盘的软件 RAID-1 阵列](https://linux22.com/image/1391104/%E5%A6%82%E4%BD%95%E5%9C%A8%20Windows%207%20%E4%B8%8A%E5%88%9B%E5%BB%BA%E4%B8%8D%E8%B7%A8%E6%95%B4%E4%B8%AA%E7%A3%81%E7%9B%98%E7%9A%84%E8%BD%AF%E4%BB%B6%20RAID-1%20%E9%98%B5%E5%88%97.png)
我有一台全新的 PC,使用单个 SSD 驱动器(win7+debian)进行双启动。我添加了几个 2T 硬盘,我想在 Win 和 Linux 中使用。我的目标是在四个 1T 分区上有两个独立的 RAID-1 阵列。
我开始在 Linux (/dev/sd[de][12]) 下进行分区,并在那里构建阵列,其工作符合预期(使用mdmadmin --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[de]2
)。
不幸的是,Win7 似乎无法使用“剩余”的可用分区 (/dev/sd[de]1):它接受了我的输入,但随后却因“设备磁盘空间不足”而卡住了。我还尝试过减小分区的大小(一些帖子暗示 Win 需要一个 1MB 的“开销”分区),但我无法让它工作。
然后我删除了所有分区并在 Win7 上创建了“卷”,并且它也按广告宣传的那样工作。
不幸的是,它创建了 1T 卷,但也创建了两个分区:“小 1MB”和另一个跨越磁盘其余部分的分区;没有剩余空间用于 Linux 阵列。
有人可以建议一种策略,在两个 2TB 物理磁盘上创建两个 1TB RAID-1 磁盘阵列,一个用于 Win7,另一个用于 Linux?
注意:Linux 阵列将是一个主要用于 XEN VM 存储的 LVM 卷,因此遗憾的是,在 Linux 下安装 Win 阵列(ntfs)不是一个选项。
答案1
你需要逻辑磁盘管理器(LDM)支持 Linux 发行版访问 Windows 动态磁盘。在 Windows 中,必须将这些磁盘配置为动态磁盘,才能创建镜像卷。
我不清楚 Debian 是否将 LDM 支持编译到其内核中(我不是 Debian 用户,所以我不能说)。是 内核中的 LDM 支持。内核可以查询磁盘上的 LDM 数据库并在“/dev”文件系统中显示卷。没有什么可以阻止您创建 LDM 卷并在其上使用 Linux 软件 RAID 和仅限 Linux 的文件系统。
除了内核驱动程序之外,还有libldm ldmtool 工具这样可以通过设备映射器查询LDM并呈现声音。这对您来说可能也是一个选择。
编辑:
让我试着澄清一下。我并不是建议你放弃 Linux 软件 RAID。你的问题不在于 RAID——而在于读取分区表。你对 RAID 所做的工作与这个问题无关。
您的内核正在向您显示这些磁盘上的 MBR 样式分区表。您在 Linux 中看到这一点是因为 Windows 已将它们变为“动态”,并将此分区表存储为可读取 MBR 样式分区表的操作系统的兼容性功能。是这些磁盘上有可用空间,但您的 Linux 操作系统需要解释 LDM 数据库才能访问该可用空间。
如果不采用动态磁盘(LDM 分区)来托管镜像卷,则无法在 Windows 中拥有镜像卷。你陷入困境。如果你想要 Windows RAID-1,这些磁盘将有拥有 LDM 样式的分区。
因此,要从 Linux 寻址动态磁盘上的卷,您必须使用 LDM 兼容层。如果您不使用动态磁盘,则无法在 Windows 中获得软件 RAID。
我不清楚 Linux 中的内核 LDM 支持发生了什么。代码似乎是几年前添加的,应该很稳定。我猜你需要构建一个自定义内核。检查内核配置 ( grep "CONFIG_LDM_PARTITION" /boot/config-$(uname -r)
) 以查看是否设置了“CONFIG_LDM_PARTITION”——我猜可能没有。
一旦 Linux 读取了 LDM 分区表,你绝对能使用 Linux 软件 RAID 来处理您在 LDM 分区表中创建的卷。它们只是块设备。但是,要创建用于托管 Linux 软件 RAID 的卷,您可能需要使用 Windows 工具diskpart
(或者可能是ldmtool
我链接到的实用程序)。