LDM - 逻辑磁盘管理器(动态磁盘)¶
- 作者:
最初由 FlatCap - Richard Russon <ldm@flatcap.org> 编写。
- 最后更新:
Anton Altaparmakov 于 2007 年 3 月 30 日针对 Windows Vista 更新。
概述¶
Windows 2000、XP 和 Vista 使用了一种新的分区方案。它是 MSDOS 风格分区的完全替代方案。它将信息存储在物理磁盘末尾的一个 1MiB 的日志数据库中。分区大小仅受磁盘空间限制。分区的最大数量接近 2000 个。
在 LDM 下创建的任何分区都称为“动态磁盘”。不再有主分区或扩展分区。普通的 MSDOS 风格分区现在被称为基本磁盘。
如果您希望使用跨区卷、带区卷、镜像卷或 RAID 5 卷,则必须使用动态磁盘。日志功能允许 Windows 在无需重启的情况下对这些分区和文件系统进行更改。
一旦 LDM 驱动程序划分了磁盘,您就可以使用 MD 驱动程序来组装任何多分区卷,例如带区卷、RAID5。
为了防止旧版应用程序对磁盘进行重新分区,LDM 会创建一个包含一个磁盘大小分区的虚拟 MSDOS 分区。这就是 Linux LDM 驱动程序所支持的内容。
Vista 中实现的一种较新的方法是将 LDM 置于 GPT 标签磁盘之上。Linux LDM 驱动程序尚不支持此功能。
示例¶
下面我们有一个 50MiB 的磁盘,划分为七个分区。
注意
磁盘末尾缺失的 1MiB 是存储 LDM 数据库的地方。
设备端 |
偏移量(字节) |
扇区 |
MiB |
大小(字节) |
扇区 |
MiB |
||
|---|---|---|---|---|---|---|---|---|
hda |
0 |
0 |
0 |
52428800 |
102400 |
50 |
||
hda1 |
51380224 |
100352 |
49 |
1048576 |
2048 |
1 |
||
hda2 |
16384 |
32 |
0 |
6979584 |
13632 |
6 |
||
hda3 |
6995968 |
13664 |
6 |
10485760 |
20480 |
10 |
||
hda4 |
17481728 |
34144 |
16 |
4194304 |
8192 |
4 |
||
hda5 |
21676032 |
42336 |
20 |
5242880 |
10240 |
5 |
||
hda6 |
26918912 |
52576 |
25 |
10485760 |
20480 |
10 |
||
hda7 |
37404672 |
73056 |
35 |
13959168 |
27264 |
13 |
LDM 数据库可能不会按照分区在磁盘上出现的顺序存储它们,但驱动程序会对其进行排序。
当 Linux 启动时,您会看到类似以下内容
hda: 102400 sectors w/32KiB Cache, CHS=50/64/32
hda: [LDM] hda1 hda2 hda3 hda4 hda5 hda6 hda7
编译 LDM 支持¶
要启用 LDM,请选择以下两个选项
“Advanced partition selection”(高级分区选择) CONFIG_PARTITION_ADVANCED
“Windows Logical Disk Manager (Dynamic Disk) support”(Windows 逻辑磁盘管理器(动态磁盘)支持) CONFIG_LDM_PARTITION
如果您认为驱动程序工作不正常,可以启用额外的调试代码。这会产生大量的输出。该选项为
“Windows LDM extra logging”(Windows LDM 额外日志记录) CONFIG_LDM_DEBUG
注意:分区代码不能编译为模块。
与所有分区代码一样,如果驱动程序没有看到其分区类型的迹象,它会将控制权传递给另一个驱动程序,因此启用它不会有任何害处。
如果您有动态磁盘但没有启用该驱动程序,那么您只能看到一个填满整个磁盘的虚拟 MSDOS 分区。您将无法挂载磁盘上的任何卷。
引导¶
如果您启用了 LDM 支持,那么 lilo 能够从任何发现的分区引导。但是,grub 不理解 LDM 分区,无法从动态磁盘引导。
更多文档¶
有一份 LDM 概述以及完整的技术文档。它可供下载。
如果您有任何文档中未解答的 LDM 问题,请给我发电子邮件。
- 祝好,
FlatCap - Richard Russon ldm@flatcap.org