A storage Bug's Space

虚拟化

上一篇 / 下一篇  2006-09-29 23:50:46 / 天气: 晴朗 / 心情: 高兴

最近这几个月为了Release product,累死了,今天终于发布给SV拉(郁闷的是,马上又要出下一版啦;还好在国庆前搞定,比我预计的快,也还可以放心休息一下)!

今天一天也可以歇一歇,忙里偷闲,把Microsoft的一个虚拟OS的东西看了看,画了些小图,写了些文字。现把自认为精要的部分贴出来分享分享,等大家拍拍砖,以后争取整理成一片技术介绍文章,也让自己不断学习虚拟华技术,以后扩展到VMWARE,Solaris的zone,和硬件支持的虚拟华。

下面是Microsoft虚拟化OS的架构图:

其中:

每个Child Partition都有一个或者多个存储驱动栈,通过加入VSC使得该驱动栈功能得以加强。VSCChild Partition的存储驱动栈中得到I/O请求,然后通过VMBus将它们传递到Parent partitionVSPVSP将得到的所有应答通过VMBus返回给VSCVSC又将所有应答发送给Child Partition的存储驱动栈,并最终到达请求的发起者。

它有如下特性:

1Child Partition的存储I/O由存储Port Driver来完成;

2VSC通过编写存储PortDriver对应的MiniPortDriver来实现;

3Child Partition上的VSC通过VMBusParent Partition上的VSP通信;

           VSP由两部分组成:SRB (SCSI request block) ServerIFP (Image Format Parser,映像格式解析器)。这两部分协同工作,使得I/O请求能够以恰当的格式到达恰当的位置。

VSC,在Child Partition上存储设备被当作SCSI设备,因此只需考虑这些存储驱动。为了减少代码的执行流程,增加系统的吞吐率,加入fast path驱动以提高读/写性能。它是一个Filter驱动,直接跨越disk和存储Port Driver,通过VMBusVSP通信。

VSC上部的通过标准的接口和Port driver通信,下部使用VMBus传送I/O请求给VSP,并接收Parent Partition返回的确认数据,数据通过共享内存列表来传递。VSC处理的工作相当轻量级的,大部分的处理都是由VSP来完成。

VSPParent Partition只有一个VSP,它处理VSC、存储硬件、以及虚拟化驱动栈的通信,支持多个独立的VMBus通道,能够异步地处理虚拟化I/O。在资源不高的情况下,VSP能够用同步方式处理,以避免分配失败的情形。VSP能够虚拟化任何存储设备:DAS (包括IDESCSI)SANNAS;其他存储设备,如USB, IEEE1394,以及Flash memory等,VSP也支持,只要它们属于存储设备类。VSP由两部分组成:SRB ServerImage Format Parser.

SRB Server,它处理VSCVMBus之间的通信;从VSC那里接收VMBus包,解开包得到SRB。通常SRB会被发送到对应的Image Format Parser进行处理,并最终发送到设备。设备返回的确认数据,被返回到VMBus,同时将信息返回给对应的VSC。它能够处理自身的控制消息,主要是那些不需要Parse的消息,就像存储设备的热插拔消息;并向用户模式的应用程序,提供控制接口,从而能够显示或者删除设备。

Image Format ParsersSRB Server并不直接处理image format,而是通过Image Format Parsers来完成;该Parser处理磁盘中的数据映射,使得数据对于Child Partition来说,就像是实际的物理硬件。但存储设备被显示给Child Partition时,将会装载该Parser;它使用VSC在磁盘中指定的偏移,将它们映射为VHD文件中对应的偏移值。在某些时候,整个磁盘都会被分配给一个Child Partition控制,此时该Parser只需做相同的转换,也就是说,不需要改变命令而直接发送出去。

           VSP支持如下的Image Format Parsers

A)   VHD,处理VHD格式;

B)   ISO,处理ISO文件,并将其作为CD-ROM来处理;

C)   Pass-Through,只将命令直接传递给下层设备;

The Control InterfaceVSP支持几个输入输出的控制命令(IOCTLs),它们会被存储虚拟设备(virtual device, VDev)用于如下方面:

A)   设备的添加和删除;

B)   生成或者合并不同的映像;

C)   查询映像属性;

Vdev,通过WMI (Windows Management Instrumentation)来实现其功能。

User-mode Hardware Emulators用户模式的硬件仿真,为了向后兼容,特别是启动的时候,Viridian提供了IDE仿真控制器(Intel 440BX IDE controller)SCSI仿真控制器(Adaptec 7870 SCSI controller)。但Child Partition上的OS访问这些设备时,Parent Partition上会产生一个陷入(trap)请求,让该仿真控制器处理请求。在Child Partition上,一旦OS启动起来,将使用Fast Path过滤驱动处理读、写,以及Flush命令到VMBus而其他的命令可以继续被发送到仿真控制器。

Virtual Hard Disks,虚拟化OS不需要专用的硬盘,Viridian通过分配一个或者多个虚拟硬盘(virtual hard disks, VHD)Child Partition。从Parent Partition的角度看,每个VHD其实就是一个简单的文件而已。它也许位于其他的系统上面,并通过网络访问;然而,对于Child Partition来说,它确实又是一个实际的硬盘。Viridian通过Parser处理Child Partition的存储格式,完成细节的转换。

有如下两种VHD

Dynamic VHDs,能够分配最大的空间;然而,除非有特别的需求,VHD文件只能使用Parent Partition上文件系统能够允许的空间。

Differencing VHDs,Parent imageChild Image链组成,其中child images记录磁盘上添加或者删除数据的记录。

VHD拥有和多个Child Partition共享物理硬盘的优点,同时也能够只使用数据需要的存储空间特色,并且可以不同的磁盘格式来生成磁盘快照。

但是VHD由于需要解析Image,所以需要额外的处理,因此对于需要高性能的Child Partition来说是不足之处。

路漫漫而修远,(***)将上下而求索!


TAG:

引用 删除 123bingbing   /   2006-10-16 10:29:00
增开7群,号码 30440732
8群  30756649
9群  30178567
10群 28694497

我们的qq群:15096318 学习程序的都可以来
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-11-23  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 1775
  • 日志数: 16
  • 建立时间: 2006-08-23
  • 更新时间: 2007-01-19

RSS订阅

Open Toolbar