下面以创建一个动态磁盘简单卷的过程为例,详细分析LDM的结构。
图4-113所示是一个没有初始化的硬盘。这里就以这块硬盘为例,创建动态磁盘简单卷。
在创建动态磁盘简单卷之前,先用WinHex打开这块硬盘,查看第一个扇区的数据,可以但到没有任何数据,完全是“0”值,如图4-114所示。
下面创建动态磁盘简单卷。
在图4-113的左侧“磁盘1”处单击鼠标右键,并在出现的菜单中选择“初始化磁盘”,如图4-115所示。
初始化完成后,“磁盘1”就成为一块“基本”磁盘了,如图4-116所示。
这时再用WinHex查看硬盘的第一个扇区,发现这已经是一个MBR扇区了,扇区中写入了引导程序、磁盘签名及结束标志,因为还没有分区,所以分区表部分没有数据,如图4-117所示。
在图4-116的左侧“磁盘1”处单击鼠标右键,并在出现的菜单中选择“转换到动态磁盘”,如图4-118所示。
之后出现磁盘选择菜单,如图4-119所示。
选择“磁盘1”做动态磁盘转换,转换完成后,“磁盘1”就成为一块“动态”磁盘了,如图4-120所示。
然后用WinHex查看硬盘的MBR扇区,发现分区表中多出一个分区表项,其他结构没有变化,如图4-121所示。
这个分区表项就是LDM为硬盘创建的一个MS-DOS的分区表项,其分区类型为“42H”,表示该分区为动态分区。该分区表项只是一个象征性的分区表项,并没有起到管理分区的作用,因为还没有对该硬盘进行分区。
硬盘转换为动态磁盘后,就可以创建动态磁盘卷了,在图4-120中的“未指派”区域内单击鼠标右键,就出现“新建卷”菜单,如图4-122所示。
单击“新建卷”后出现一个向导,如图4-123所示。
单击“下一步”按钮,就可以选择需要创建的卷类型了,如图4-124所示。
因为是在Windows XP Professional系统下创建动态卷,所以只能支持简单卷、跨区卷和带区卷,不能支持镜像卷和RAID-5卷。而目前只有一个动态磁盘,所以只能创建“简单卷”,跨区卷和带区卷不能创建。
选中“简单卷”后单击“下一步”按钮,出现如图4-125所示的对话框。
选中“磁盘1”并单击“添加”按钮,就可以设置简单卷的大小了,如图4-126所示。
此处默认大小为动态磁盘的总大小,将其修改为一半大小,即2000MB,然后单击“下一步”按钮,出现分配盘符的对话框,如图4-127所示。
为其分配盘符“H”,然后单击“下一步”按钮,出现了“卷区格式化”选项,如图4-128所示。
选择“按下列设置格式化这个卷”,文件系统选择NTFS,并在“执行快速格式化”前打钩,然后单击“下一步”按钮,“新建卷向导”即将完成,并列出卷的基本信息,如图4-129所示。
单击“完成”按钮,一个大小为1.95GB的简单卷将被创建出来,盘符为“H”,如图4-130所示。
简单卷创建好了,下面可以分析该卷的私有头以及LDM数据库的各部分结构了。
该动态磁盘的6号扇区为私有头,用WinHex打开该扇区,其内容如图4-131所示。
该私有头的具体结构参数如图4-132所示。
提示:私有头扇区中数据存储的字节序是Big-Endian。
对图4-132圈中的几个重要参数作进一步讲解。
①私有头标志。私有头扇区的前八个字节为固定值“PRIVHEAD”,作为私有头扇区的标志。
②私有头第一备份地址。私有头扇区在LDM数据库中有两个备份,这里描述了第一个备份的扇区号。当前值为2047,是指LDM的最后一个扇区。
③私有头第二备份地址。这是私有头扇区在LDM数据库中的第二个备份的扇区号。当前值为1856,该扇区号是以LDM的开始扇区为0扇区计算的。
④磁盘组名。磁盘组的名称由Dg0和计算机的名字一起组成。当前名称为“LiuweiDg0”,意味着计算机的名字是“Liuwei”。
⑤逻辑磁盘起始地址。该值也就是动态磁盘MBR中类型为42H的分区表项所描述的分区开始扇区号。
⑥逻辑磁盘大小。该值也就是动态磁盘MBR中类型为42H的分区表项所描述的分区总扇区数减去LDM数据库占用的2048个扇区的结果。
⑦LDM数据库的起始地址。该值是LDM数据库在动态磁盘中的开始扇区号。
⑧LDM数据库的大小。这是指LDM数据库占用的扇区总数,一般为1M,即2048个扇区。
⑨配置信息大小。这是指VBLK所占的扇区数,一般为1481个扇区。
⑩日志大小。这是指KLOG所占的扇区数,一般为224个扇区。
目录表(TOCBLOCK)开始于LDM的第二个扇区。用WinHex打开该扇区,其内容如图4-133所示。
目录表(TOCBLOCK)的结构参数如图4-134所示。
对图4-134圈中的几个重要参数作进一步讲解。
①TOC头标志。目录表扇区的前8个字节为固定值“TOCBLOCK”,作为目录表扇区的标志。
②位图名1。这个参数指明位图名1的名称。当前值为“config”,说明位图名1是配置信息的位图。
③位图1起始地址。上一个参数说明了位图1是配置信息的位图,所以该参数就描述配置信息位图的起始扇区。当前值为17,说明配置信息的位图开始于LDM的17号扇区。
④位图1大小。位图1是配置信息的位图,所以该参数就描述配置信息位图的总扇区数。当前值为1481,说明配置信息占用1481个扇区。
⑤位图名2。这个参数指明位图名2的名称。当前值为“log”,说明位图名2是日志的位图。
⑥位图2起始地址。上一个参数说明了位图2是日志的位图,所以该参数就描述日志位图的起始扇区。当前值为1498,说明日志的位图开始于LDM的1498号扇区。
⑦位图2大小。位图2是日志的位图,所以该参数就描述日志位图的总扇区数。当前值为224,说明日志占用224个扇区。
数据库配置信息(VMDB)起始于LDM的17号扇区,占用1个扇区。用WinHex打开该扇区,其内容如图4-135所示。
VMDB扇区中存放关于动态磁盘的总体信息,其结构参数如图4-136所示。
对图4-136圈中的几个重要参数作进一步讲解。
①VMDB头标志。数据库配置信息扇区的前四个字节为固定值“VMDB”,作为数据库配置信息扇区的标志。
②VBLK的个数。这个参数指明数据库配置记录中的记录个数。当前值为 5924,说明数据库配置记录中一共有5924条记录。
③VBLK的大小。这个参数指明数据库配置记录中的每个记录的大小。当前值为128,说明数据库配置记录中每条记录长度为128字节。
④VMDB头大小。这个参数说明数据库配置信息扇区的大小,单位为字节。当前值为512,说明数据库配置信息占用1个扇区。
⑤卷、组件、分区和磁盘提交的VBLKs数量。
这些参数指明了卷、组件、分区和磁盘分别占用的VBLK数量,当前值都为1。
数据库配置记录(VBLK)起始于VMDB的下一个扇区,也就是LDM的18号扇区。当前数据库配置记录中一共有五条VBLK,分别是卷的VBLK、磁盘组的VBLK、磁盘的VBLK、组件的VBLK、分区的VBLK,共占了两个扇区。用WinHex打开这两个扇区,内容如图4-137和4-138所示。
磁盘组的VBLK如图4-139所示。
磁盘组的VBLK结构参数如图4-140所示。
对图4-140圈中的几个重要参数作进一步讲解。
①VBLK头标志。数据库配置记录的前四个字节为固定值“VBLK”,作为每条记录的开始标志。
②序列号。这个参数指明数据库配置记录的顺序号,该顺序号从4开始编排。当前值为5,说明该记录为第二条记录。
③记录类型和标志。这个参数指明该记录是哪一种类型的记录。当前值为35H,说明该记录是磁盘组的VBLK。
④对象ID。这是给磁盘组分配的身份代号。当前值为1025,说明当前系统下的磁盘组代号为1025。
⑤名称。这是指磁盘组的名称,其格式由计算机名加上“Dg0”组成。当前值为“LiuweiDg0”,说明该计算机名称为“Liuwei”。
⑥磁盘组ID。这是磁盘组的全局ID。当前值为f05a46c7-07b5-46a2-9d49-c5af62630e91。
磁盘的VBLK如图4-141所示。
磁盘的VBLK结构参数如图4-142所示。
对图4-142圈中的几个重要参数作进一步讲解。
①VBLK头标志。数据库配置记录的前四个字节为固定值“VBLK”,作为每条记录的开始标志。
②序列号。这个参数指明数据库配置记录的顺序号,该顺序号从4开始编排。当前值为7,说明该记录为第四条记录。
③记录类型和标志。这个参数指明该记录是哪一种类型的记录。当前值为34H,说明该记录是磁盘的VBLK。
④对象ID。这是给磁盘分配的身份代号。当前值为1027,说明当前磁盘的代号为1027。
⑤名称。这是指磁盘的名称。当前值为“Disk1”,说明这是第一块动态磁盘。
⑥磁盘ID。这是磁盘的全局ID。当前值为eab5b8cd-7709-4694-8d85-d22ccf7f1cc9。
分区的VBLK如图4-143所示。
分区的VBLK结构参数如图1-44所示。
对图4-144圈中的几个重要参数作进一步讲解:
①VBLK头标志。数据库配置记录的前四个字节为固定值“VBLK”,作为每条记录的开始标志。
②序列号。这个参数指明数据库配置记录的顺序号,该顺序号从4开始编排。当前值为9,说明该记录为第六条记录。
③记录类型和标志。这个参数指明该记录是哪一种类型的记录。当前值为33H,说明该记录是分区的VBLK。
④对象ID。这是给分区分配的身份代号。当前值为1037,说明当前分区的代号为1037。
⑤名称。这是指分区分配的名称。当前值为“Disk1-01”,说明这是第一块动态磁盘上的第一个分区。
⑥起始位置。这是当前分区在动态磁盘逻辑盘中的起始扇区号。当前值为0,说明该分区起始于逻辑盘的第一个扇区。
⑦大小。这是当前分区的总扇区数。当前值为4 096 000,说明该分区大小为4 096 000个扇区,也就是2000MB。
⑧父对象ID(组件)。这个参数指明该记录父对象的ID号,该记录是分区的记录,分区的父对象是组件。当前值为1035,说明ID号为1035的组件是该分区的父对象。
⑨磁盘对象ID。这个参数指明该分区所在磁盘的ID号。当前值为1027,而磁盘1的ID为1027,说明该分区归属于磁盘1。
卷的VBLK如图4-145所示。
卷的VBLK结构参数如图4-146所示。
对图4-146圈中的几个重要参数作进一步讲解。
①VBLK头标志。数据库配置记录的前四个字节为固定值“VBLK”,作为每条记录的开始标志。
②序列号。这个参数指明数据库配置记录的顺序号,该顺序号从4开始编排。当前值为10,说明该记录为第七条记录。
③记录类型和标志。这个参数指明该记录是哪一种类型的记录。当前值为51H,说明该记录是卷的VBLK。
④对象ID。这是给卷分配的身份代号。当前值为1033,说明当前卷的代号为1033。
⑤名称。这是给卷分配的名称。当前值为“Volume1”,说明这是第一个卷。
⑥卷类型。这是描述当前卷类型的参数。当前值为3,说明该卷是一个普通卷,而不是RAID卷。
⑦大小。这是当前卷的总扇区数。当前值为4 096 000,说明该卷大小为4 096 000个扇区,也就是2000MB。
⑧分区类型。这个参数指明该卷使用的文件系统类型。当前值为07H,说明该卷为NTFS文件系统。
⑨卷GUID。这个参数指明该卷的全局ID。当前值为23 FC 18 EB E5 1B 4F CE 8F 8E 47 5A 74 DD 33 E5。
⑩ID1(驱动器号)。这个参数指明给该卷分配的驱动器号,也就是盘符。当前值为“H:”,说明该卷的盘符为“H:”。
组件的VBLK如图4-147所示。
组件的VBLK结构参数如图4-148所示。
对图4-148圈中的几个重要参数作进一步讲解。
①VBLK头标志。数据库配置记录的前四个字节为固定值“VBLK”,作为每条记录的开始标志。
②序列号。这个参数指明数据库配置记录的顺序号,该顺序号从4开始编排。当前值为11,说明该记录为第八条记录。
③记录类型和标志。这个参数指明该记录是哪一种类型的记录。当前值为32H,说明该记录是组件的VBLK。
④对象ID。这是给组件分配的身份代号。当前值为1035,说明当前组件的代号为1035。
⑤名称。这是给组件分配的名称。当前值为“Volume1-01”,说明这是卷1中的第一个组件。
⑥父ID(卷)。这个参数指明该记录父对象的ID号,该记录是组件的记录,组件的父对象是卷。当前值为1033,说明ID号为1033的卷是该组件的父对象。
通过对磁盘组、磁盘、分区、卷、组件的VBLK分析,可以得到如下结论:
①当前系统下有一个动态磁盘卷,盘符为H,大小为4 096 000扇区,卷名为Volume1,其对象ID为1033,是一个普通卷(简单卷)。
②盘符为H的卷包含一个组件,该组件名称为Volume1-01,对象ID为1035。
③组件Volume1-01由一个分区构成,该分区名称为Disk1-01,对象ID为1037,位于磁盘1上,分区的开始位置在逻辑磁盘的0扇区,大小为4 096 000扇区。
④磁盘1的名称为Disk1,对象ID为1027。