这一条应该是操作的基本原则,可长期以来玩电脑很少失手,这次就懒得创建实验环境,直接在装有重要数据的机器上做实验,这是导致这次灾难的主要原因。
Windows2000的动态磁盘是新引入的技术,目前还没有太多的资料,我们也从未研究过,而MCSE的教材中只提到了RAID-5卷中一块硬盘出错的修复办法,可现在是6块全部脱机。当时的第一反应是只能求援了,先找周围的高手,可大家也都没有相关经验,于是开始寻求专业的解决方案。虽然我们最终将这次案例提交到了上海的微软全球技术中心,但没有得到任何实质性的帮助,我们花不起巨额的数据恢复费,而微软以Windows2000的动态磁盘是技术机密为由拒绝给我们详细的技术资料,最终实验室的三位兄弟只能走上自救的道路。 在这系列文章的后面,我们总结了自己研究动态磁盘的结果,希望关于动态磁盘技术资料的整理对大家有所帮助。
本文由TAR、soldier和wmw共同完成,转载本文请保留作者的ID。在这次经历中,有很多人给我们极大的帮助和鼓励。首先感谢北京世纪传人研修中心多位老师的大力援助,他们的帮助和指点让我们节约了大量的时间,使得我们最终能快速恢复数据。也感谢水木上的lastwinner和其他几位兄弟给我们的热情援助。而我们实验室的老师,在我们压力最大的几天中给了我们宽容,使得我们能全身心地投入到数据恢复工作中。感谢所有帮助、鼓励过我们的人!谢谢你们! 一、基本信息
1、计算机硬件配置
DFI双CPU主板 / 两个Intel PIII 450(100*4.5)4条256M内存 IBM 17G硬盘 1块 Maxtor 80G 硬盘 6块 Maxtor 40G 硬盘 2块 IBM 40G 硬盘 1块
Promise Ultra 100 TX2 ATA Controllers 两块
2、操作系统
Windows 2000 Advanced Server中文版(本机同时为实验室域服务器)
3、相关定义
主板上IDE控制器为IDEC0、IDEC1
第一块ATA卡上IDE控制器为IDEC2、IDEC3 第二块ATA卡上IDE控制器为IDEC4、IDEC5
其中用IDEC0-0表示IDEC0上的主盘,IDEC0-1表示IDEC0上的从盘,以下类同 6块80G硬盘组成的一组硬盘标记为DR0,6块盘分别为DR0-1,2,3,4,5,6 3块40G硬盘组成的一组硬盘标记为DR1,3块盘分别为DR1-1,2,3
4、计算机原始状态
C盘(17GB)是系统分区,在IBM 17G硬盘上,接IDEC0-0
D盘(400GB)是RAID-5卷,由Maxtor 80G硬盘6块组成,其顺序为1,2,3,4,5,
6(1,3,5为主盘Master;2,4,6为从盘Slave)分别接IDEC2,IDEC3,IDEC4 AD的日志文件安装在D盘(NTDS database log file path:D:\\System)
二、错误过程 1、问题起因
为测试RAID-5卷容错性、速度,以及对控制器的适应性
在已经安装了RAID-5卷DR0的服务器上用两块Maxtor 40G,一块IBM 40G硬盘来测试
2、操作过程(整个过程未更改硬盘跳线)
(1) 将IBM 40G接IDEC1-0,Maxtor 40G两块接IDEC5,用每块盘的500MB做一个1GB的RAID-5卷,拷一个800MB文件上去,比较800MB与D盘(DR0)上的原始文件,结果完全一样,关机。
(2) 将IBM 40G拔掉,开机,DR1显示“失败的重复”(Failed Redundancy)状态,可读取,比较先前考的800MB文件与D上的原始文件,结果完全一样,关机。
(3) 将IDEC4上的两块Maxtor 80G接到IDEC1(直接调整数据线连主板的端口),将IBM 40G用ATA33的数据线接IDEC4-0,开机,D盘(DR0),可读取,但1GB大的RAID-5卷仍显示(Failed Redundancy),找不到IBM 40G,关机。
(4) 将IBM 40G用ATA66的数据线接IDEC4-0,开机,系统显示找到新硬件,要求重启动,此时未重启动,继续实验。1GB大的RAID-5卷仍无法回到正常状态,删掉该RAID-5卷,重新用3块40GB硬盘上的5GB大空间生成带区卷,格式化的过程中失败,卷显示已产生;继续用3块40GB硬盘上的500MB来生成RAID-5卷,生成过程有错误,重新启动。 (5) 此次没有硬件变动,显示AD找不到文件无法启动,关机。
(6) 拔掉IBM 40G,两块Maxtor 40G,开机,显示AD无法启动,重新启动。
(7) 进AD恢复模式,发现6块Maxtor 80G全部显示脱机(offline),选激活任何一块,出
现信息对话框“内部错误,磁盘组没有有效的配置副本”(Internal Error - Disk Group has no valid configuration copies),硬盘无法联机,重新启动。
(8) 开机,选Last Known good配置文件启动,显示AD无法启动,关机。
(9) 将IDEC1上的两块Maxtor 80G插回IDEC4,开机,显示AD无法启动,关机。 以下所有操作均在AD恢复模式下进行,
(10) 将一块Maxtor 40G接IDEC5-0,6块Maxtor 80G拔掉电源、数据线,开机,磁盘管理显示状态为 《《该40G上有5GB大的带区卷(失败状态);500MB的RAID-5卷(失败状态)其余未分配;同时有两块硬盘显示“脱机”且“丢失”(Offline,Missing),两块硬盘上都有5GB的带区卷和500MB RAID-5卷;另外有6块硬盘是RAID-5卷,但“脱机”“丢失”(Offline,Missing)且该RAID-5卷显示“失败”(Failed)》》删掉5GB*3的带区卷和500MB*3的RAID-5卷,删掉两块丢失的40G硬盘,关机。
(11) 将另一块Maxtor 40G接入系统,将6块Maxtor 80G按原顺序(IDEC2,IDEC3,IDEC4)接入系统,开机,磁盘管理显示与第10步中《《 》》内相同的现象,同时还有6块磁盘是“外部”状态(Foreign),关机。
(12) 将第10步中只有未分配空间的40G硬盘接IDEC5-0,将400GB的RAID-5卷的第一块盘接入系统IDEC2-0,开机,显示6块硬盘“脱机”“丢失”“失败”,一个未分配空间的40G硬盘,一个80G硬盘“外部”。此时,依次在6块丢失的磁盘上点击“重新激活”命令,除第二块外均显示“未找到磁盘”对话框,(第二块选了此命令后,鼠标变为等待状态十数秒后恢复,再无其他反应),对显示“外部”的磁盘进行导入,导入向导未显示该磁盘上卷的分布,在继续时显示对话框“内部错误,磁盘组没有有效的配置副本” (Internal Error - Disk Group has no valid configuration copies),硬盘无法联机,关机。
至此,我们确认通过常规的方法已经无法访问数据,也许所有的数据都无法恢复,当时我们心理压力很大,是一种千古罪人的感觉。也从这一刻起,我们三人走上了辛苦的五天,每天想的只有动态磁盘。
三、相关资料
1、相关网址
window 2000中的动态磁盘是购买的Veritas公司的技术。网址是:www.veritas.com, 这个公司提供了一些说明和诊断工具。但是不好用。另外诊断结果是加密的, 必须发给他们公司进行分析。
2、微软TechNet
TechNet上有很多非常有用的内容,包括用户和微软工程师的交流,这里列出两篇 相关文章,其具体内容也附后。 (1)、微软知识库(Q2221)
Description of Disk Groups in Windows Disk Management (2)、微软知识库(Q294244)
Extending Hardware RAID Array May Cause Dynamic Unreadable/Offline Error
3、微软公开技术资料
(1)、Windows 2000 Support Tools
(2)、Windows 2000 Resource Kit (3)、微软的各种联机帮助
4、其他资料
http://www.sysinternals.com/ntw2k/utilities.shtml
这个Link也是水木上的兄弟提供的,里面有很多好的工具,可惜对我们这次修复没有大的帮助
四、修复软件说明
1、Dmdiag.exe,从Windows 2000 Resource Kit获得这是一个极为重要的软件,它可以对机器上所有硬盘提供诊断。对于动态硬盘将详细地给出描述动态卷的数据库的全部信息。这是我们进行分析动态卷的前提。
2、Dumpcfg.exe,从Windows 2000 Resource Kit获得
这个软件可以把机器上所有硬盘的配置信息给出,但是包含的信息没有dmdiag.exe多。应该说,这个软件给出的诊断只是dmdiag.exe的一个子集。
3、DskProbe.exe,从Windows 2000 Support Tools获得
这是一个极为好用的软件,它可以在window2000环境中,察看和修改硬盘的几乎所用信息。类似于DOS下的DISKEDIT,而且它提供了直接翻译FAT16和NTFS分区头信息的功能。
但可惜这个软件不能对硬盘的保留区部分(即最后8M左右的空间)进行操作,换句话说,这个软件不能操作动态磁盘的数据库。
4、Diskedit32,从Norton Uitilities获得这是经典之中的经典,功能超级强大,当用其它一切软件都绝望的时候,也就是我们祭起DE大法的时候。
5、Ghost,从Norton Ghost中获得
这也是经典软件,提供硬盘克隆功能。我们还比较了其他的多种硬盘拷贝软件,比如HD-Copy、出PQMagic的Powerquest出的DriveCopy等等,以及直接用Diskedit32来整盘复制。比较的结果发现Ghost可以在Intel815EP的机器上以2000MB/min速度整盘复制,在其他机器最低也在670MB/min,可其它软件最快也就200MB/min的速度。
以上这些软件是我们使用到的主要工具。 五、修复过程
1、 动态磁盘知识学习
400GB的RAID-5卷上的数据实在是太重要了,我们没人有胆量再去这6块硬盘上做什么写操作,只好到处找资料,开始认真的学习动态磁盘的相关知识,心里有了底才敢做进一步的操作。
2、 受损磁盘的分析
利用Dmdiag.exe,我们获得了所有相关10块硬盘的详细信息,这一点微软做得不错,没有置用户于死地,如果没有这些信息,我们的修复工作根本无法向前推进。结合已有的知识和获得的硬盘状态信息,我们对动态磁盘有了一个比较清晰地认识。所有的硬盘关键信息都存储在整个硬盘的前63扇区、分区的首扇区和硬盘最后1MB的动态磁盘数据库中。
3、 备份数据
“一朝被蛇咬,十年怕井绳”,虽然我们后来对自己的分析比较有把握,有了几种恢复方案,可大家拿起硬盘手都在发抖,哪里敢往上面写东西。最后是找中关村的老商家(我们的机器都是找他买的)帮忙,以每天20元的价格租了6块新的80GB硬盘,用Ghost的全盘备份了6块硬盘的内容。这里提一些细节,Ghost对大硬盘和动态磁盘的处理也不过关,不能克隆40GB以上的盘,完全相同的硬盘选了全盘克隆后,Ghost报告目标盘太小,然后退出;至于动态磁盘Ghost则干脆不工作。最后我们只好把动态磁盘的标志位0x42改成普通的0x06,然后备份前个扇区(克隆过程Ghost会修改它们),用整分区扇区拷贝功能克隆了含数据的分区,然后用Diskedit32将前扇区和后1MB的动态磁盘数据库拷到目标盘。其中Diskedit32可以读最后1MB的数据,却由于磁盘柱面、磁头、扇区的逻辑与物理对应关系问题无法将这1MB写回硬盘,最后是精心计算了大小,生成一个合适的数据文件,将该文件写到Diskedit32所能写的最后一个扇区,利用顺延关系将1MB的动态磁盘数据库写到了它正确的位置。
4、 数据恢复方案
彻底研究了动态磁盘的结构以后,我们提出了几种恢复方案,其中最简单,最直观的就是:利用新租来的6块80GB的盘,按照当初的方法,生成一个完全相同的400GB的RAID-5
卷,然后备份前63扇区和最后1MB数据,按照正确的顺序(我们从Dmdiag得到的结果是265431),写在原来的6个硬盘上。而其它的几种方案都需要手工计算修改动态磁盘数据库,难度相对大了很多。
5、 大难不死,必有后福
呵呵,煎熬了五天,老天终于开眼了,我们的修复方案一次成功,看着可爱的大大的RAID-5卷正常访问,觉着自己从崩溃的边缘又捡了一条命回来,呵呵,高兴啊。
呵呵,再次谢谢我们的老师,因为不敢公开大规模备份数据(sigh,80GB的硬盘克隆,太慢了,我们是同时开了6台机器一起干的),那天我们三个全部熬了通宵,结果被老师发现,但没有说什么,只是让我们赶快去休息。而且恢复数据后,老师把我们租硬盘的400元报销了,好幸福。
六、动态磁盘的详细描述
1、动态磁盘的总体描述
磁盘首扇区(就是0,0,1扇区),分区表中动态卷类似于硬盘上的一个分区,其分区类型标志为0x42,但具体信息和实际可能有出入;0x1B8处起的四个字节是磁盘签名。0,0,7扇区存了动态磁盘数据库中部分信息,主要是DiskID。硬盘的最后1MB内保存有动态磁盘的全部信息。(将硬盘分区或升级成动态磁盘时,在硬盘的最后8M多(该值随硬盘大小而变)的空间被保留下来,作为私有区,不能被用户正常访问。在私有区的最后1MB是动态磁盘的数据库。)
2、动态磁盘数据库的存储方式
最后1MB的空间总共有2048个扇区,下面以最后1MB的起点为0,来表述各扇区的功能。0扇区全为零。
1扇区和2扇区以TOCBLOCK为起始,存放着硬盘配置和状态纪录的存放为止,分别以config和log开头。
17扇区开始为硬盘配置信息,以VMDB开始,存放关于磁盘的总体信息。
18扇区开始,每个扇区存放4条配置纪录,这样的扇区共有1481个。以VBLK开头。 1498扇区开始,存放硬盘状态纪录,共有224个这样的扇区。以KLOG开头。 1856扇区和2047扇区存放着私有区头信息,两者完全一样,以PRIVHEAD开头。 2045和2046扇区重复TOCBLOCK部分的内容。其中1扇区和2046扇区一致,2扇区和2 045扇区一致。
3、动态磁盘的组织形式
首先所有磁盘在一个磁盘组内,系统会给这个磁盘组起名字和磁盘组id。(window2000目前只支持一个磁盘组,在以后的window中可能支持多个磁盘组。)在磁盘组内标明了物理磁盘。
采用卷的形式表明硬盘上的分区类型。比如条带卷、镜像卷等。
在卷下设丛(plex),体现在动态卷的可扩展性上,同一卷内,每扩展一次增加一个丛。 在丛内设子磁盘(subdisk),具体表示丛内的磁盘。实际上子磁盘就是我们在磁 盘管理其中看到的每一个有颜色的方块。
以上这些都将在磁盘配置信息中表示出来。磁盘配置信息可以理解为一个数据库, 它将各种信息按照不同的类型存放,供磁盘管理查询。
七、动态磁盘数据库的详细描述
1、PRIVHEAD区内容祥解
在PRIVHEAD区中,各字节的含义如下: 0x0~ 0x7 ASCII码的PRIVHEAD
0x8~ 0xB 校验信息,将本扇区所有字节加起来的值, 高位在前低位在后。(后文未加说明,都 是高位在前低位在后) 0xC~ 0xD 主版本号 0xE~ 0xF 升级版本号
0x10~ 0x13 含义不确定。但是在所有测试中旗帜是固 定的,都为01 C1 9C F8 0x14~ 0x17 更新时间 0x18~ 0x1B 全为零 0x1C~ 0x1F 更新序号
0x20~ 0x27 头信息所在的第一个位置 0x28~ 0x2F 头信息所在的第二个位置 0x30~ 0x6F diskid(以ASCII码形式存储) 0x70~ 0xAF hostid(以ASCII码形式存储) 0xB0~ 0xEF groupid(以ASCII码形式存储) 0xF0~ 组名(不确定具体结束的位置) 0x11F~0x122 共有区的起始位置 0x123~0x126 全为零
0x127~0x12A 共有区的大小 0x12B~0x12E 全为零
0x12F~0x132 私有区的起始位置 0x133~0x126 全为零 0x137~0x13A 私有区的大小 0x13B~0x13E 全为零 0x13F~0x142 TOC标志1 0x143~0x146 全为零 0x147~0x14A TOC标志2 0x14B~0x14E 配置段的数目 0x14F~0x152 日志段的数目 0x153~0x156 全为零 0x157~0x15A 配置段的大小 0x15B~0x15E 全为零 0x15F~0x162 日志段的大小 0x163~0x166 bootsig
0x167~0x176 diskset id(十六进制形式) 0x177~0x186 diskset id(十六进制形式)两段相同 0x187~0x1FF 全为零
2、VMDB内容祥解
在VMDB区中,各字节的含义如下: 0x0~ 0x3 ASCII码的VMDB 0x4~ 0x7 nblocks
0x8~ 0xB blksize 0xC~ 0xF hdrsize 0x10~ 0x11 含义不确定。 0x12~ 0x13 主版本号 0x14~ 0x15 升级版本号 0x16~ 0x34 组名
0x35~ 0x58 groupid(以ASCII码形式存储) 0x59~ 0x74 全为零 0x75~ 0x7C tid(config) 0x7D~ 0x84 tid(pending) 0x85~ 0x88 nvol(config)(卷数) 0x~ 0x8C nplex(config)(丛数) 0x8D~ 0x90 nsd(config)(子磁盘数) 0x91~ 0x94 ndm(config) 0x95~ 0x98 nda(config) 0x99~ 0xA0 全为零
0xA1~ 0xA4 nvol(pending)(卷数) 0xA5~ 0xA8 nplex(pending)(丛数) 0xA9~ 0xAC nsd(pending)(子磁盘数) 0xAD~ 0xB0 ndm(pending) 0xB1~ 0xB4 nda(pending) 0xA1~ 0xBC 全为零 0xBD~ 0xC4 timestamp
3、VBLK内容
在VBLK区中,各字节的含义如下:(因为VBLK区128字节为单位,以下说明中偏移 量只在128字节内。) 0x0~ 0x3 ASCII码的VBLK 0x4~ 0x7 blocks号
0x8~ 0xB record号(从4号开始) 0xC~ 0xF 含义不确定。 0x10~ 0x13 本块格式 0x14~ 0x17 本块实际大小 0x18以后是数据
说明1
当一个BLOCK不能满足需要时,可以占用多个BLOCK,在本块实际长度体现 说明2
每一个BLOCK可能有不同的格式 例如:
描述磁盘组为:0X845或0X835,差别在于groupid采用ASCII码还是十六进制。 描述卷信息为:0x51或0x2251,0x51为条带卷,0x2251为raid5卷,其他卷的类型号 需要进一步分析 描述丛信息为:0x1032 描述磁盘信息为:0x34 说明3
不同的类型,数据结果是不同的,种类繁多,需要一一鉴别。
4、动态磁盘数据库的连接关系
动态磁盘数据库的纪录是没有顺序的,寻找它们之间的关系, 需要从关键参数rid上分析。 例如:
卷信息中关键参数为:rid=0.1025 丛信息中关联参数为:assoc vol=0.1025 则这两条记录是直接相关的。 再比如:
丛信息中关键参数为:rid=0.1062
磁盘信息中关联参数为:assoc plex=0.1062 则这两条记录是直接相关的。
很好地分析无需记录中的相互关系,是理解数据库的基础。
5、动态磁盘数据库的又一关键参数
在磁盘描述中,diskid和disk类型中的rid是重要的。他们表达了磁盘的顺序。千万不要采用ide控制器的角度去分析磁盘的顺序,也不必去看磁盘签名。当采用跨区卷,条带卷,raid5卷时,磁盘的顺序与你连接的ide控制器的顺序无关。认真查看磁盘id是绝对必要的。
八、动态磁盘的举例
前面的表述很不具体,下面将一个磁盘诊断完整的内容表达出来,从中可以得到全部的详细信息,其中13和14是动态磁盘数据库的核心部分。(这个诊断说明是在一台工作正常的Windows2000 Professional上做出来的)
1、计算机名和操作系统
--- Computer name and OS version --- Computer name: FROLIC NT build: 2195 2、驱动器名
--- Drive letter to device name, QueryDosDevice() ---- D: \\Device\\CdRom1 F: \\Device\\CdRom0 A: \\Device\\Floppy0 C: \\Device\\HarddiskVolume1 3、物理磁盘描述
--- Physical Disk to disk type ---- PhysicalDrive0 \\Device\\Harddisk0\\DR0 (Signature 7e7d99b3) Basic Disk PhysicalDrive1 \\Device\\Harddisk1\\DR1 (Signature 15bc15bb) Dynamic Disk (LDM) 4、加载点
---------- Mount Points ----------
\\\\?\\Volume{561b6e86-0740-11d6-9951-806d6172696f}\\ \\?\\Volume{561b6e81-0740-11d6-9951-806d6172696f}\\ C:\\ \\ F:\\ \\\\?\\Vo
lume{f79ab757-07dd-11d6-8dcd-0080c8e1c455}\\ D:\\ \\\\?\\Volume{ 7c636b81-0831-11d6-8dd2-0080c8e1c455}\\ *** NO MOUNT POINTS *** \\\\?\\Volume{95fabaf3-0834-11d6-abb2-0080c8e1c455}\\ *** NO MO UNT POINTS *** \\\\?\\Volume{561b6e80-0740-11d6-9951-806d6172696f}\\ A:\\ 5、驱动程序
---------- LDM File Versions ----------
2195.2104.297.3 shp - C:\\WINNT\\System32\\dmadmin.exe 2195.2104.297.3 shp - C:\\WINNT\\System32\\dmconfig.dll 2195.2232.297.3 shp - C:\\WINNT\\System32\\dmdlgs.dll 2215.2215.297.3 shp - C:\\WINNT\\System32\\dmdskmgr.dll 2195.2104.297.3 shp - C:\\WINNT\\System32\\dmdskres.dll 2195.2104.297.3 shp - C:\\WINNT\\System32\\dmintf.dll 2195.2104.297.3 shp - C:\\WINNT\\System32\\dmremote.exe 2195.2778.297.3 shp - C:\\WINNT\\System32\\dmserver.dll 2195.2104.297.3 shp - C:\\WINNT\\System32\\dmutil.dll 2195.2104.297.3 shp - C:\\WINNT\\System32\\dmview.ocx 2195.2711.297.3 shp - C:\\WINNT\\System32\\drivers\\dmboot.sys 2195.2104.297.3 shp - C:\\WINNT\\System32\\drivers\\dmio.sys 2195.2104.297.3 shp - C:\\WINNT\\System32\\drivers\\dmload.sys 6、驱动器类型
-- Drive letter usage, GetLogicalDrives(),GetDriveType() -- A: Removable disk C: Fixed disk D: CD-ROM F: CD-ROM
7、DOS设备
---------- dosdev ----------
A: = \\Device\\Floppy0 [Removable] C: = \\Device\\HarddiskVolume1 [Fixed] D: = \\Device\\CdRom1 [CDRom] F: = \\Device\\CdRom0 [CDRom] 8、硬盘基本信息
---------- \\Device\\Harddisk0 ----------
\\Device\\Harddisk0\\DP(1)0x7e00-0x27fcb3400+2 (Device) \\Device\\Harddisk0\\DR0 (Device) \\Device\\Harddisk0\\Partition0
(SymbolicLink) -> \\Device\\Harddisk0\\DR0 \\Device\\Harddisk0\\Partition1
(SymbolicLink) -> \\Device\\HarddiskVolume1 ---------- \\Device\\Harddisk1 ----------
\\Device\\Harddisk1\\DP(1)0x7e00-0x7d818200+3 (Device) \\Device\\Harddisk1\\DR1 (Device) \\Device\\Harddisk1\\Partition0 (SymbolicLink) -> \\Device\\Harddisk1\\DR1 \\Device\\Harddisk1\\Partition1 (SymbolicLink) ->
\\Device\\HarddiskDmVolumes\\FrolicDg0\\Volume1 \\Device\\Harddisk1\\Partition2 (SymbolicLink) ->
\\Device\\HarddiskDmVolumes\\FrolicDg0\\Stripe1 \\Device\\Harddisk1\\Partition3 (SymbolicLink) ->
\\Device\\HarddiskDmVolumes\\FrolicDg0\\Volume2 \\Device\\Harddisk1\\Partition4 (SymbolicLink) ->
\\Device\\HarddiskDmVolumes\\FrolicDg0\\Volume3 9、设备
---------- \\Device ---------- 此块从简。略去
10、LDM分析(内容有删节) ---------- ldmsize 0 ---------- 2,495 Cylinders 255 Tracks/Cylinder 63 Sectors/Track 512 Bytes/Sector 12 MediaType 40,082,175 Sectors (total) 20,522,073,600 Bytes (total) 20,041,088 KB 19,571 MB 19.1 GB 0 StartingOffset 20,525,137,920 PartitionLength 0 HiddenSectors
0 PartitionNumber 0 PartitionType 0 BootIndicator 0 RecognizedPartition 0 RewritePartition 4 PartitionCount 7e7d99b3 Signature ---------- ldmsize 1 ---------- 1,023 Cylinders Tracks/Cylinder 63 Sectors/Track 512 Bytes/Sector 12 MediaType 4,124,736 Sectors (total) 2,111,8,832 Bytes (total) 2,062,368 KB 2,014 MB 2.0 GB 0 StartingOffset 2,111,8,832 PartitionLength 0 HiddenSectors 0 PartitionNumber 0 PartitionType 0 BootIndicator 0 RecognizedPartition
0 RewritePartition 4 PartitionCount 15bc15bb Signature 11、各磁盘之间关系的一种表达 ---------- kernel list ----------
Basic-info: version=21 maxspecio=512 maxio=512 maxkio=2048 Ktrans-state: dg=0.1029 pendtid=0.1136 state=committed #
# Kmem-regions: #
id 0: (size=100) id 1: (size=0) #
# Disks: (cnt: 2) #
Disk Harddisk1: dm=Disk1 dgiid=0.1029 darid=0.1027 dmrid=0.1027 kflag=() sflag=(sdopen)
vflag=(autoconfig|online)
publen=41120 privlen=4124736 maxiosize=2048 type=ntdisk info= log-copy 0: (size=224)
Disk Harddisk0: dm= dgiid=0.0 darid=0.1026 dmrid=0.0 kflag=() sflag=()
vflag=(autoconfig|offline)
publen=9223372036854775807 privlen=9223372036854775807 maxiosize= type=ntdisk info= #
# Devices: (cnt: 2) #
Device 5/5: rid=0.1062 dgiid=0.1029 letter= guid=0f2225b4-8746-48d7-a87 f-4ad5780be207 flags=(closed)
maxiosize=512 ncyl=1 ntrack=32 nsector= ptype=7 ioparms:
vi_read_preferred_io=65536 vi_read_unit_io=65536 vi_write_preferred_io=65536 vi_write_unit_io=65536 vi_read_nstream=1 vi_write_nstream=1 vi_pref_strength=10 vi_breakup_size=262144 vi_align_offset=0 vi_block_device=5/5
Device 7/7: rid=0.1099 dgiid=0.1029 letter= guid=41c3aced-a781-4762-a96 7-e49f1387f351 flags=(closed)
maxiosize=512 ncyl=1 ntrack=32 nsector= ptype=7 ioparms:
vi_read_preferred_io=65536 vi_read_unit_io=65536 vi_write_preferred_io=65536 vi_write_unit_io=65536 vi_read_nstream=2 vi_write_nstream=1 vi_pref_strength=10 vi_breakup_size=262144 vi_align_offset=0 vi_block_device=7/7 #
# Groups: (cnt: 2) #
Group FrolicDg0: iid=0.1029 id=ba8e05b4-75ca-4c0a-a31c-fc870920824a diskset=e2c6d700-08db-11d6-bb8b-806d6172696f configtid=0.1136 logsize=2 kflag=()
vflag=(created|notempdb|autoreimport|primary) # Group-Objects: (cnt: 16)
Volume Stripe1: rid=0.1088 assoc=0.0 len=409600 recover_seqno: 0
kflag=(disabled|rdwr|round-robin|except-det-sparse|writeback) sflag=()
Plex Stripe1-01: rid=0.1090 assoc=0.1088 psflag=() asinfo=(16 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00) columns=2 width=128 len=409600 kflag=(disabled|rdwr|no-resources) sflag=()
Subdisk Disk1-02: rid=0.1092 assoc=0.1090 psflag=() asinfo=(16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00) darid=0.1027 offset=2048063 len=204800 kflag=(enabled|rdwr|no-resources) sflag=()
Subdisk Disk2-01: rid=0.1094 assoc=0.1090 psflag=() asinfo=(16 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00) darid=0.0 offset=0 len=204800
kflag=(disabled|rdwr|no-resources) sflag=()
Volume Volume2: rid=0.1099 assoc=0.0 len=102400 recover_seqno: 0
kflag=(enabled|rdwr|round-robin|except-det-sparse|writeback) sflag=(busy|dirty)
Plex Volume2-01: rid=0.1101 assoc=0.1099 psflag=() asinfo=(16 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00) columns=1 width=9223372036854775807 len=102400 kflag=(enabled|rdwr|no-resources) sflag=(busy)
Subdisk Disk1-03: rid=0.1103 assoc=0.1101 psflag=() asinfo=(16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00) darid=0.1027 offset=2252863 len=102400 kflag=(enabled|rdwr|no-resources) sflag=(busy)
Plex Volume2-02: rid=0.1105 assoc=0.1099 psflag=() asinfo=(16 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00) columns=1 width=9223372036854775807 len=102400 kflag=(disabled|rdwr|no-resources) sflag=()
Subdisk Disk2-02: rid=0.1107 assoc=0.1105 psflag=() asinfo=(16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00) darid=0.0 offset=204800 len=102400 kflag=(disabled|rdwr|no-resources)
sflag=()
Volume Volume3: rid=0.1113 assoc=0.0 len=309217 recover_seqno: 0
kflag=(disabled|rdwr|round-robin|except-det-sparse|writeback) sflag=()
Plex Volume3-01: rid=0.1115 assoc=0.1113 psflag=() asinfo=(16 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00) columns=1 width=9223372036854775807 len=309217 kflag=(disabled|rdwr|no-resources) sflag=()
Subdisk Disk1-04: rid=0.1117 assoc=0.1115 psflag=() asinfo=(16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00) darid=0.1027 offset=2355263 len=102400 kflag=(enabled|rdwr|no-resources) sflag=()
Subdisk Disk2-03: rid=0.1119 assoc=0.1115 psflag=() asinfo=(16 00 00 00 00 00 00 00 00 144 01 00 00 00 00 00) darid=0.0 offset=307200 len=206817 kflag=(disabled|rdwr|no-resources) sflag=()
Volume Volume1: rid=0.1062 assoc=0.0 len=2048000 recover_seqno: 0
kflag=(enabled|rdwr|round-robin|except-det-sparse|writeback) sflag=(busy)
Plex Volume1-01: rid=0.10 assoc=0.1062 psflag=()
asinfo=(16 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00) columns=1 width=9223372036854775807 len=2048000 kflag=(enabled|rdwr|no-resources) sflag=(busy)
Subdisk Disk1-01: rid=0.1066 assoc=0.10 psflag=() asinfo=(16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00) darid=0.1027 offset=63 len=2048000 kflag=(enabled|rdwr|no-resources) sflag=(busy) # End-group: FrolicDg0 Group NULLDG: iid=0.0 id=
diskset=00000000-0000-0000-0000-000000000000 configtid=0.0 logsize=0 kflag=()
vflag=(created|notempdb|noautoreimport|secondary) # Group-Objects: (cnt: 0) # End-group: NULLDG
12、各磁盘之间关系的另一种表达 这种表达清晰明了 ---------- query -ht ---------- Disk group: FrolicDg0
DG NAME NCONFIG NLOG MINORS GROUP-ID DM NAME DEVICE TYPE PRIVLEN PUBLEN STATE
V NAME USETYPE KSTATE STATE LENGTH READPOL LEX
PREFP PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/ WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVIC E MODE
dg FrolicDg0 all all 0 ba8e05b4-75ca-4c0a-a31c- fc870920824a
dm Disk1 Harddisk1 ntdisk 2048 4112577 - dm Disk2 - - - - NODEVICE
v Stripe1 gen DISABLED ACTIVE 409600 SELECT - pl Stripe1-01 Stripe1 DISABLED NODEVICE 409600 STRIPE 2/128 RW
sd Disk1-02 Stripe1-01 Disk1 2048000 204800 0/0 Hardd isk1 ENA
sd Disk2-01 Stripe1-01 Disk2 0 204800 1/0 - NDEV
v Volume1 gen ENABLED ACTIVE 2048000 SELECT - pl Volume1-01 Volume1 ENABLED ACTIVE 2048000 CONCAT - RW
sd Disk1-01 Volume1-01 Disk1 0 2048000 0 Hardd isk1 ENA
v Volume2 gen ENABLED ACTIVE 102400 SELECT - pl Volume2-01 Volume2 ENABLED ACTIVE 102400 CONCAT - RW
sd Disk1-03 Volume2-01 Disk1 2252800 102400 0 Hardd isk1 ENA
pl Volume2-02 Volume2 DISABLED NODEVICE 102400 CONCAT - RW
sd Disk2-02 Volume2-02 Disk2 204800 102400 0 - NDEV
v Volume3 gen DISABLED ACTIVE 309217 SELECT - pl Volume3-01 Volume3 DISABLED NODEVICE 309217 CONCAT - RW
sd Disk1-04 Volume3-01 Disk1 2355200 102400 0 Hardd isk1 ENA
sd Disk2-03 Volume3-01 Disk2 307200 206817 102400 - NDEV
---------- query -l ---------- Disk group: FrolicDg0
DG NAME NCONFIG NLOG MINORS GROUP-ID DM NAME DEVICE TYPE PRIVLEN PUBLEN STATE
V NAME USETYPE KSTATE STATE LENGTH READPOL PREFP LEX
PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/ WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVIC E MODE Group: FrolicDg0
info: dgid=ba8e05b4-75ca-4c0a-a31c-fc870920824a diskset: id=e2c6d700-08db-11d6-bb8b-806d6172696f copies: nconfig=all nlog=all
Disk: Disk1
info: diskid=bc9afebb-5229-4f55-a3d3-a3295ee7e5da assoc: device=Harddisk1 type=ntdisk flags: autoconfig
device: path=\\Device\\Harddisk1\\Partition0 devinfo: publen=4112577 privlen=2048 Disk: Disk2
info: diskid=429e116e-de3a-4228-82b4-7d63cf637f
assoc: nodevice (last diskset: 00000000-0000-0000-0000-000000000000)
Volume: Stripe1
info: len=409600 guid=eaaa4411-fca2-4e0d-9691-d51857ab487e type: usetype=gen parttype=7
state: state=ACTIVE kernel=DISABLED assoc: plexes=Stripe1-01
policies: read=SELECT (round-robin) exceptions=GEN_DET_SPARSE flags: closed writeback logging: type=NONE
device: path=\\Device\\HarddiskDmVolumes\\FrolicDg0\\Stripe1 Plex: Stripe1-01 info: len=409600
type: layout=STRIPE columns=2 width=128
state: state=ACTIVE kernel=DISABLED io=read-write assoc: vol=Stripe1 sd=Disk1-02,Disk2-01
flags: complete nodevice Subdisk: Disk1-02
info: disk=Disk1 offset=2048000 len=204800
assoc: vol=Stripe1 plex=Stripe1-01 (column=0 offset=0) flags: enabled
device: device=Harddisk1 path=\\Device\\Harddisk1\\Partition0 Subdisk: Disk2-01
info: disk=Disk2 offset=0 len=204800
assoc: vol=Stripe1 plex=Stripe1-01 (column=1 offset=0) flags: disabled iofail device: device=(no device) Volume: Volume1
info: len=2048000 guid=0f2225b4-8746-48d7-a87f-4ad5780be207 type: usetype=gen parttype=7
state: state=ACTIVE kernel=ENABLED assoc: plexes=Volume1-01
policies: read=SELECT (round-robin) exceptions=GEN_DET_SPARSE flags: busy writeback logging: type=NONE
device: path=\\Device\\HarddiskDmVolumes\\FrolicDg0\\Volume1 Plex: Volume1-01 info: len=2048000 type: layout=CONCAT
state: state=ACTIVE kernel=ENABLED io=read-write assoc: vol=Volume1 sd=Disk1-01
flags: busy complete Subdisk: Disk1-01
info: disk=Disk1 offset=0 len=2048000 assoc: vol=Volume1 plex=Volume1-01 (offset=0) flags: enabled busy
device: device=Harddisk1 path=\\Device\\Harddisk1\\Partition0 Volume: Volume2
info: len=102400 guid=41c3aced-a781-4762-a967-e49f1387f351 type: usetype=gen parttype=7
state: state=ACTIVE kernel=ENABLED assoc: plexes=Volume2-01,Volume2-02
policies: read=SELECT (round-robin) exceptions=GEN_DET_SPARSE flags: busy writeback logging: type=NONE
device: path=\\Device\\HarddiskDmVolumes\\FrolicDg0\\Volume2 Plex: Volume2-01 info: len=102400 type: layout=CONCAT
state: state=ACTIVE kernel=ENABLED io=read-write assoc: vol=Volume2 sd=Disk1-03 flags: busy complete Subdisk: Disk1-03
info: disk=Disk1 offset=2252800 len=102400 assoc: vol=Volume2 plex=Volume2-01 (offset=0) flags: enabled busy
device: device=Harddisk1 path=\\Device\\Harddisk1\\Partition0 Plex: Volume2-02 info: len=102400 type: layout=CONCAT
state: state=ACTIVE kernel=DISABLED io=read-write assoc: vol=Volume2 sd=Disk2-02 flags: complete nodevice recover Subdisk: Disk2-02
info: disk=Disk2 offset=204800 len=102400 assoc: vol=Volume2 plex=Volume2-02 (offset=0) flags: disabled iofail device: device=(no device) Volume: Volume3
info: len=309217 guid=efb0544c-51f7-4125-a544-3e61bb159653 type: usetype=gen parttype=7
state: state=ACTIVE kernel=DISABLED assoc: plexes=Volume3-01
policies: read=SELECT (round-robin) exceptions=GEN_DET_SPARSE flags: closed writeback logging: type=NONE
device: path=\\Device\\HarddiskDmVolumes\\FrolicDg0\\Volume3 Plex: Volume3-01 info: len=309217 type: layout=CONCAT
state: state=ACTIVE kernel=DISABLED io=read-write
assoc: vol=Volume3 sd=Disk1-04,Disk2-03 flags: complete nodevice Subdisk: Disk1-04
info: disk=Disk1 offset=2355200 len=102400 assoc: vol=Volume3 plex=Volume3-01 (offset=0) flags: enabled
device: device=Harddisk1 path=\\Device\\Harddisk1\\Partition0 Subdisk: Disk2-03
info: disk=Disk2 offset=307200 len=206817
assoc: vol=Volume3 plex=Volume3-01 (offset=102400) flags: disabled iofail device: device=(no device) 13、磁盘头信息 这是核心
---------- disk header Harddisk0 ---------- dmdiag: ERROR: scan operation failed: Format error in disk private region ---------- disk header Harddisk1 ---------- diskid: bc9afebb-5229-4f55-a3d3-a3295ee7e5da
group: name=FrolicDg0 id=ba8e05b4-75ca-4c0a-a31c-fc870920824a flags: private autoimport
import: bootsig=2122160563 hostid=1b77da20-c717-11d0-a5be-00a0c91db73c
diskset: id=e2c6d700-08db-11d6-bb8b-806d6172696f version: 2.11 iosize: 512
public: slice=0 offset=63 len=4112577 private: slice=0 offset=4122688 len=2048 update: seqno=0.21 time=744740256 headers: 2047 1856 configs: count=1 len=1481 logs: count=1 len=224 tocblks: 0 tocs: 1/2046 Defined regions:
config priv 000017-001497[001481]: copy=01 offset=000000 enabled log priv 001498-001721[000224]: copy=01 offset=000000 enabled 14、磁盘配置信息 这是核心
---------- disk config Harddisk0 ---------- dmdiag: ERROR: scan operation failed: Format error in disk private region ---------- disk config Harddisk1 ---------- #Config copy 01
#Header nblocks=5924 blksize=128 hdrsize=512 #flags=0x0100 (CLEAN) #version: 4/10
#timestamp: 126554824192781808
#dgname: FrolicDg0 dgid: ba8e05b4-75ca-4c0a-a31c-fc870920824a #config: tid=0.1136 nvol=4 nplex=5 nsd=7 ndm=2 nda=0 #pending: tid=0.1136 nvol=4 nplex=5 nsd=7 ndm=2 nda=0 #
#Block 4: flag=0x0000 ref=1 offset=0 frag_size=67 #Block 5: flag=0x0000 ref=2 offset=0 frag_size=48 #Block 6: flag=0x0000 ref=4 offset=0 frag_size=80 #Block 9: flag=0x0000 ref=7 offset=0 frag_size=50 #Block 10: flag=0x0000 ref=16 offset=0 frag_size=59 #Block 11: flag=0x0000 ref=27 offset=0 frag_size=59 #Block 14: flag=0x0000 ref=5 offset=0 frag_size=48 #Block 15: flag=0x0000 ref=6 offset=0 frag_size=80 #Block 16: flag=0x0000 ref=13 offset=0 frag_size=50 #Block 17: flag=0x0000 ref=14 offset=0 frag_size=52 #Block 18: flag=0x0000 ref=10 offset=0 frag_size=48 #Block 20: flag=0x0000 ref=21 offset=0 frag_size=50 #Block 22: flag=0x0000 ref=23 offset=0 frag_size=50 #Block 25: flag=0x0000 ref=31 offset=0 frag_size=50 #Block 26: flag=0x0000 ref=32 offset=0 frag_size=50 #Block 27: flag=0x0000 ref=8 offset=0 frag_size=80 #Block 28: flag=0x0000 ref=9 offset=0 frag_size=52 #Block 32: flag=0x0000 ref=17 offset=0 frag_size=80 #Block 33: flag=0x0000 ref=18 offset=0 frag_size=48 #
#Record 1: type=0x0845 flags=0x0000 gen_flags=0x0004 size=67
#Blocks: 4
Group: FrolicDg0 rid=0.1025 update=0.1130 id: dgid=ba8e05b4-75ca-4c0a-a31c-fc870920824a diskset: id=e2c6d700-08db-11d6-bb8b-806d6172696f copies: nconfig=all nlog=all minors: >= 0
#Record 2: type=0x0032 flags=0x0000 gen_flags=0x0004 size=48 #Blocks: 5
Plex: Volume2-02 rid=0.1105 update=0.1136 type: layout=CONCAT state: state=ACTIVE assoc: vol=0.1099 flags: recover
#Record 4: type=0x0051 flags=0x0000 gen_flags=0x0004 size=80 #Blocks: 6
Volume: Volume1 rid=0.1062 update=0.1134
info: len=2048000 guid=0f2225b4-8746-48d7-a87f-4ad5780be207 type: parttype=7 usetype=gen state: state=ACTIVE policies: read=SELECT flags: writeback
#Record 5: type=0x0032 flags=0x0000 gen_flags=0x0004 size=48 #Blocks: 14
Plex: Volume1-01 rid=0.10 update=0.1134 type: layout=CONCAT
state: state=ACTIVE assoc: vol=0.1062 flags:
#Record 6: type=0x0051 flags=0x0000 gen_flags=0x0004 size=80 #Blocks: 15
Volume: Volume2 rid=0.1099 update=0.1134
info: len=102400 guid=41c3aced-a781-4762-a967-e49f1387f351 type: parttype=7 usetype=gen state: state=ACTIVE policies: read=SELECT flags: writeback
#Record 7: type=0x0033 flags=0x0000 gen_flags=0x0004 size=50 #Blocks: 9
Subdisk: Disk1-01 rid=0.1066 updated=0.1067 info: disk=0.1027 offset=0 len=2048000 hidden=0 assoc: plex=0.10 (column=0 offset=0) flags:
#Record 8: type=0x0051 flags=0x0000 gen_flags=0x0004 size=80 #Blocks: 27
Volume: Stripe1 rid=0.1088 update=0.1124
info: len=409600 guid=eaaa4411-fca2-4e0d-9691-d51857ab487e type: parttype=7 usetype=gen state: state=ACTIVE policies: read=SELECT flags: writeback
#Record 9: type=0x1032 flags=0x0000 gen_flags=0x0004 size=52 #Blocks: 28
Plex: Stripe1-01 rid=0.1090 update=0.1124 type: layout=STRIPE columns=2 width=128 state: state=ACTIVE assoc: vol=0.1088 flags:
#Record 10: type=0x0032 flags=0x0000 gen_flags=0x0004 size=48 #Blocks: 18
Plex: Volume2-01 rid=0.1101 update=0.1134 type: layout=CONCAT state: state=ACTIVE assoc: vol=0.1099 flags:
#Record 13: type=0x0033 flags=0x0000 gen_flags=0x0004 size=50 #Blocks: 16
Subdisk: Disk1-02 rid=0.1092 updated=0.1095
info: disk=0.1027 offset=2048000 len=204800 hidden=0 assoc: plex=0.1090 (column=0 offset=0) flags:
#Record 14: type=0x0833 flags=0x0000 gen_flags=0x0004 size=52 #Blocks: 17
Subdisk: Disk2-01 rid=0.1094 updated=0.1095 info: disk=0.1085 offset=0 len=204800 hidden=0 assoc: plex=0.1090 (column=1 offset=0)
flags:
#Record 16: type=0x0034 flags=0x0000 gen_flags=0x0004 size=59 #Blocks: 10
Disk: Disk2 rid=0.1085 updated=0.1130
assoc: diskid=429e116e-de3a-4228-82b4-7d63cf637f detached flags:
#Record 17: type=0x0051 flags=0x0000 gen_flags=0x0004 size=80 #Blocks: 32
Volume: Volume3 rid=0.1113 update=0.1124
info: len=309217 guid=efb0544c-51f7-4125-a544-3e61bb159653 type: parttype=7 usetype=gen state: state=ACTIVE policies: read=SELECT flags: writeback
#Record 18: type=0x0032 flags=0x0000 gen_flags=0x0004 size=48 #Blocks: 33
Plex: Volume3-01 rid=0.1115 update=0.1124 type: layout=CONCAT state: state=ACTIVE assoc: vol=0.1113 flags:
#Record 21: type=0x0033 flags=0x0000 gen_flags=0x0004 size=50 #Blocks: 20
Subdisk: Disk1-03 rid=0.1103 updated=0.1108
info: disk=0.1027 offset=2252800 len=102400 hidden=0
assoc: plex=0.1101 (column=0 offset=0) flags:
#Record 23: type=0x0033 flags=0x0000 gen_flags=0x0004 size=50 #Blocks: 22
Subdisk: Disk2-02 rid=0.1107 updated=0.1108
info: disk=0.1085 offset=204800 len=102400 hidden=0 assoc: plex=0.1105 (column=0 offset=0) flags:
#Record 27: type=0x0034 flags=0x0000 gen_flags=0x0004 size=59 #Blocks: 11
Disk: Disk1 rid=0.1027 updated=0.1120
assoc: diskid=bc9afebb-5229-4f55-a3d3-a3295ee7e5da flags:
#Record 31: type=0x0033 flags=0x0000 gen_flags=0x0004 size=50 #Blocks: 25
Subdisk: Disk1-04 rid=0.1117 updated=0.1120
info: disk=0.1027 offset=2355200 len=102400 hidden=0 assoc: plex=0.1115 (column=0 offset=0) flags:
#Record 32: type=0x0033 flags=0x0000 gen_flags=0x0004 size=50 #Blocks: 26
Subdisk: Disk2-03 rid=0.1119 updated=0.1120
info: disk=0.1085 offset=307200 len=206817 hidden=0 assoc: plex=0.1115 (column=0 offset=102400)
flags:
九、动态磁盘使用建议
1、不要将RAID-5动态卷中的一块硬盘移走,然后再直接移回,根据我们的测试结果,Windows2000有时会将数据已经不一致的盘直接组合使用,导致数据混乱。若需要这样做,最好将头63扇区和后面2048扇区填零,让系统认为是新硬盘来处理。
2、不要在系统中建立过于复杂的磁盘关系,Windows2000的动态磁盘可能还不完善。 3、不要在非实验环境中练习动态卷的使用。 4、要经常作备份。
5、确定自己确实需要时再考虑动态卷。否则会给今后带来麻烦
微软知识库(Q2221)
Description of Disk Groups in Windows Disk Management
------------------------------------------- The information in this article applies to: Microsoft Windows 2000 Advanced Server Microsoft Windows 2000 Datacenter Server Microsoft Windows 2000 Professional Microsoft Windows 2000 Server
------------------------------------------- SUMMARY
This article describes Dynamic Disks and Disk Groups in Windows. MORE INFORMATION
Windows uses a new feature called Dynamic Disks, which introduces the concept of Disk Groups. Disk Groups help you organize Dynamic Disks and help to prevent data loss. Windows allows only one Disk Group per computer (this may change).
Disk Groups can organize storage when you use Veritas LDM-Pro.
A Disk Group uses a name consisting of the computer name plus a suffix of Dg0. If you use LDM-Pro, the suffix can be incremental, such as Dg1 or Dg2. To view the name of your disk group, see the following registry
entry: HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\dmio\\Boot Info\\Primary Disk Group\\Name
Physical Management of Disks (Adding, Removing, Moving) Basic Disks
Basic disks store their configuration information in the master boot record (MBR), which is stored on the first sector of the disk. The configuration of a Basic disk consists of the partition information on the disk. Basic Fault Tolerant sets inherited from Windows NT 4.0 are based on these simple partitions, but they extend the configuration with some simple partition relationship information, which is stored on the first track of the disk. Dynamic Disks
Dynamic disks are associated with Disk Groups.
A Disk Group is a collection of disks managed as a collection. Each disk in a Disk Group stores replicas of the same configuration data. This configuration data is stored in a 1 megabyte (MB) region at the end of each Dynamic disk.
The information for Simple, Mirrored, RAID-5, Striped, or Spanned volumes is contained in a private database that is stored at the end of each Dynamic Disk. Each private database replicates across all Dynamic Disks for fault tolerance. Since the information about the disks is contained on the disks, you can move the disk to another computer or install another disk without losing this information.
All Dynamic Disks in a computer are members of the same Disk Group. Configuring New Dynamic Disks In Windows, you can convert a Basic disk to a Dynamic disk. When you convert a disk, Windows looks for any
existing partitions or fault tolerance structures on the disk. Windows then initializes the disk with a Disk Group identity and a copy of the current Disk Group configuration. Windows also adds Dynamic volumes to the configuration, which represents the old partitions and fault tolerant structures on the disk.
If there are no pre-existing Dynamic/Online disks, then you must create a new Disk Group. If there are existing Dynamic/Online disks, then you must add the converted disk to the existing Disk Group. Brand new disks are Basic disks with no partitions. When you use the Disk Management MMC utility, you are prompted to convert any Basic disks to Dynamic disks. Moving Basic disks
You can move both Basic and Dynamic disks from one computer to another. For a Basic disk, you need to physically remove the disk from the computer, install it in the new computer, and then either reboot, or use the Rescan Disks command on the Action menu of the Disk Management MMC utility. Partitions on the Basic disk are available immediately. Microsoft recommends that you move any disks containing Basic fault tolerant sets as a group.
NOTE : When you move Basic fault tolerant sets from a Windows NT 4.0 computer, you must save the configuration to a floppy disk, and then use the Disk Management MMC utility to restore the hard disk.
If you remove a disk from a computer, and then you install a different disk using the same hardware address (for example, with the same SCSI target ID and logical unit number), Windows may not recognize the disk. If the Disk Management MMC utility or the file system writes to that disk, the contents of the new disk may be damaged. With some types of disks, such as PCMCIA or IEEE 1394 disks, Windows recognizes the removal and the insertion of the new disk. However, SCSI and IDE disks have no hardware notification, so these disks can be damaged. There are cases where removals of SCSI and IDE disks is recognized automatically. However, Microsoft recommends that you do not rely on automatic recognition for these types of disks. Moving Dynamic Disks
Removing disks from the original computer: When you remove a Dynamic disk from a computer, information about it and its volumes is retained by the remaining online Dynamic disks. The removed disk is displayed in the Disk anagement MMC utility as a \"Dynamic/Offline\" disk with the name \"Missing.\"
You can remove this Missing disk entry by removing all volumes or mirrors on that disk, and then use the Remove Disk menu item associated with that disk.
You must have at least one online Dynamic disk to retain information about Missing disks and their volumes. When you physically remove the last Dynamic disk, you lose the information and the Missing disks are no longer displayed in the Disk Management MMC utility.
Connecting disks to a new computer: After you physically connect the disks to the new computer, click Rescan Disks on the Action menu in the Disk Management MMC utility. When you physically connect a new Dynamic disk, it is displayed in the Disk Management MMC utility as Dynamic/Foreign.
Dynamic/Foreign disks are either brought online automatically, or you may need to manually convert them to Dynamic/Online, and then activate their volumes. Whether the disk is converted automatically or you need to convert it manually, depends on the entry in the following registry
key:
HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Logical Disk Manager:Foreign Import Control = [REG_SZ]
If you set this key to \"Auto,\" or leave it blank, foreign disks are configured automatically. If you set this key to \"Manual,\" you must configure foreign disks manually. If you set this key to \"Boot,\" foreign disks are configured automatically when you restart your computer. \"Importing\" Foreign disks:
If you move one Disk Group to another computer that contains its own Disk Group, the Disk Group you moved
is marked as Foreign until you manually import it into the existing group.
To use Foreign/Dynamic disks, use the \"Import Foreign Disks\" operation associated with one of the disks. The manual operation lists one or more Disk Groups, identified by the name of the computer where they were created. If you expand the details on a Disk Group, it lists the locally-connected disks that are members. Click the appropriate Disk Group, and then click OK . You can then view the dialog box that lists volumes that were found in the Disk Group, along with some indication of the status of those volumes.
Since volumes can span multiple disks, using simple disk spanning, striping, mirroring, or RAID-5 redundancy mechanisms, the display status of a volume in the Import Foreign Disks dialog box can become complicated if some of the disks have not been moved. Another complication may be moving a disk, and then moving additional disks at a later time. This is supported, but can be complicated.
For example, if one active mirror of a volume is moved from one system to another, and then another is moved later, one of the two mirrors appears to be up-to-date on one system, and the other mirror appears up-to-date on the other system. When the two mirrors are put together on the same system, they both appear up-to-date, but they have different contents. LDM handles this
particular situation by using the mirror that was moved first.
NOTE : Given the complexity of the issues surrounding partial moves, it is recommended that you move all the disks at the same time. The operation of Import Foreign Disks differs slightly, depending on whether there are pre-existing online Dynamic disks on the target computer. If there are no pre-existing online Dynamic disks, then the Disk Group is brought online directly as it is, except that any unmoved volumes are deleted, along with any unmoved disks that have no volumes defined. If only some disks of a volume are moved, the remaining disks become Missing disks. The disk group retains the same identity that it had before. If there are pre-existing online Dynamic disks, then the configuration information is read from those disks, and the configuration data (with unrelated information removed, as in the no pre-existing disk case) is merged into the existing online disk group. The disks then become members of the existing Disk Group, instead of members of their original Disk Group.
States of volumes after an Import:
The state of a volume after import depends upon whether the volume is simple, mirrored, RAID-5, or spans disks in some way (simple striping behaves like spanning in this respect). It also depends on whether the volume is moved
in its entirety, or partially, and on whether part of a volume is moved in one step and the rest is moved in a later step. The state depends either on changes that might have been made to the configuration of a partially moved volume
on the original computer or on the new computer. When all disks that contain parts of a volume are moved from one computer to another, all at the same time, the state of a volume after the import should be identical to the original
state of the volume. All simple volumes on any moved disks will be recovered to their original state.
With a non-redundant volume that spans multiple disks, if some, but not all disks are moved from
one system to another, the volume will be disabled on import (it will also become disabled on the original system). As long as the volume is not deleted on either the original or the target system, the remaining disks can be moved later. When all disks are finally moved over, the volume will be recovered to its original state.
In an alternative case, start by moving part of a non-redundant volume from one computer to another, and then delete the volume on the original or the target computer. If the space used by the deleted volume is reused by a new volume, when the remaining disks are moved over, the volume is deleted. If the space used by the deleted volume remains free (or the space is reused by a volume, and that new volume is then deleted, making the space free again), then the volume is put back on that free space (after you move the remaining disks). However, LDM cannot distinguish between the case where the space was reused and then freed again (which means that the original volume's data has probably been changed), and the case where the space was not reused (which means that the original volume data is still intact).
To signal this, LDM leaves the volume in a Failed state. To restart the volume, use \"Reactivate Volume\" on the volume's menu. RAID-5 behaves in a manner similar to non-redundant volumes, except that the volume may become online on the new system after moving all but one disk, or may remain online on the original system after moving
just one disk. Whether it remains online depends upon whether the parity is known to be valid. Parity starts out as invalid when a RAID-5 volume is first created, since the parity blocks must be computed, which takes some amount of time. Parity is also marked as invalid after a system crash, because an in-progress write (at the time of the crash) may leave a discrepancy between parity blocks and the corresponding data blocks. If the parity of a RAID-5 volume is valid, then one disk can be missing and the RAID-5 volume will still become (or remain) online. If parity is not valid, then all parts of the RAID-5 volume must be available for the volume to become (or to remain) online. In the event of all but one disk of a RAID-5 volume moving from one system to another,
and the space on that remaining disk (on the original system) is then reused for a new volume, the RAID-5 volume is retained, but a new, special, Missing disk (which corresponds to no physical disk) is created to \"store\" the region that has now been orphaned. The state of a partially moved mirrored volume depends upon the state of the original mirror. Mirrors are listed in the LDM configuration as either up-to-date or out-of-date. If a mirror that is marked up-to-date is moved, then the volume will
come up online automatically. If a mirror that is marked out-of-date is moved, then the volume will come up in the failed state (though it can be started using Reactivate Volume.
If both mirrors of a volume start as up-to-date, and one is moved, then the moved mirror becomes marked out-of-date
on the original computer, and the unmoved mirror becomes marked out-of-date on the target computer. At that point, if the second mirror is then moved to the target computer, both mirrors are listed as up-to-date even though they may be different. Different file updates may have occurred on each computer. In that case, the target system favors the mirror that it already has and overwrites the more recently added mirror with the contents of the mirror that was moved first. If an out-of-date mirror is moved from one computer to another, and later an up-to-date mirror of the same volume is moved, then the volume will be online automatically.
If one up-to-date mirror is moved first, the mirror on the resulting Missing disk (for the non-moved mirror) can be removed and reallocated to another disk. This leaves a fully mirrored volume on the target computer.
In this case, if the second original mirror is moved over, it conflicts in a way that cannot be resolved readily. When this happens, the second mirror comes over as a new volume.
WARNING : Use caution when removing and then moving disks with volume mirrors. Consider two disks that have mirrors of a volume. If you remove one disk from a computer, the mirror on that disk becomes marked as out-of-date. However, the configuration, which is stored on that disk, cannot be updated, so the copy of the configuration stored on that disk still lists that mirror as up-to-date.
Then remove the second disk. At that point, you have two removed disks: one lists both mirrors as up-to-date; the other lists its mirror as up-to-date and the mirror on the other disk as out-of-date. However, the disk that lists the other mirror as out-of-date was updated more recently.
Whether the first disk or the second disk is added to the target computer first (followed by the second disk), and even
if both disks are added at the same time, one of the mirrors will be considered out-of-date on the target system.
onsequently,
the volume will not be redundant until you perform a recovery operation. This recovery operation copies all blocks from the mirror that is up-to-date to the mirror that is out-of-date. This can be quite expensive (for a 10GB volume, this would copy 10GB between disks). The reason that the recovery is needed, even when both disks are moved
over at the same time, is that the most recently updated configuration copy (the one listing the other mirror as out-of-date) is favored over a less recently updated configuration copy. It is better to remove all disks to at the same time, as well as to add all disks at the same time. With SCSI disks, this is
fairly easy: stop using the disks, and then defer the \"Rescan disks\" request until after all disks are removed. When
you add the disks to the new computer, again defer the \"Rescan disks\" request until all disks are
physically inserted.
With PCMCIA disks, or other disks that trigger direct operating system recognition of removals, this can be more difficult.
When you pull a disk, LDM is signaled and processes the disk request. It is difficult to remove all disks at exactly the same time. However, there is some delay in LDM's operation, so if you remove the disks quickly (within a few seconds), then there should not be a problem.
With any kind of disk, the safest way to move them is to power off the original system before removing the disks, and to then power off the target system before adding the disks.
Advanced reading: Disk Group configuration copies The complete Disk Group configuration is replicated on each member disk. This configuration data is stored in configuration copies. These copies take up the bulk of the 1MB space that LDM reserves for its use on each disk. This amount of space is required so that it can hold configuration data for a large number of Dynamic disks and volumes. Every update to the configuration of a Disk Group is written to the
configuration copies of all online disks in the disk group. If the system crashes during an update, and only some copies were written, then a best copy is chosen based on which copy appears to have the most recent update. Any copies
that differ from that best copy are updated with the most recent configuration data.
It is possible for a section of configuration data to become unusable. For example, a bad sector can yield a write error if the revector table of the disk has filled.
In such a case, that configuration data becomes \"failed\" and updates to that copy end. As long as there are other non-failed copies on other online Dynamic disks, this does not present a significant problem, since the copies are stored identically on each disk, and the other configuration copies represent the failed copy.
This does mean, however, that the configuration copy of a single disk should not be totally trusted. For example, a
transient error can cause write errors to a configuration copy. At that point, LDM will stop updating the copy, but since the error is transient, a later attempt to read the configuration copy will not necessarily encounter an error. For example, when a single disk is moved from one system to another, the target system might read an out-of-date configuration copy that does not reflect the state of the volumes on that disk.
Such cases of out-of-date configuration copies are very rare, but they are possible. This is another reason why it is a good idea to move all disks at the same time, LDM chooses the most up-to-date of a set of configuration copies, rather than presuming the validity of one copy. A more likely problem is that a bad sector of a configuration copy is persistent, or is first encountered on a read when no revector data is available. In that case, LDM encounters an error when it tries to read the configuration copy. As long as there is a valid configuration copy on another Dynamic disk from the same Disk Group at the same update level as the disk with the bad copy, everything runs without error.
----------------------------------------------------------------------- Additional query words : ldm veritas Keywords : kbenv kbtool Issue type : kbinfo
微软知识库(Q294244)
Extending Hardware RAID Array May Cause Dynamic Unreadable/Offline Error
-------------------------------------------- The information in this article applies to: Microsoft Windows versions 2000 , 2000 SP1 , 2000 SP2 Server
Microsoft Windows versions 2000 , 2000 SP1 , 2000 SP2 Professional
Microsoft Windows versions 2000 , 2000 SP1 , 2000 SP2 Advanced Server --------------------------------------------- SYMPTOMS
Windows 2000 supports dynamic disks which may be contained on a hardware raid array. Some hardware RAID arrays allow you to add more drive space to extend the RAID array. This adds the new free disk space to the end of the existing disk. Normally when this is done, the new drive size is displayed in the Disk Management tool, and the extra free space appears at the end of the existing drive. This allows you to create new volumes or extend existing volumes to include the new free space that was added to the array.
After you extend a hardware RAID array for the second time and then restart Windows 2000
or the Disk Management tool, you may loose access to any volumes that are contained on that drive. Windows 2000 Disk Management could display dynamic disks with missing volumes that were created since the first extension or will show the newly extended drive or drives as one of the following. Dynamic Unreadable
If you only have a single dynamic disk, after a reboot or a restart of Disk Management, the extended dynamic disk appears as \"Dynamic Unreadable\". Dynamic Online
If you only have a single dynamic disk, after a reboot or a restart of Disk Management, the extended dynamic disk appears as \"Dynamic Online\". However, all the volumes that are contained on the dynamic disk have disappeared, and the only available recovery option is to choose the Revert to Basic Disk option. Dynamic Offline
If you only have a single Dynamic disk, after a reboot or a restart of Disk Management, the extended dynamic disk appears as \"Dynamic Offline\". If you try to re-activate the disk,
you receive the following error message: Internal Error - Disk Group has no valid configuration copies.
If you have more than one dynamic disk in the computer, after a reboot or a restart of Disk Management, the extended dynamic disk appears as \"Dynamic Offline\". If you try to re-activate the disk, you receive the following error message: Internal Error - Disk Public Region is too small. CAUSE
Dynamic disks contain a database at the end of the physical disk, Logical Disk Manager (LDM) keeps track of where the current database is located when a drive is first converted to dynamic by recording a pointer to the database in a backup LDM header. When you extend a hardware RAID array, Disk Management reads the backup LDM header, and then moves the LDM database to the new end of the physical disk. When you grow the disk the first time, the relocation succeeds because the stored LDM backup header points to the present location of the LDM database. However, the stored backup header information is not updated to point to the newly relocated database after the relocation
succeeds. The next time you grow the disk, the same LDM backup header is read, but this time it is incorrect and instead points to the location of the old LDM database that was previously moved. This causes the relocation of the present database to not work because an erroneous attempt to try to move the old obsolete database is made (which may have already been partially or completely overwritten with user data) to the end of the new physical drive. RESOLUTION
If the computer contains more than one dynamic disk, and you are encountering the last error message that is listed in the \"Symptoms\" section of this article, a system reboot should resolve the problem.
For any of the other error messages, you must contact Microsoft Product Support Services (PSS) to locate the old database and correct the pointer in the backup LDM header. This allows the correct database to be relocated the next time the system is rebooted. For information about how to contact PSS, please view the following Microsoft Web site:
http://support.microsoft.com/directory /question.asp
To prevent these symptoms after future expansions please apply the following hotfix.
A supported fix is now available from Microsoft, but it is only intended to correct the problem described in this article and should be applied only to systems experiencing this specific problem. This fix may receive additional testing at a later time, to further ensure product quality. Therefore, if you are not severely affected by this problem, Microsoft recommends that you wait for the next Windows 2000 service pack that contains this fix.
To resolve this problem immediately, contact Microsoft Product Support Services to obtain the fix. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, please go to the following address on the World Wide Web:
http://support.microsoft.com/directory
/overview.asp
NOTE : In special cases, charges that are normally incurred for support calls may be canceled, if a Microsoft Support Professional determines that a specific update will resolve your problem. Normal support costs will apply to additional support questions and issues that do not qualify for the specific update in question. The English version of this fix should have the following file attributes or later:
Date Time Version Size File name --------------------------------------------------
5/14/2001 04:41p 2195.3609.297.3 369,008 Dmboot.sys 5/14/2001 04:47p 2195.3609.297.3 316,176 Dmconfig.dll STATUS
Microsoft has confirmed this to be a problem in the Microsoft products that are listed at the beginning of this article.
MORE INFORMATION
It is possible to prevent this problem from occurring if your hardware RAID array allows you to extend it \"online\" while Windows 2000 is running and you
follow these steps:
Extend the hardware RAID array online, and have Windows 2000 Disk Management open at the time of the hardware array extension.
After the hardware array is extended, click Rescan Disks on the Action menu. This allows Disk Management to read the header that is cached in memory since Disk Management was first started and move the LDM database to the new end of the physical disk.
----------------------------------------------------------------------- ---------
Additional query words :
Keywords : kbenv kberrmsg kbhw kbtool kbHardware Issue type : kbbug
本文由SMTH的TAR、soldier和wmw共同完成,转载请保留作者ID。
本文还不完善,可能有错误,希望大家能共同将该文档完善起来,以帮助更多的人,直到微软公开动态磁盘的技术资料。
一、动态磁盘的详细描述
1、动态磁盘的总体描述
磁盘首扇区(就是0,0,1扇区),分区表中动态卷类似于硬盘上的一个分区,其分区类型标志为0x42,但具体信息和实际可能有出入;0x1B8处起的四个字节是磁盘签名。0,0,7扇区存了动态磁盘数据库中部分信息,主要是DiskID。硬盘的最后1MB内保存有动态磁盘的全部信息。(将硬盘分区或升级成动态磁盘时,在硬盘的最后8M多(该值随硬盘大小而变)的空间被保留下来,作为私有区,不能被用户正常访问。在私有区的最后1MB是动态磁盘的数据库。)
2、动态磁盘数据库的存储方式
最后1MB的空间总共有2048个扇区,下面以最后1MB的起点为0,来表述各扇区的功能。 0扇区全为零。
1扇区和2扇区以TOCBLOCK为起始,存放着硬盘配置和状态信息,以config和log开头。 17扇区开始为硬盘配置信息,以VMDB开始,存放关于磁盘的总体信息。
18扇区开始,每个扇区存放4条配置纪录,这样的扇区共有1481个。以VBLK开头。 1498扇区开始,存放硬盘状态纪录,共有224个这样的扇区。以KLOG开头。 1856扇区和2047扇区存放着私有区头信息,两者完全一样,以PRIVHEAD开头。 2045和2046扇区重复TOCBLOCK部分的内容。其中1扇区和2046扇区一致,2扇区和2045扇区一致。
3、动态磁盘的组织形式
首先所有磁盘在一个磁盘组内,系统会给这个磁盘组起名字和磁盘组id。(windows2000目前只支持一个磁盘组,在以后的window中可能支持多个磁盘组。)
在磁盘组内标明了物理磁盘。
采用卷的形式表明硬盘上的分区类型。比如条带卷、镜像卷等。
在卷下设丛(plex),体现在动态卷的可扩展性上,同一卷内,每扩展一次增加一个丛。 在丛内设子磁盘(subdisk),具体表示丛内的磁盘。实际上子磁盘就是我们在磁盘管理其中看到的每一个有颜色的方块。
以上这些都将在磁盘配置信息中表示出来。磁盘配置信息可以理解为一个数据库,它将各种信息按照不同的类型存放,供磁盘管理查询。
二、动态磁盘数据库的详细描述
1、PRIVHEAD区内容祥解
在PRIVHEAD区中,各字节的含义如下: 0x0~ 0x7 ASCII码的PRIVHEAD
0x8~ 0xB 校验信息,将本山区所有字节加起来的值, 高位在前低位在后。(后文未加说明,都 是高位在前低位在后) 0xC~ 0xD 主版本号 0xE~ 0xF 升级版本号
0x10~ 0x13 含义不确定。但是在所有测试中旗帜是固 定的,都为01 C1 9C F8 0x14~ 0x17 更新时间 0x18~ 0x1B 全为零 0x1C~ 0x1F 更新序号
0x20~ 0x27 头信息所在的第一个位置 0x28~ 0x2F 头信息所在的第二个位置 0x30~ 0x6F diskid(以ASCII码形式存储) 0x70~ 0xAF hostid(以ASCII码形式存储) 0xB0~ 0xEF groupid(以ASCII码形式存储) 0xF0~ 组名(不确定具体结束的位置) 0x11F~0x122 共有区的起始位置 0x123~0x126 全为零 0x127~0x12A 共有区的大小 0x12B~0x12E 全为零
0x12F~0x132 私有区的起始位置 0x133~0x126 全为零 0x137~0x13A 私有区的大小 0x13B~0x13E 全为零 0x13F~0x142 TOC标志1 0x143~0x146 全为零 0x147~0x14A TOC标志2 0x14B~0x14E 配置段的数目 0x14F~0x152 日志段的数目 0x153~0x156 全为零 0x157~0x15A 配置段的大小 0x15B~0x15E 全为零 0x15F~0x162 日志段的大小 0x163~0x166 bootsig
0x167~0x176 diskset id(十六进制形式)
0x177~0x186 diskset id(十六进制形式)两段相同 0x187~0x1FF 全为零
2、VMDB内容祥解
在VMDB区中,各字节的含义如下: 0x0~ 0x3 ASCII码的VMDB 0x4~ 0x7 nblocks 0x8~ 0xB blksize 0xC~ 0xF hdrsize 0x10~ 0x11 含义不确定。 0x12~ 0x13 主版本号 0x14~ 0x15 升级版本号 0x16~ 0x34 组名
0x35~ 0x58 groupid(以ASCII码形式存储) 0x59~ 0x74 全为零 0x75~ 0x7C tid(config) 0x7D~ 0x84 tid(pending) 0x85~ 0x88 nvol(config)(卷数) 0x~ 0x8C nplex(config)(丛数) 0x8D~ 0x90 nsd(config)(子磁盘数) 0x91~ 0x94 ndm(config) 0x95~ 0x98 nda(config) 0x99~ 0xA0 全为零
0xA1~ 0xA4 nvol(pending)(卷数)
0xA5~ 0xA8 nplex(pending)(丛数) 0xA9~ 0xAC nsd(pending)(子磁盘数) 0xAD~ 0xB0 ndm(pending) 0xB1~ 0xB4 nda(pending) 0xA1~ 0xBC 全为零 0xBD~ 0xC4 timestamp
3、VBLK内容
在VBLK区中,各字节的含义如下:(因为VBLK区128字节为单位,以下说明中偏移 量只在128字节内。) 0x0~ 0x3 ASCII码的VBLK 0x4~ 0x7 blocks号
0x8~ 0xB record号(从4号开始) 0xC~ 0xF 含义不确定。 0x10~ 0x13 本块格式 0x14~ 0x17 本块实际大小 0x18以后是数据 说明1
当一个BLOCK不能满足需要时,可以占用多个BLOCK,在本块实际长度体现 说明2
每一个BLOCK可能有不同的格式 例如:
描述磁盘组为:0X845或0X835,差别在于groupid采用ASCII码还是十六进制。 描述卷信息为:0x51或0x2251,0x51为条带卷,0x2251为raid5卷,其他卷的类型号
需要进一步分析 描述丛信息为:0x1032 描述磁盘信息为:0x34 说明3
不同的类型,数据结果是不同的,种类繁多,需要一一鉴别。
4、动态磁盘数据库的连接关系
动态磁盘数据库的纪录是没有顺序的,寻找它们之间的关系, 需要从关键参数rid上分析。 例如:
卷信息中关键参数为:rid=0.1025 丛信息中关联参数为:assoc vol=0.1025 则这两条记录是直接相关的。 再比如:
丛信息中关键参数为:rid=0.1062
磁盘信息中关联参数为:assoc plex=0.1062 则这两条记录是直接相关的。
很好地分析无需记录中的相互关系,是理解数据库的基础。
5、动态磁盘数据库的又一关键参数
在磁盘描述中,diskid和disk类型中的rid是重要的。他们表达了磁盘的顺序。千万不要采用ide控制器的角度去分析磁盘的顺序,也不必去看磁盘签名。当采用跨区卷,条带卷,raid5卷时,磁盘的顺序与你连接的ide控制器的顺序无关。认真查看磁盘id是绝对必要的。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务