虚拟磁盘服务软件框架设计Word文档格式.docx
《虚拟磁盘服务软件框架设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《虚拟磁盘服务软件框架设计Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
SchoolofComputer,NationalUniversityofDefenseTechnology,Changsha410073,China
E-mail:
aleck_liu@
LIUXiao-jian,RENYi,DAIHua-dong.Designofvirtualdiskservicesoftwareframework.ComputerEngineeringandApplications,2010,46(25:
28-30.
Abstract:
Virtualdisktechnologyisanimportanttopicofstoragevirtualization.Forthetimebeing,muchkernelprogram-mingisinvolvedwhenanewkindofvirtualdisksupportisdeveloped,whichisagreatchallengeformostapplicationde-velopers.Ageneralvirtualdiskimplementationframeworkispresentedtoresolvethisproblem.Inthisframework,ageneralkernelmoduleisproposedtoprovidestandardblockdeviceinterfacetotheoperatingsystem.Ontheotherhand,thiskernelmodulealsoprovidesageneralrequest/responsepassinginterfacetotheuserspacevirtualdiskserviceapplication.Finally,basedonLinuxNBDdriver,aprototypeisconstructed,whichverifiesthisstudy.
Keywords:
virtualdisk;
storagevirtualization;
operatingsystem
摘要:
虚拟磁盘技术是数据存储虚拟化技术的一个重要组成部分。
当前,开发新型虚拟磁盘驱动需要涉及到较多的操作系统
内核编程,这对开发人员提出了较高的要求。
研究了一种通用的虚拟磁盘服务软件的实现框架,此框架可对操作系统内核提供标准块设备接口,对用户态服务进程提供一组标准服务接口用于实现服务的注册和请求/应答的传递,从而实现了操作系统内核模块的通用性。
最后,基于Linux的NBD驱动实现的原型系统验证了工作的实用性。
关键词:
虚拟磁盘;
存储虚拟化;
操作系统
DOI:
10.3778/j.issn.1002-8331.2010.25.008文章编号:
1002-8331(201025-0028-03文献标识码:
A中图分类号:
TP316
基金项目:
国家高技术研究发展计划(863(theNationalHigh-TechResearchandDevelopmentPlanofChinaunderGrantNo.2008AA01Z138,No.2009AA01Z101。
作者简介:
刘晓建(1974-,男,博士,主要研究领域为系统软件;
任怡(1976-,女,博士,讲师,主要研究领域为系统软件;
戴华东(1975-,男,博士,副研究员,主要研究领域为系统软件。
收稿日期:
2010-05-13修回日期:
2010-07-27
28
2010,46(25
刘晓建,任怡,戴华东:
分组成,新型虚拟磁盘服务的开发者必须自行设计虚拟磁盘
的核内部分,这提高了开发虚拟磁盘服务的开发难度。
为使
开发者专注于用户态虚拟磁盘服务的实现逻辑,本文研究了
虚拟磁盘服务软件的通用框架。
2Linux下通用虚拟磁盘服务框架
为降低第三方开发虚拟磁盘服务的难度,提出了图1所示
的虚拟磁盘服务框架。
在此框架中,用户态的虚拟磁盘服务
软件通过系统调用,请求虚拟磁盘驱动内核stub通知操作系
统动态新添加了一个磁盘,内核stub向操作系统内核提供标
准的磁盘驱动接口,并将来自操作系统内核的磁盘访问请求
转发给用户态的虚拟磁盘服务进程。
用户态虚拟磁盘服务接收到请求后对请求类型(读或写
进行分析,并做出相应动作。
虚拟磁盘操作动作完成后将结
果返回给内核态模块,并通知内核态磁盘驱动stub。
后者在已发送请求列表中找到此请求后,向操作系统内核报告磁盘操作完成,将请求从已发送列表中清除。
本框架并不假设用户态虚拟磁盘服务采取何种方式处理来自内核的虚拟磁盘访问请求,比如,有的虚拟磁盘服务软件可能通过直接访问位于本机上的某个文件实现虚拟磁盘的读写,而有些软件则需要借助P2P网络来完成对虚拟磁盘的访问。
虚拟磁盘驱动内核stub对用户态驱动提供的软件开发接口分为三类:
(1注册/取消注册类:
供用户向操作系统内核声明/取消声明某虚拟磁盘设备对应的用户态磁盘驱动。
操作系统内核在接收到对该虚拟磁盘设备的访问请求后将把请求转发给相应的用户态驱动线程。
(2双向信息传递接口:
供用户态驱动线程和操作系统内核之间传递读写磁盘请求及内容,用户态线程可借助本接口同时实现两个功能:
①向内核传递信息;
②从内核获取信息。
将两种功能集成到一个接口的优点是实现保证了信息传递的效率。
(3单向信息传递接口:
此为双向信息传递接口的一个特例,它仅为用户态驱动线程提供向内核传递信息的功能,内核不能通过此接口向用户态驱动线程传递信息。
单向信息传递方式可防止用户线程在不期望接收磁盘访问请求的场合(如异步IO事件完成通告函数中获得来自内核的请求,从而简化用户态线程的设计。
采用本框架的虚拟磁盘服务软件的一般工作流程如图2所示:
主控线程负责虚拟磁盘的创建和删除以及用户的交互,工作线程则负责处理来自内核的虚拟磁盘访问请求。
由于虚拟磁盘访问相对耗时,为了获得更好的虚拟磁盘系统服务性
能,
应当避免出现虚拟磁盘服务软件由于正在处理某个磁盘
访问请求而不能接收来自内核的新磁盘访问请求的现象,因
此,建议工作线程采取异步IO的方式进行请求的处理。
3系统实现
在图1的服务框架中,实现内核态虚拟磁盘驱动stub主要
需要解决磁盘操作请求的处理、磁盘操作数据的转发等关键
问题。
3.1内核对磁盘访问请求的处理
内核态虚拟磁盘驱动stub本身提供了块设备的访问接
口,故它可接收到对自己所虚拟块设备的访问请求。
收到磁
盘访问请求后,内核态驱动stub将这些请求进行编号并放入
待处理请求列表,若此时用户态服务进程正在睡眠等待磁盘
访问请求,则内核态stub向其转发待处理请求,并将该进程唤
醒。
当待处理请求列表非空时,用户态服务进程无需睡眠即
可获得待处理的请求。
3.2磁盘访问请求的传递
为了提高对于磁盘访问请求的处理速度,本框架支持将
多个磁盘访问请求进行聚合传递的功能,用户态服务进程可
以一次性接收获得所有的待处理请求,从而避免多次进入操
作系统内核获取请求带来的开销。
为此,设计了虚拟磁盘IO
请求/应答列表vd_iol数据结构,C语言描述其定义如下:
structvd_iol{
structvd_message_hd;
//磁盘IO请求或应答信息头,包含请
求编号,读写命令,扇区编号,字节长度等
intnext;
//本磁盘IO请求应答链表中下一项的位置
}
当用户态驱动完成磁盘访问请求或需要获得新磁盘访问
请求时,它向内核提供一个缓冲区,该缓冲区存放了按照虚拟
磁盘IO请求/应答列表vd_iol方式存储的已完成的磁盘访问请
求情况,然后请求内核接收应答信息。
内核处理完来自用户
态的应答信息后,将当前待处理的磁盘访问请求按照图3所示
的形式组织成链表,传递用户态驱动线程(当待处理磁盘访问
请求总长度超过缓冲区大小时,不能被完全放入缓冲区的请
求将等待下次用户态线程获取请求时进行提交。
图3所示该
链表显示服务进程从内核获取了3个磁盘访问请求,其中消息虚拟磁盘
驱动内核
stub
本文贡献
第三方开发的
虚拟磁盘驱动
虚拟磁盘
服务进程
应用进程
文件操作
应用层
操作
系统文件系统
磁盘操作
图1通用虚拟磁盘服务框架图
取消注册虚拟磁盘
接收请求/发送应答
处理获取的
磁盘访问请求
向内核报告完成状态
退出
注册虚拟磁盘
接收到退出信号
主控线程工作线程
图2虚拟磁盘服务进程的一般工作流程图
消息3所包含的数据
消息2所包含的数据
消息头
消息1消息3
消息结
束标志
消息2
n
e
x
t
图3虚拟磁盘IO请求/应答链表
29
If8
一__’一—]
ComputerEngineeringandApplications计算机工程与应用
2010,46(25择。
同时,根据采集到的交通信息实时更新拥挤状况下的VMS信息,直至拥挤消除,而信息更新的周期主要受到采集设备的限制。
5结语
VMS的信息发布影响着路网的交通流分布,交通状态信
息提取方法是VMS实现诱导目的基础,提出了一种面向VMS诱导的交通状态信息提取方法。
采用模糊推理方法得到VMS关联路段的交通状态信息,并在关联路段均处于拥挤状态时,通过交通状态排序逐步引导交通流的分流,并为驾驶员在拥挤状态下进行路径选择提供决策支持。
该方法较好地考虑了驾驶员的视认性与交通管理者的诱导需要,但如何结合路网中的事件检测与处理,设计更加高效的交通状态信息提取方法,是下一步的研究方向。
参考文献:
[1]姜桂艳,郑祖舵,白竹,等.拥挤条件下可变信息板交通诱导信息对
驾驶行为的影响[J].吉林大学学报:
工学版,2006,36(2:
183-187.[2]PribylO,PribylP.Miningdatafrominductloops[C]//Proceed-ingsofthe8thInternationalIEEEConferenceonIntelligentTransportationSystems,Vienna,2005:
514-518.
[3]陈群,关函非,晏克非.基于模糊控制的停车诱导信息板信息显示
方法[J].计算机工程与应用,2007,43(30:
199-201.
[4]李振龙,赵晓华.基于模糊聚类的快速路VMS信息发布方法[J].计
算机工程,2008,34(8:
210-212.
[5]戢晓峰,刘澜,何增辉.基于模糊推理的区域路网交通状态分析方
法[J].交通运输工程与信息学报,2009,7(3:
27-32.
[6]戢晓峰,刘澜,吴其刚.区域路网交通信息提取方法[J].西南交通大
学学报,2008,43(3:
422-426.
[7]GauWL,BuehrerDJ.Vaguesets[J].IEEETransactionsonSys-tems,ManandCybernetics,1993,23(2:
610-614.
[8]李娜,梅亚东,段文辉,等.基于Vague集理论和群决策的大坝病险
综合评价方法[J].水电自动化与大坝监测,2006,30(6:
65-69.
(上接18页
1为读取虚拟磁盘请求,对于读取磁盘请求没有数据需要传递给用户态驱动线程,而消息2和消息3为写入虚拟磁盘请求,对于写请求,欲写入的数据被同时传递到了用户态。
需指出,因操作系统普遍采取了按需动态分配内存的内存管理机制,在合适编程时(如当程序总是从缓冲区的起始地址开始连续使用该缓冲区,操作系统内核并不会为缓冲区中没有用到的部分分配物理内存页面,故用户态服务进程向内核声明较大的、用于存放请求应答链表的缓冲区不会导致内存资源的浪费。
3.3原型系统
以LinuxNBD为基础实现了虚拟磁盘服务框架的原型系
统,其主要组成部分包括块设备接口、用户接口、虚拟磁盘管理模块、请求管理模块等,如图4所示。
其中虚拟磁盘管理模块负责管理本原型系统所同时虚拟的多个虚拟磁盘,请求管理模块负责根据来自操作系统块设备接口的请求和来自用户态服务线程的应答信息更新相应虚拟磁盘的请求队列,块设备接口负责为操作系统其他部分提供访问接口,用户接口负责与虚拟磁盘服务线程通信。
为验证本文工作,基于NBD的本地客户端软件构建了虚拟磁盘服务线程。
修改后系统可正常提供虚拟磁盘服务,验证了本文框架的正确性和实用性。
4总结
虚拟磁盘技术是数据存储虚拟化技术的一个重要组成部
分。
与其他数据存储虚拟化技术相比,虚拟磁盘技术在使用灵活性和功能可扩展性方面有着自己独到的优势。
在实现中,虚拟磁盘支持由内核模块和核外服务两部分配合完成。
但在当前的虚拟磁盘软件实现中,其内核模块的实现与核外服务密切相关,这导致了新型虚拟磁盘服务的开发者必须要同时开发虚拟磁盘驱动的内核模块和用户态服务软件两部分,而内核模块的开发对大部分程序员来说都是一个极大的挑战。
为了降低程序员开发的工作量,提出了一种通用的虚拟磁盘驱动的开发框架,该框架对用户态服务提供一组标准服务接口用于实现服务的注册和请求/应答的传递。
当使用本框架时,通用的内核态模块可将来自操作系统的磁盘访问请求转发到用户态服务进程,同时也可接收来自用户态的磁盘操作情况报告。
此时,程序员只需关注虚拟磁盘服务的用户态逻辑,无需再关心操作系统内部缓冲区的管理,中断抢先等问题,提高了程序员的开发效率和最终系统的稳定性。
最后,虽然本文的原型系统基于Linux实现,本文方法同样适用于其他商用操作系统。
[1]ScandbergR,GoldbergD,KleimanS,etal.Designandimplemen-tationofthesunnetworkfilesystem[C]//USENIXConferenceProceedings,USENIXAssociation,Berkeley,CA,1985.
[2]CodeFX.CIFSexplained[EB/OL].http:
//media/
[3]MachekP.Networkblockdevice[EB/OL].http:
//T.Blktapoverview[EB/OL].http:
//
虚拟磁盘管理块设备接口
服务线程
用户态内核态
请求管理
用户接口
请求队列
图4原型系统的组成
30
作者:
刘晓建,任怡,戴华东,LIUXiao-jian,RENYi,DAIHua-dong
作者单位:
国防科学技术大学,计算机学院,长沙,410073
刊名:
计算机工程与应用
英文刊名:
COMPUTERENGINEERINGANDAPPLICATIONS
年,卷(期:
参考文献(4条
1.BenkeTBlktapoverview
2.MaehekPNetworkblockdevice
3.CodeFXCIFSexptained
4.ScandbergR;
GoldbergD;
KleimanSDesignandimplementationofthesunnetworkfilesystem1985本文链接: