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

日前公布。