基于TDI的网络虚拟磁盘驱动研究与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

收稿日期:2005-11-16
作者简介:刘立辉(1981-),男,河北人,硕士研究生,研究方向为计算机网络技术及其应用;李 健,教授,研究方向为网络技术及信息安全。

基于TD I 的网络虚拟磁盘驱动研究与实现
刘立辉,李 健,朱良峰,庄俊玺
(北京工业大学计算机学院,北京100022)
摘 要:应个人网络存储应用的需要,研究和开发网络虚拟存储系统。

实现这种系统的关键是开发网络虚拟磁盘驱动。

通过介绍在Windows N T 内核模式下设计虚拟磁盘驱动的详细原理,分析和研究网络虚拟磁盘驱动的设计与实现。

开发过程中,调用TDI (Transport Driver Interface )函数,实现了网络虚拟磁盘驱动的网络功能。

使用此方法开发虚拟存储系统,由于是基于Windows 内核的开发,所以网络传输效率较高;另外,基于此技术的虚拟存储系统,没有改变用户的使用习惯,所以大大方便了用户的使用。

关键词:传输驱动接口;虚拟磁盘;网络磁盘;内核模式驱动
中图分类号:TP393.01 文献标识码:A 文章编号:1673-629X (2006)08-0200-04
R esearch and R ealization of TDI -B ased N et work Virtual Disk Driver
L IU Li 2hui ,L I Jian ,ZHU Liang 2feng ,ZHUAN G J un 2xi
(College of Computer Science ,Beijing University of Technology ,Beijing 100022,China )
Abstract :To deal with the need of the personal network storage application ,research and develop the network virtual storage system.The most important thing to realize the system is to develop a network virtual disk driver.Introduce the principle of virtual disk driver under Windows N T kernel mode.Analyze and research how to design and develop the network virtual disk driver.During the developing ,TDI (Transport Driver Interface )functions have been used to realize the network functions.Virtual storage system using this method ,has bet 2ter efficiency in network transport because it is developed based on Windows kernel mode.In addition ,the virtual storage system based on this technology is easy to use because it has not change the habits of the users.K ey w ords :TDI ;virtual disk ;network disk ;kernel mode driver
随着网络的普及,网络技术针对个人应用的比例越来越高,例如电子邮箱、个人主页空间、个人网络空间。

近来,应用户移动办公的需要,网络虚拟磁盘技术得到了广泛应用。

应用这种技术,用户把自己的文档存储在网络磁盘上,随时随地进行存取和编辑,使用方便快捷。

实现这种技术的关键是开发网络虚拟磁盘驱动。

1 网络虚拟磁盘驱动功能分析
Windows 用户为了更加方便地管理自己的文件,常常
应用虚拟磁盘。

方法是把某些文件或目录镜像为逻辑磁盘(即虚拟磁盘),然后把文件存放在虚拟磁盘里,以便于管理。

这些磁盘,有的显示为资源管理器里的盘符,有的有独立的界面,使用方便快捷。

网络虚拟磁盘技术就是在这种虚拟磁盘技术的功能之上加入网络功能,简言之,就是把网络上的存储空间虚拟为本地逻辑磁盘的技术。

网络虚拟磁盘技术有多种实现方式,主要有:一,以
Web 方式使用;二,客户端程序的形式;三,在本地资源管
理器显示盘符。

对比这几种方式,方式三有着其他两种方式不可比拟的优点,使用方便,不用改变用户的操作习惯;功能强大,可以模拟本地磁盘;界面简洁,易于管理。

文中将研究第三种方式的一种实现方法。

根据需求,网络虚拟磁盘驱动应该满足以下两点功能,第一,能够实现虚拟功能,可以模仿本地磁盘;第二,能够实现网络传输,对网络上的文件或目录进行虚拟,并把操作命令和数据发到空间服务器上。

2 网络虚拟磁盘驱动在Windows NT 中的位置
2.1 Window s NT 分层驱动原理
Windows N T 提供了一种分层的体系结构,每一个N T 设备驱动程序都有一个下层接口和一个上层接口。

低层的驱动程序直接控制硬件。

在低层和上层驱动程序之间的是中间层驱动程序[1]。

Windows N T 的这种驱动程序体系,在Windows 98和Windows 2000中得到了继承和扩展,形成了现在的WDM 体系。

这使得在Windows
N T 平台下,开发网络虚拟磁盘驱动成为可能。

第16卷 第8期2006年8月 计算机技术与发展COMPU TER TECHNOLO GY AND DEV ELOPMEN T
Vol.16 No.8Aug. 2006
WDM 使用了分层的驱动程序结构,而且WDM 是基
于对象的。

为了便于对硬件的管理,WDM 里对每一个单一的硬件引入了一些数据结构:物理设备对象(Physical
Device Object ),简称为PDO ;功能设备对象(Function De 2vice Object ),简称为FDO ;过滤设备对象(Filter Device Ob 2jects ),简称为FiDO 。

在数据结构栈中的每一个对象都属
于一个特定的驱动程序,PDO 属于总线驱动程序,FDO 属于功能驱动程序,FiDO 属于过滤驱动程序(
如图1所示
[2]
)。

图1 分层驱动程序结构
每个操作都使用I/O 请求包。

IRP 先被送到设备堆栈的最上层驱动程序,然后再逐渐过滤到下面的驱动程序。

每一层驱动程序都可以决定如何处理IRP 。

不同位置的驱动程序扮演了不同的角色,总线驱动程序管理计算机与PDO 所代表的设备的连接。

功能驱动程序管理FDO 所代表的设备。

过滤器驱动程序用于监视和修改IRP 流。

2.2 分层结构中的网络虚拟磁盘驱动
虚拟磁盘驱动属于过滤器驱动程序,它的功能是修改
IRP 流。

具体就是把对文件的位置请求,经过处理,指定
到真实的磁盘位置,并把命令和数据传递下去。

现在分析三种情况下,文件操作中对驱动程序的调用过程。

通过三种情况的比较,解释网络虚拟磁盘驱动程序在Windows N T 系统结构中的位置及所起的作用。

结合图例对比如下(注:图2、图3、图4省略了细节和
一些与此处说明无关的过程。

):(1)访问DOS 分区逻辑磁盘中的文件(如图2所示)。

如,打开C :\MyPackage \Myfile.doc 。

用户通过使用打开文件的高级函数调用Win32API 函数访问系统服务,系统服务程序首先调用文件系统驱动找出文件的逻辑位置,文件系统驱动再调用磁盘驱动转换为磁盘的物理位置,找到该文件,执行打开操作。


文件系统驱动
↓磁盘驱动
图2 访问DOS 分区逻辑磁盘中的文件
(2)访问本地虚拟磁盘中的文件(如图3所示)。

如,
打开I :\MyPackage \Myfile.doc ,其中I :是由DOS 分区逻辑磁盘
D :中的一个镜像文件FileDisk.img 虚拟成的逻辑磁盘。

用户通过使用打开文件的高级函数调用Win32
API 函数访问系统服务,系统服务程序首先调用文件系统
驱动找到文件的逻辑位置,文件系统驱动再调用虚拟磁盘驱动,将访问磁盘的逻辑位置转换为访问镜像文件的逻辑位置,再调用文件系统驱动找到镜像文件所在逻辑磁盘的逻辑位置,然后调用磁盘驱动转换为磁盘的物理位置,执行打开操作。


文件系统驱动

虚拟磁盘驱动

文件系统驱动
↓磁盘驱动
图3 访问本地虚拟磁盘中的文件
(3)访问网络虚拟磁盘中的文件(如图4所示)。


如,G:\MyPackage \Myfile.doc ,其中,G:是由远程磁盘上的镜像文件FileDisk.img 虚拟的。

用户通过使用打开
文件的高级函数调用Win32API 函数访问系统服务;系统服务程序首先调用文件系统驱动程序找到文件的逻辑位置,即G 盘上的逻辑位置;文件系统驱动调用虚拟磁盘驱动,将访问磁盘的逻辑位置信息及操作命令和数据交给网络协议驱动;网络协议驱动调用网卡驱动将位置信息操作命令及数据发送到远程服务器上,远程服务器负责完成打开文件的操作,并把操作结果返回。

图4 访问网络虚拟磁盘上的文件
3 网络虚拟磁盘驱动所涉及的Windows 设备
3.1 Window s NT 中的NT 设备和Win32设备
Windows N T 对象名字空间提供一种伞形结构,在其
下是个对象的自包含的集,叫做对象域,并允许对象名字空间被扩充[1]。

I/O 管理器是一个二级对象管理程序,管理着一个由磁盘文件、目录、设备组成的对象域。

I/O 管理程序创建名字为\Device 的对象目录,来包含代表I/O 设备的各对象的名字。

在用函数IoCreateDevice 创建Device 对象时,指定的名称是设备对Windows N T Executive 知道的名字。

如果

102・第8期 刘立辉等:基于TDI 的网络虚拟磁盘驱动研究与实现
要使设备对Win32子系统和DOS 虚拟机可用,还必须给设备一个DOS 名称。

在MS -DOS 中,用户使用A :、C :、
D :等等来指定软盘和硬盘驱动器,Win32子系统通过把
全部驱动器字母放入对象管理程序名字空间作为全程数据来保护驱动器字母。

为此,创建一个特别的对象目录
(如图5所示[1])。

图5 Win32设备对象目录
N T 设备名和Win32设备名位于对象管理器的名字
空间的不同部分。

N T 设备名在树的\Device 下面。


Win32名则出现在\DosDevices 下面。

同一Device 对象
的N T 设备名和DOS 设备名通过符号连接相联系。

3.2 
本地虚拟磁盘所涉及的设备对象
符号连接使用户能创建一个文件名或目录名。

使用时,它被操作系统转译成不同的文件或目录名。

这是一个简单的方法,能允许用户间接地共享一个文件或目录的内容,一般是在通常的层次目录结构的不同目录之间建立交叉连接。

这使得实现虚拟磁盘成为可能,笔者就是根据这一点实现将文件或目录虚拟成为一个逻辑磁盘。

图6中,(1)I :;(2)Partition0;(3)HardDisk0。

三者之间的关系:(1)映射为(2)上的一个文件,(2)为(3)上的一个逻辑分区。

图6 本地虚拟磁盘对象目录
文件管理器允许I/O 系统在对象管理程序名字空间的一个叶结点下存放文件系统对象[3]。

例如,Partiton0为
FAT32文件系统。

打开虚拟磁盘上的文件(假定虚拟磁
盘被指定盘符I :),如果一个Word 的Windows 用户打开
该Word 文档,Win32子系统转译这个名字为N T 对象\
DosDevices \I :\file.doc ,调用N T 执行体打开文件对象
句柄。

要找到这个文件对象,对象管理程序浏览对象名的树,直到找到已知为I :的对象,并且发现这个对象是个符号连接,它就检查符号链接对象的内容,从而解析出De 2
vices 目录中的位置。

3.3 网络虚拟磁盘所涉及的设备对象
跟本地虚拟磁盘不同的是,网络虚拟磁盘驱动将
Win32子系统对象目录中的虚拟盘符与网络设备连接,而
不是与本地磁盘设备相连。

TCP/UDP 就可以看作是网络传输设备[4]。

在网络虚拟磁盘驱动中,通过调用TDI 函数实现对TCP/UDP 设备的启动和控制[5]。

至于对象管理程序对符号连接的解析过程与本地虚拟磁盘相同(如图7所示)。

4 调用网络虚拟磁盘驱动时的文件处理过程

202・ 计算机技术与发展 第16卷
参照图8,阐述在Windows N T 中,调用网络虚拟磁盘驱动时的文件处理过程。

这里以执行高级语言里的文件打开函数为例开始文件操作。

①执行函数fopen (D :\myFile.txt )。

②调用Win32API 函数CreateFile (d :\myFile.txt )。

③调用Windows 内核函数NtCreateFile (D :\myfile.
txt )请求系统服务。

④创建文件对象,对文件执行I/O 操作。

⑤I/O 创建IRP ,为文件系统驱动分配堆栈,调用文件系统驱动。

⑥文件系统驱动查找文件位置(在虚拟磁盘中的位移),将位置信息交给IRP ,调用虚拟磁盘驱动。

⑦虚拟磁盘驱动执行文件位置变换,将在虚拟磁盘的位移转换为在虚拟磁盘文件中的位移(实际上,两个位移是相等的),调用TCP/IP 驱动。

⑧TCP/IP 驱动调用网卡驱动。

⑨网卡驱动将数据发往服务器端。

⑩服务器端完成所要求的操作,返回操作结果。

服务器端的操作,就是根据传过来的位置信息对虚拟磁盘文件进行的操作。

具体的驱动实现就是根据以上几个步骤
[6]
,创建虚拟
磁盘设备对象,通过调用TDI 函数,与TCP/UDP 传输设备的连接,使命令和数据在网络上传输,实现网络虚拟磁盘功能。

限于篇幅,代码分析不加阐述。

5 结束语
要实现完整的网络虚拟磁盘系统还需要服务器端的开发,服务器端需要实现空间分配和管理功能,如负载平衡、数据一致等。

硬件方面需要有大型网络存储设备
NAS ,IPSAN 等。

根据现在的需求,更侧重IPSAN 的研
究。

另外,网络虚拟磁盘技术正在进一步发展中,还有很多亟待解决的问题,比如实现在保证效率的前提下实现安全检验的功能,以及以改善用户使用方便性为目的的改进。

参考文献:
[1] CUSTER H.WINDOWS N T 技术内幕[M ].北京:清华大
学出版社,1993.
[2] 武安河,邰 铭,于洪涛.Windows 2000/XP WDM 设备驱
动程序开发[M].北京:电子工业出版社,2003.
[3] 任爱华,李 鹏,刘方毅.操作系统实验指导[M ].北京:清
华大学出版社,2004.
[4] 朱涛江,卢 昱,王 宇.基于TDI 的网络安全存储系统研
究与实现[J ].华中科技大学学报(自然科学版),2003(10):126-128.
[5] 丁 振,冯 丹,周 可.Windows 下的虚拟网络存储的设
计与实现[J ].计算机工程,2003(4):163-165.
[6] Baker A.Windows N T 设备驱动程序设计指南[M ].北京:
机械工业出版社,1997.
(上接第199页)
COM 技术、Server/Client 模式可靠性高且同步/异步数据
访问易于实现,这一切为OPC 规范被迅速应用到工业控制领域创造了良好的条件。

文中介绍了OPC 技术在分布异构环境下的数据通信方法,实践表明,该方法具有可行性,能够提高系统的效率。

OPC 技术现在己经成为工业界系统互联的缺省方案,受到越来越多的设备厂商的认可,因此,它必将成为未来发展的主流。

参考文献:
[1] OPC Foundation 1OL E for Process Control Over View Version
1.0[Z].Beijing :[s.n.],1998.
[2] 凌志浩,陈伟彬,马 欣,等1基于OPC 数据存取规范的服
务器研究与实现[J ].华东理工大学学报,2004,30(3):318-3211
[3] 胡旦华.OPC 技术在分布式异构环境下的实时数据通信
[D].保定:华北电力大学,20031
[4] 潘爱民.COM 原理与应用[M ].北京:清华大学出版社,
1999.
[5] 日本OPC 协会,OPC (中国)促进委员会.OPC 应用程序入
门[Z].郑 立译.北京:[出版者不详],2002.
中国计算机学会优秀博士论文评奖启动
为推动中国计算机领域的科技进步,鼓励创新性研究,促进青年人才成长,中国计算机学会(CCF )设立了优秀博士学位论文奖。

从2006年开始,CCF 每年评选一次CCF 优秀博士学位论文奖。

2006年度优秀博士学位论文的评选范围为2003年7月1日至2006年6月30日在中国获得的计算机科学与技术学科相关专业博士学位的学位论文。

CCF 办公室从2006年7月10日起受理本年度申请。

受理截止日期为2006年8月20日。

参加评选的博士学位论文须经具有计算机科学与技术学科博士点的高校计算机学院(系)或研究机构推荐,或由3位(含)以上CCF 理事推荐。

详情请访问
CCF 网站( )。

评选结果将于11月30日前公布。


302・第8期 刘立辉等:基于TDI 的网络虚拟磁盘驱动研究与实现。

相关文档
最新文档