brono168
发表于 2009-2-9 17:23:16
谢谢了。。。。。。。。。。。。。
nhqwsj
发表于 2009-2-9 18:35:06
确实是好书啊,就希望早点出版了
msxchina
发表于 2009-2-9 19:06:13
希望早日看到成品书啊。。。。。期待ing........
amy
发表于 2009-2-9 19:06:31
正版俄文UDMA销售 带DE 价格:32000,不带DE 价格:20000联系QQ:1063476824 非诚勿扰
mahuafeng
发表于 2009-2-9 20:01:21
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hanxuefei
发表于 2009-2-10 05:54:33
楼主能透露一下出版日期吗?
ttnml
发表于 2009-2-10 11:30:39
原帖由 hanxuefei 于 2009-2-10 05:54 发表 http://bbs.intohard.com/images/common/back.gif
楼主能透露一下出版日期吗?
具体情况得看出版社的工作进度,不过在此可以透露一下编辑对此问题的回答:出版社对本书“无比重视”,目前正在全力加快进度!
非常感谢大家对本书的关注,虽然出版社已尽力加速,但为了读者利益,还是请大家耐心等待一下,避免仓促之中影响质量,这对读者不公平。
ttnml
发表于 2009-2-10 12:12:32
看到论坛内有关动态盘的问题讨论得很激烈,特将《数据重现:文件系统原理精解与数据恢复最佳实践》中的相关内容先贴出来与大家研究一下。
1. 动态磁盘
Windows 2000及Windows XP使用逻辑磁盘管理LDM(Logical Disk Manager) 对逻辑卷进行管理。LDM支持的简单卷相当于基本分区,另外它还支持JBOD、Raid 0、Raid 1和Raid 5。
基本磁盘已经在前面进行过介绍,它有一个DOS或GPT分区表,每个分区都各自独立存在。基本磁盘不适用于LDM,为此,引入了“动态磁盘”。
动态磁盘有两个重要的组成部分,一个是“LDM分区区域”,它占用磁盘的绝大部分,用以在其中建立动态分区;另一部分是动态磁盘的最后1MB,分配给LDM数据库。LDM数据库包含分区区域的分配情况及逻辑卷的建立情况。
基于IA32的动态磁盘在其第一个扇区会建立一个DOS分区表,只使用其中的一个分区表项描述一个类型值为“0x42”的分区,这个分区的大小跨越分区起始位置到磁盘尾部的所有空间,包括LDM分区区域和磁盘尾部分配给LDM数据库的1MB空间。图8.14显示了一个大小为224910个扇区的实验磁盘转换成动态磁盘后的0号扇区。
我们看到,该磁盘只有一个分区,分区类型值为“0x42”,起始于63号扇区,大小为224847个扇区,可见磁盘的最后一个扇区也包括在了这个范围之内。
事实上,我们可以这样理解,动态磁盘的分区表所起的作用就是将分区表所描述的区域看做是一个物理磁盘,我们称其为“物理分区”,LDM数据库对这个物理分区中的动态分区进行描述时,是以这个物理分区的起始位置为0号扇区的。
图8.15显示了一个IA32下的动态磁盘的布局结构。
IA64(Intel Itanium)下的动态磁盘使用GPT分区,会为分区区域和LDM数据库区域各自建立一个分区表项。
Windows只支持一个磁盘组,所以所有的动态磁盘会自动地分配给它。每个动态磁盘的分区区域内可以建立动态分区,一个或多个磁盘的动态分区组成逻辑卷。需要注意的是,应该将动态磁盘的逻辑卷与DOS分区的逻辑分区(逻辑驱动器)加以区别,DOS分区的逻辑分区是指位于扩展分区中的分区;而对于动态磁盘,所有包含文件系统或其它数据的分区都称为逻辑卷。
2. LDM数据库
LDM数据库占用磁盘尾部1MB的空间,用于记录动态分区的位置以及逻辑卷的建立或组成信息。LDM数据库有四个主要的部分:
1) 私有头(Private Header)类似于文件系统的引导扇区,它描述磁盘以及逻辑卷的独有特性,包括磁盘的唯一标识符GUID及磁盘组的名字。Windows只有一个磁盘组,这个磁盘组的名字是基于本地计算机的。
2) 第二部分为“内容表(Table of Contents)”,内容表的大小为16个扇区,它记录了数据库的布局信息。
3) 第三部分是“数据库记录”区域。
数据库记录区域的第一个扇区为数据库记录头,在这个扇区中存储着数据库记录的信息,如它所包含的记录个数,数据库相关的磁盘组的名字和GUID,以及LDM用于创建下一项的序列号。
数据库记录头后的扇区中是128字节的定长记录,用于描述磁盘组的分区和卷。在数据库中使用“项”描述磁盘、分区、组件以及卷类型的信息。
每个动态磁盘都有自己的“磁盘项”,说明它是DOS磁盘还是GPT磁盘。
“分区项”用于描述动态磁盘的分区情况。
“组件项”则用于描述分区之间的组合情况。每个分区项都指向它所使用的组件项。跨区卷、条带卷、镜象卷等都存在组件项。
最后一种是“卷项”,用于描述逻辑卷,如卷的GUID、卷大小、状态以及名字等。
4) LDM数据库的最后部分是事务处理日志区,它包含的几个扇区在数据库信息改变时用来存储备份信息。这样确保在系统崩溃或断电时,LDM能够利用日志把系统恢复到一个正确的状态。
3. 实例分析
下面我们来分析一个实例。在Windows XP下将两个磁盘转换成动态磁盘,先建立一个跨区卷(K:),该卷由位于两个磁盘上的三个动态分区组成。然后再建立一个条带卷(L:),即Raid0,它由两块磁盘上的两个动态分区组成。在“磁盘管理”中看到的内容如图8.16所示。
Microsoft提供了一个dmdiag.exe工具,该工具可以显示动态磁盘的情况。它可以从http://download.microsoft.com/download/win2000platform/webpacks/1.00.0.1/nt5/en-us/dmdiag.exe网站下载,安装后到安装目录下找到“dmdiag.exe”程序将其拖入命令行窗口运行即可。
dmdiag.exe运行后会检测计算机上的存储设备并将检测到的信息显示出来,我们将需要的记录分别摘录并加以讲解。首先见图8.17。
图8.17显示了两个磁盘的磁盘项记录,这两个磁盘分别为“Disk1”和“Disk2”。需要注意的是,此处显示的磁盘编号是LDM数据库中真实信息的直接反映,也就是说所显示的磁盘号是当初建立动态卷时各个磁盘的位置号,而并不表示现在它接入的位置。所以要确定各个磁盘间的组合关系,可以根据磁盘的ID进行对应。我们先看图8.17中的两个记录的内容,然后再介绍磁盘的对应方法。
前一个记录的编号是7,占用11号记录块。记录块由LDM数据库的第19个扇区(也就是数据库记录部分的第2个扇区,第一个扇区被数据库记录头占用)开始,编号由0x04开始。这个编号位于记录的偏移0x07字节处。该记录描述了disk1的“rid”为0.1027,“diskid”为fb42e990-bd1f-4cbd-aebe-b1b720b82628。
第二个记录则描述了disk2的同类信息:rid:0.1032,diskid:c3c860c9-5627-4667-941f-44c54a3f01f6。
下面我们用Winhex打开这两个磁盘,直接转到磁盘末尾查看LDM私有头的备份,以便将磁盘信息与实际磁盘对应起来。如图8.18、8.19所示。
由图可知,图8.18对应的磁盘为disk1,图8.19对应的磁盘为disk2,这样就把dmdiag.exe程序中显示的磁盘与实际的磁盘相互对应起来了。
我们继续分析记录,如图8.20所示。
图8.20中的第一个记录描述了一个卷,rid:0x1035,盘符为K:卷大小为143360个扇区。第二个记录说明卷是JBOD卷(CONCAT),rid:0x1037,由“assoc”部分可知该卷是rid为0.1035的卷的一部分或全部。
下面我们看带区卷的卷项,如图8.21所示。
图8.21中的前一个项描述了一个卷“Stripe1”,rid为0.1051,挂载点为L:。第二个项说明这个卷是带区卷(STRIPE),由columns=2可知由两个成员磁盘(或分区)组成,由width=128可知条带大小(即阵列数据块大小)为128个扇区。由assoc部分的vol=0.1051可知它是rid值为0.1051的卷的一部分或全部。
图8.22中的内容显示了disk1上的动态分区。
可以看到,disk1上有三个动态分区。
1) 第一个动态分区的rid为0.1039,它所在的物理磁盘的rid为0.1027,它在物理分区上的起始位置是0号扇区,长度为20480个扇区,也就是0~20479号扇区。它的plex值为0.1037,也就是指向了rid为0.1037的逻辑卷,构成一个卷的各个动态分区具有相同的plex值。因为rid为0.1037的卷是JBOD卷,是由动态分区连接而成,因此括号中的column值并不重要。括号中的Offset值为0,说明这个动态分区是plex值为0.1037的卷由0号扇区起始的部分,也就是它的第一个组成部分。
2) 第二个动态分区的rid为0.1048,它与第一个动态分区所在的物理磁盘相同,它是起始于该物理分区的20480号扇区,长度为81920个扇区,也就是20480~102399号扇区。它的plex值与第一个动态分区相同,说明它们都是同一个逻辑卷的组成部分。由括号中的offset值可知,这个动态分区起始于动态卷的61440号扇区。
3) Disk1的第三个动态分区的rid值为0.1055,它在物理分区上的起始位置是102400号扇区,长度为61440个扇区。它是plex值为0.1053的逻辑卷的组成部分。因为rid值为0.1053的卷是由两个动态分区组成的RAID0卷,读写时要交叉往复在两个动态分区间以条带大小为单位进行读写,这就有了一个磁盘顺序的问题。括号中的column值说明了这个顺序――对磁盘或动态分区由0开始进行编号,并用column值表示这个编号。rid为0.1055的动态分区的column值为0,它是该Raid0的第一个组成部分。
图8.23显示了disk2上的动态分区。
可以看到,Disk2上的第一个动态分区起始于disk2的物理分区的0号扇区,长度为40960个扇区。它是rid为0.1037的卷的组成部分,由卷的20480号扇区开始。
第二个动态分区起始于disk2的物理分区的40960号扇区,长度为61440个扇区。它是rid为0.1053的RAID0的第二个组成部分。
图8.24显示了磁盘组的信息。
我所使用的计算机的名字是“ML-pc”,可以看到,组名是由计算机名“ML-pc”加上“Dg0”组成的。
由以上信息我们可以得出磁盘、动态分区、逻辑卷间的关系如图8.25所示。
(本部分LDM内容结束,大家一起研究一下)
[ 本帖最后由 ttnml 于 2009-2-10 15:14 编辑 ]
ttnml
发表于 2009-2-10 12:14:08
为保证连续,占位
xrf
发表于 2009-2-10 12:22:08
真是一本学习的好书
页:
1
2
[3]
4
5
6
7
8
9
10
11
12