2024年3月31日发(作者:)
计算机技术与发展
第
16
卷 第
8
期
16
No.8
Vol.
2006
年
8
月
Aug.
2006
COMPUTERTECHNOLOGYANDDEVELOPMENT
基于
TDI
的网络虚拟磁盘驱动研究与实现
刘立辉
,
李 健
,
朱良峰
,
庄俊玺
(
北京工业大学计算机学院
,
北京
100022
)
摘 要
:
应个人网络存储应用的需要
,
研究和开发网络虚拟存储系统。实现这种系统的关键是开发网络虚拟磁盘驱动。通
过介绍在
WindowsNT
内核模式下设计虚拟磁盘驱动的详细原理
,
分析和研究网络虚拟磁盘驱动的设计与实现。开发过
程中
,
调用
TDI
(
TransportDriverInterface
)
函数
,
实现了网络虚拟磁盘驱动的网络功能。使用此方法开发虚拟存储系统
,
由
于是基于
Windows
内核的开发
,
所以网络传输效率较高
;
另外
,
基于此技术的虚拟存储系统
,
没有改变用户的使用习惯
,
所
以大大方便了用户的使用。
关键词
:
传输驱动接口
;
虚拟磁盘
;
网络磁盘
;
内核模式驱动
中图分类号
:TP393.01
文献标识码
:A
文章编号
:1673-629X
(
2006
)
08-0200-04
ResearchandRealizationofTDI-BasedNetworkVirtualDiskDriver
LIULi
2
hui,LIJian,ZHULiang
2
feng,ZHUANGJun
2
xi
(
CollegeofComputerScience,BeijingUniversityofTechnology,Beijing100022,China
)
Abstract:Todealwiththeneedofthepersonalnetworkstorageapplication,
mostimporucetheprincipleofvirtualdiskdriverunder
thedeveloping,TDI
(
TransportDriverInterface
)
lstoragesystemusingthismethod,hasbet
2
terefficienction,thevirtualstoragesystembasedon
thistechnologyiseasytousebecauseithasnotchangethehabitsoftheusers.
Keywords:TDI;virtualdisk;networkdisk;kernelmodedriver
随着网络的普及
,
网络技术针对个人应用的比例越来
越高
,
例如电子邮箱、个人主页空间、个人网络空间。近
来
,
应用户移动办公的需要
,
网络虚拟磁盘技术得到了广
泛应用。应用这种技术
,
用户把自己的文档存储在网络磁
盘上
,
随时随地进行存取和编辑
,
使用方便快捷。实现这
种技术的关键是开发网络虚拟磁盘驱动。
网络虚拟磁盘技术有多种实现方式
,
主要有
:
一
,
以
Web
方式使用
;
二
,
客户端程序的形式
;
三
,
在本地资源管
理器显示盘符。对比这几种方式
,
方式三有着其他两种方
式不可比拟的优点
,
使用方便
,
不用改变用户的操作习惯
;
功能强大
,
可以模拟本地磁盘
;
界面简洁
,
易于管理。文中
将研究第三种方式的一种实现方法。
根据需求
,
网络虚拟磁盘驱动应该满足以下两点功
能
,
第一
,
能够实现虚拟功能
,
可以模仿本地磁盘
;
第二
,
能
够实现网络传输
,
对网络上的文件或目录进行虚拟
,
并把
操作命令和数据发到空间服务器上。
1
网络虚拟磁盘驱动功能分析
Windows
用户为了更加方便地管理自己的文件
,
常常
应用虚拟磁盘。方法是把某些文件或目录镜像为逻辑磁
盘
(
即虚拟磁盘
)
,
然后把文件存放在虚拟磁盘里
,
以便于
管理。这些磁盘
,
有的显示为资源管理器里的盘符
,
有的
有独立的界面
,
使用方便快捷。网络虚拟磁盘技术就是在
这种虚拟磁盘技术的功能之上加入网络功能
,
简言之
,
就
是把网络上的存储空间虚拟为本地逻辑磁盘的技术。
收稿日期
:2005-11-16
作者简介
:
刘立辉
(
1981-
)
,
男
,
河北人
,
硕士研究生
,
研究方向为计
算机网络技术及其应用
;
李 健
,
教授
,
研究方向为网络技术及信息
安全。
2
网络虚拟磁盘驱动在
WindowsNT
中的位置
2.1
WindowsNT
分层驱动原理
WindowsNT
提供了一种分层的体系结构
,
每一个
NT
设备驱动程序都有一个下层接口和一个上层接口。
低层的驱动程序直接控制硬件。在低层和上层驱动程序
之间的是中间层驱动程序
[1]
。
WindowsNT
的这种驱动
程序体系
,
在
Windows98
和
Windows2000
中得到了继承
和扩展
,
形成了现在的
WDM
体系。这使得在
Windows
NT
平台下
,
开发网络虚拟磁盘驱动成为可能。
第
8
期 刘立辉等
:
基于
TDI
的网络虚拟磁盘驱动研究与实现
WDM
使用了分层的驱动程序结构
,
而且
WDM
是基
・
201
・
打开
I:,
其中
I:
是由
DOS
分区
逻辑磁盘
D:
中的一个镜像文件
虚拟成的逻
辑磁盘。用户通过使用打开文件的高级函数调用
Win32
API
函数访问系统服务
,
系统服务程序首先调用文件系统
于对象的。为了便于对硬件的管理
,WDM
里对每一个单
一的硬件引入了一些数据结构
:
物理设备对象
(
Physical
DeviceObject
)
,
简称为
PDO;
功能设备对象
(
FunctionDe
2
viceObject
)
,
简称为
FDO;
过滤设备对象
(
FilterDeviceOb
2
jects
)
,
简称为
FiDO
。在数据结构栈中的每一个对象都属
驱动找到文件的逻辑位置
,
文件系统驱动再调用虚拟磁盘
驱动
,
将访问磁盘的逻辑位置转换为访问镜像文件的逻辑
位置
,
再调用文件系统驱动找到镜像文件所在逻辑磁盘的
逻辑位置
,
然后调用磁盘驱动转换为磁盘的物理位置
,
执
行打开操作。
↓
文件系统驱动
↓
虚拟磁盘驱动
↓
文件系统驱动
↓
磁盘驱动
于一个特定的驱动程序
,PDO
属于总线驱动程序
,FDO
属
于功能驱动程序
,FiDO
属于过滤驱动程序
(
如图
1
所
示
[2]
)
。
图
3
访问本地虚拟磁盘中的文件
(
3
)
访问网络虚拟磁盘中的文件
(
如图
4
所示
)
。例
如
,G:,
其中
,G:
是由远程磁盘
上的镜像文件
虚拟的。用户通过使用打开
图
1
分层驱动程序结构
文件的高级函数调用
Win32API
函数访问系统服务
;
系
统服务程序首先调用文件系统驱动程序找到文件的逻辑
位置
,
即
G
盘上的逻辑位置
;
文件系统驱动调用虚拟磁盘
驱动
,
将访问磁盘的逻辑位置信息及操作命令和数据交给
网络协议驱动
;
网络协议驱动调用网卡驱动将位置信息操
作命令及数据发送到远程服务器上
,
远程服务器负责完成
打开文件的操作
,
并把操作结果返回。
每个操作都使用
I/O
请求包。
IRP
先被送到设备堆
栈的最上层驱动程序
,
然后再逐渐过滤到下面的驱动程
序。每一层驱动程序都可以决定如何处理
IRP
。不同位
置的驱动程序扮演了不同的角色
,
总线驱动程序管理计算
机与
PDO
所代表的设备的连接。功能驱动程序管理
FDO
所代表的设备。过滤器驱动程序用于监视和修改
IRP
流。
2.2
分层结构中的网络虚拟磁盘驱动
虚拟磁盘驱动属于过滤器驱动程序
,
它的功能是修改
IRP
流。具体就是把对文件的位置请求
,
经过处理
,
指定
到真实的磁盘位置
,
并把命令和数据传递下去。
现在分析三种情况下
,
文件操作中对驱动程序的调用
过程。通过三种情况的比较
,
解释网络虚拟磁盘驱动程序
在
WindowsNT
系统结构中的位置及所起的作用。
结合图例对比如下
(
注
:
图
2
、图
3
、图
4
省略了细节和
)
:
一些与此处说明无关的过程。
(
1
)
访问
DOS
分区逻辑磁盘中的文件
(
如图
2
所示
)
。
图
4
访问网络虚拟磁盘上的文件
如
,
打开
C:
。用户通过使用打
开文件的高级函数调用
Win32API
函数访问系统服务
,
系统服务程序首先调用文件系统驱动找出文件的逻辑位
置
,
文件系统驱动再调用磁盘驱动转换为磁盘的物理位
置
,
找到该文件
,
执行打开操作。
↓
文件系统驱动
↓
磁盘驱动
3
网络虚拟磁盘驱动所涉及的
Windows
设备
3.1
WindowsNT
中的
NT
设备和
Win32
设备
WindowsNT
对象名字空间提供一种伞形结构
,
在其
下是个对象的自包含的集
,
叫做对象域
,
并允许对象名字
空间被扩充
[1]
。
I/O
管理器是一个二级对象管理程序
,
管
理着一个由磁盘文件、目录、设备组成的对象域。
I/O
管
理程序创建名字为
Device
的对象目录
,
来包含代表
I/O
设备的各对象的名字。
在用函数
IoCreateDevice
创建
Device
对象时
,
指定的
名称是设备对
WindowsNTExecutive
知道的名字。如果
图
2
访问
DOS
分区逻辑磁盘中的文件
(
2
)
访问本地虚拟磁盘中的文件
(
如图
3
所示
)
。如
,
计算机技术与发展 第
16
卷
・
202
・
要使设备对
Win32
子系统和
DOS
虚拟机可用
,
还必须给
设备一个
DOS
名称。在
MS-DOS
中
,
用户使用
A:
、
C:
、
D:
等等来指定软盘和硬盘驱动器
,Win32
子系统通过把
3.3
网络虚拟磁盘所涉及的设备对象
跟本地虚拟磁盘不同的是
,
网络虚拟磁盘驱动将
Win32
子系统对象目录中的虚拟盘符与网络设备连接
,
而
全部驱动器字母放入对象管理程序名字空间作为全程数
据来保护驱动器字母。为此
,
创建一个特别的对象目录
(
如图
5
所示
[1]
)
。
不是与本地磁盘设备相连。
TCP/UDP
就可以看作是网
络传输设备
[4]
。在网络虚拟磁盘驱动中
,
通过调用
TDI
函数实现对
TCP/UDP
设备的启动和控制
[5]
。至于对象
管理程序对符号连接的解析过程与本地虚拟磁盘相同
(
如
图
7
所示
)
。
图
5
Win32
设备对象目录
NT
设备名和
Win32
设备名位于对象管理器的名字
空间的不同部分。
NT
设备名在树的
Device
下面。而
Win32
名则出现在
DosDevices
下面。同一
Device
对象
的
NT
设备名和
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
子系统转译这个名字为
NT
对象
DosDevicesI:,
调用
NT
执行体打开文件对象
句柄。要找到这个文件对象
,
对象管理程序浏览对象名的
树
,
直到找到已知为
I:
的对象
,
并且发现这个对象是个符
号连接
,
它就检查符号链接对象的内容
,
从而解析出
De
2
vices
目录中的位置。
4
调用网络虚拟磁盘驱动时的文件处理过程
第
8
期 刘立辉等
:
基于
TDI
的网络虚拟磁盘驱动研究与实现
・
203
・
参照图
8,
阐述在
WindowsNT
中
,
调用网络虚拟磁盘
驱动时的文件处理过程。这里以执行高级语言里的文件
打开函数为例开始文件操作。
①执行函数
fopen
(
D:
)
。
②调用
Win32API
函数
CreateFile
(
d:
)
。
③调用
Windows
内核函数
NtCreateFile
(
D:myfile.
txt
)
请求系统服务。
5
结束语
要实现完整的网络虚拟磁盘系统还需要服务器端的
开发
,
服务器端需要实现空间分配和管理功能
,
如负载平
衡、数据一致等。硬件方面需要有大型网络存储设备
NAS,IPSAN
等。根据现在的需求
,
更侧重
IPSAN
的研
究。另外
,
网络虚拟磁盘技术正在进一步发展中
,
还有很
多亟待解决的问题
,
比如实现在保证效率的前提下实现安
全检验的功能
,
以及以改善用户使用方便性为目的的改
进。
参考文献
:
[1]
SNT
技术内幕
[M].
北京
:
清华大
④创建文件对象
,
对文件执行
I/O
操作。
⑤
I/O
创建
IRP,
为文件系统驱动分配堆栈
,
调用文
件系统驱动。
⑥文件系统驱动查找文件位置
(
在虚拟磁盘中的位
移
)
,
将位置信息交给
IRP,
调用虚拟磁盘驱动。
⑦虚拟磁盘驱动执行文件位置变换
,
将在虚拟磁盘的
位移转换为在虚拟磁盘文件中的位移
(
实际上
,
两个位移
是相等的
)
,
调用
TCP/IP
驱动。
⑧
TCP/IP
驱动调用网卡驱动。
⑨网卡驱动将数据发往服务器端。
⑩服务器端完成所要求的操作
,
返回操作结果。服务
器端的操作
,
就是根据传过来的位置信息对虚拟磁盘文件
进行的操作。
具体的驱动实现就是根据以上几个步骤
[6]
学出版社
,1993.
[2]
武安河
,
邰 铭
,
于洪涛
.Windows2000/XPWDM
设备驱
动程序开发
[M].
北京
:
电子工业出版社
,2003.
[3]
任爱华
,
李 鹏
,
刘方毅
.
操作系统实验指导
[M].
北京
:
清
华大学出版社
,2004.
[4]
朱涛江
,
卢 昱
,
王 宇
.
基于
TDI
的网络安全存储系统研
究与实现
[J].
华中科技大学学报
(
自然科学版
)
,2003
(
10
)
:
126-128.
[5]
丁 振
,
冯 丹
,
周 可
.Windows
下的虚拟网络存储的设
,
创建虚拟
计与实现
[J].
计算机工程
,2003
(
4
)
:163-165.
[6]
sNT
设备驱动程序设计指南
[M].
北京
:
磁盘设备对象
,
通过调用
TDI
函数
,
与
TCP/UDP
传输设
备的连接
,
使命令和数据在网络上传输
,
实现网络虚拟磁
盘功能。限于篇幅
,
代码分析不加阐述。
(
上接第
199
页
)
机械工业出版社
,1997.
COM
技术、
Server/Client
模式可靠性高且同步
/
异步数据
1.0[Z].Beijing:[s.n.],1998.
[2]
凌志浩
,
陈伟彬
,
马 欣
,
等1基于
OPC
数据存取规范的服
访问易于实现
,
这一切为
OPC
规范被迅速应用到工业控
制领域创造了良好的条件。文中介绍了
OPC
技术在分布
异构环境下的数据通信方法
,
实践表明
,
该方法具有可行
性
,
能够提高系统的效率。
OPC
技术现在己经成为工业
界系统互联的缺省方案
,
受到越来越多的设备厂商的认
可
,
因此
,
它必将成为未来发展的主流。
参考文献
:
[1]
OPCFoundation
1
OLEforProcessControlOverViewVersion
务器研究与实现
[J].
华东理工大学学报
,2004,30
(
3
)
:318
-321
1
[3]
胡旦华
.OPC
技术在分布式异构环境下的实时数据通信
[D].
保定
:
华北电力大学
,2003
1
[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
日前公布。


发布评论