加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 系统 > 正文

PVS架构中的VHD虚拟磁盘如何理解

发布时间:2022-01-09 13:26:49 所属栏目:系统 来源:互联网
导读:PVS架构中的VHD虚拟磁盘怎么理解,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 1、差异虚拟硬盘 差异虚拟硬盘将差异虚拟硬盘本身内的母盘文件定位器存储起来,当驱动
PVS架构中的VHD虚拟磁盘怎么理解,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
 
1、差异虚拟硬盘
差异虚拟硬盘将差异虚拟硬盘本身内的母盘文件定位器存储起来,当驱动尝试打开差异硬盘时,将同时打开差异虚拟硬盘和母盘。 母盘也可以是差异虚拟硬盘,在这种情况下,可能有一连串差异虚拟硬盘,最终终止于非差异虚拟硬盘。
 
母盘定位器表仅由差异虚拟硬盘来使用,如本文前面的“可扩展虚拟硬盘头部格式”中所述。差异虚拟硬盘是一种可扩展的VHD,它的文件结构与可扩展VHD相同,只是在页脚区域中“类型”字段为4,表示这是一个差异虚拟硬盘。由于差异虚拟硬盘不能独立运行,须依赖其母盘,因此在头部中的“母盘UUID”、“母盘名称”及“母盘定位器”等字段存储着有关重要信息:母盘UUID、母盘名称用于差异虚拟硬盘识别母盘;母盘定位器存储着差异虚拟硬盘在不同平台(Windows或Mac等)上的母盘的定位编码信息,用于在不同平台上的迁移操作。
 
在Windows中,有两种类型的平台定位器:W2ku和W2ru。 前者是母盘的绝对路径名,后者是母盘相对于差异虚拟硬盘的路径名。
 
例如,位于Windows的计算机上的根驱动器中的母盘映像将存储格式如下:
 
Type
 
Example
 
W2ku
 
c:directoryparent.vhd
 
W2ru
 
.directoryparent.vhd
 
相对路径名的优点是它允许差异虚拟硬盘和母盘移植到不同的位置。使用绝对路径名,每当移动母盘时,必须显式重新链接母盘和子硬盘。
 
当创建差异虚拟硬盘时,如果可能,应该初始化相应平台上的两种类型的平台定位器的路径名。
 
差异虚拟硬盘的写操作:
 
对于写操作,所有数据都将写入差异虚拟硬盘映像。对于写入特定块的所有扇区,块位图被标记为dirty。
 
差异虚拟硬盘的读操作:
 
当驱动读取硬盘映像的扇区时,虚拟硬盘子系统检查差异虚拟硬盘中的块位图。然后硬盘子系统从差异虚拟硬盘中读取标记为dirty的扇区,并从母盘读取标记为clean的扇区。
 
例如,考虑在母盘映像和子硬盘映像中都保存扇区4096至8191的块。块的第一个扇区保存该块的位图。单个单元格表示位图中的一个位,黑点×××表示块中的特定扇区已被数据写入。
 

 
综上,使用差异虚拟硬盘模式时,会同时打开差异虚拟硬盘和它的母盘。当对一个差异虚拟硬盘进行写操作时,会把所写入的数据存储在差异虚拟硬盘上,不对母盘改动;当对其进行读操作时,如果所读数据已经修改,则读取存储在差异虚拟硬盘上的改动数据,数据没有改动则读取母盘的原始数据。如果读取的数据包含了母盘的原始数据和差异虚拟硬盘上的改动数据,则先读取母盘的原始数据,然后在读取差异虚拟硬盘上的改动数据并将其组合为统一的数据。
 
2、VHD虚拟硬盘的寻址过程
对于固定方式的VHD 文件,虚拟硬盘的扇区与文件的扇区顺序对应,对固定方式VHD 进行寻址,通过页脚区域查找对应扇区即可。
 
对于可扩展的VHD,其数据块由块分配表动态分配,其虚拟硬盘和VHD 文件的地址要经过层次的索引,进而达到存储或读写数据的目的。
 
详细说明如下:
 
(1)读可扩展VHD文件的页脚区域,通过页脚区域的“类型”“数据偏移量”等字段,确定是否是可扩展VHD 文件以及头部的位置在哪儿。
 
(2)读取头部,确定块大小,块分配表的位置和数量。
 
(3)找到块分配表,定位对应块分配条目,读取条目的值。
 
(4)根据分配表条目的值,确定其值(数据块的扇区位图地址)对应的数据块,读取扇区位图,确定数据区域的扇区使用情况,然后读取数据;若分配表条目的值为0xFFFFFFFF,说明该数据块未写入任何数据。
 
(1)读差异VHD文件的页脚区域,通过页脚区域的“类型”“数据偏移量”等字段,确定是否是差异VHD 文件以及头部的位置在哪儿。
 
(2)读取头部,通过头部中的“母盘UUID”、“母盘名称”及“母盘定位器”等字段确定母盘位置,然后确定差异虚拟硬盘本身的块大小,块分配表的位置和数量。
 
(3)找到母盘,重复可扩展模式下的寻址过程,找到所需要读取的数据;同时,其差异虚拟硬盘本身找寻自己的块分配表,定位对应块分配条目,读取条目的值。
 
(4)根据分配表条目的值,确定其值(数据块的扇区位图地址)对应的数据块,读取扇区位图,确定数据区域的扇区使用情况,然后读取数据;若分配表条目的值为0xFFFFFFFF,说明该数据块未写入任何数据。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读