WSIO - 基于WEB服务的远程文件I/O

WSIO 基于WEB服务的远程文件I/O

团队名称:IHEPer

作者:刘爱贵

电子邮箱:[email protected]

单位:中科院高能物理研究所 计算中心

PDF下载:http://download.csdn.net/source/2143070

摘要

WSIO是一个基于Web Service技术实现的、与POSIX标准兼容的文件I/O,实现了存储系统的远程文件I/O功能,主要解决异构环境下存储系统之间的互操作问题,方便存储资源的有效整合和扩展。

WSIOGNU LINUX下基于gSOAPC/C++实现,它由服务器、客户端工具、文件系统、用户开发库等几个部分组成,支持GLOBUS GSI以及访问的授权和认证,实现了通用文件访问接口GFAIGeneral File Access Interface)来对不同存储系统的支持和扩展。它不仅可以进行文件的远程复制,而且实现了类似本地文件系统的API,可以远程打开文件进行读写和定位操作。另外,基于FUSE(File System in User Space)实现了WSIO文件系统,提供本地文件系统接口。

1. 背景和应用领域

计算和存储是计算机系统的两在基本任务。随着网络技术的不断发展,基于局域网的存储系统已经不能很满足计算对存储的需求,而将存储与计算分离的广域网存储系统目前仍不是非常成熟。由于广域网的复杂性,广域网存储将面临着很多问题有待解决,主要表现在存储系统的数据互操作、资源整合、可扩展性、性能和安全等方面。

传统的分布式文件系统,如AFSNFSDFSCIFS等,都是基于局域网的分布式文件服务系统,即集群文件系统。由于网络延迟远高于局域网,频繁的通信使得这些文件共享协议都无法应付高延迟的广域网环境。目前,许多研究组织已经开发出了支持在广域网上的文件访问方法,其中包括GLOBUS项目的GridFTPGASSCERN CASTOR项目的RFIO[5]访问协议,美国FERIMI和德国DESY实验室开发的dCache系统的dcap访问协议。

GridFTP传输性能很高,在网格[1]中使用广泛,但它只是一种文件传输协议,没有提供与本地文件系统一致的访问接口和对象模型。GASSRFIOdcap虽然提供了类似POSIX的文件访问接口,但都存在一些问题。GASS简化了数据一致性问题,只支持广域网环境下的常见I/O模式:只读、共享写、只追加、单用户读写。RFIOdcap具有较强的文件共享语义,可用于广域网环境下的文件访问,但性能问题导致不能得到实际应用。

更为重要的是,这些协议相互不兼容,在异构性(包括硬件和软件)不断加剧的广域网环境下,存储资源的整合、不同系统间的互操作、存储系统的可扩展性以及符合用户使用习惯的访问方式都成了新的难题。另外,这些协议都需要使用特定系统端口,但出于安全的考虑,局域网防火墙可能关闭这些端口,从而无法从远程进行访问。

WSIO充分利用了WEB服务的优点,提出一种新的方案来改进当前广域网文件I/O存在的上述问题,可以应用于广域网环境下一些存储需求场景。

(1) 异构存储系统之间的数据互操作

WEB服务利用XMLSOAPWSDLUDDI等标准提供了一个松散耦合的分布式计算环境。WSIO以不改动原存储系统为原则,利用WEB服务实现了文件系统访问接口的RPC服务,使得用户可以方便地访问远程的存储资源,在不同存储系统之间实现数据互操作。

(2) 内部存储资源的外部访问

WEB服务中使用SOAP作为消息传递的协议。SOAP采用HTTP等协议作为底层通信协议,可以穿越企业防火墙在广域网上进行通信交互。因此,WSIO突破了很多存储系统因为安全考虑不允许外部访问的限制,可以为这些存储系统提供一个安全的外部数据访问方法。

(3) 存储资源的整合与统一访问

WSIO实现了异构存储系统之间的数据互操作,可以无缝地对广域网上的存储资源进行整合,消除信息孤岛。WSIO屏蔽了不同存储系统访问协议的细节和差别,提供了统一的、与POSIX标准兼容的文件系统接口,大大降低对用户的要求,方便用户对各种存储系统的访问。

(4) 细粒度的文件I/O访问操作

WSIO实现了文件I/ORPC功能,不仅可以进行文件的远程拷贝,而且实现了类似本地文件系统的API,可以远程对文件进行OPENSEEKREADWRITE等细粒度的I/O访问操作。这可以很好满足文件的部分传输、用户I/O应用编程等方面的需求。

2. 作品特点和设计思路

广域网中存在许多存储系统,包括分布式文件系统、海量存储系统,不同的系统是为了满足不同的存储需求而设计的。由于采用不同的软件及数据访问协议,这些存储系统互不兼容。这显然是低效的,用户使用也很不方便。实际应用中,用户和应用程序需要在各种存储系统之间快速有效地进行数据的传输。

Web Services是用标准规范的XML格式描述的一组操作接口,它隐藏了实现服务的细节,允许独立于硬件和软件编写服务,支持松散耦合和跨平台的,并可用于实现复杂的系统集成。因此,基于WEB服务我们设计和实现了远程文件I/OWSIO它以不改动原存储系统为原则,实现了文件系统访问接口的RPC服务,使得用户可以方便地访问远程的存储资源,在不同存储系统之间实现数据互操作。WSIO的主要有以下几个特点:

(1) 支持异构环境

借助WEB服务良好的互操作性,WSIO支持异构环境,包括存储协议、操作系统、软件等的异构性,实现对不同存储系统、不同平台的数据访问。如在WINDOWS平台下,使用WSIO访问LINUX平台下存储系统的数据。

(2) 远程文件I/O

WSIO不仅提供了远程数据访问服务,还实现了语义较为完备的文件系统I/O操作,如OPENSEEKREADWRITE等。这是与目前广域网上许多数据传输协议的主要区别,如FTPHTTPGridFTP等。

(3) GLOBUS GSI支持

提供GLOBUS GSI支持,提供传输层和网络层安全保障,支持WEB服务和客户端的相互授权和认证。这是一个可选项,启动GSI支持时,需要一个有效的用户或主机证书,并以证书的DN为单位进行WSIO服务的授权和认证。

(4) 可扩展性

WSIO中实现了一个通用文件访问接口GFAI,把各种协议统一起来,提供了一个一致性的、与POSIX标准兼容的、可扩展的存储系统访问接口。通过GFAI的扩展,WSIO可以方便地实现对不同存储系统的支持和扩展。

(5) 本地文件系统接口

基于FUSE实现了WSIO文件系统,提供了本地文件系统接口,用户可以像访问本地文件系统一样来访问WSIO,原有的应用程序无需修改即可直接访问WSIO存储资源。

(6) 多种服务器应用模式设计

针对数据访问的特点,设计了不同模式应用模式的WSIO服务器,包括多线程服务器、线程池服务器、队列服务器,满足不同应用场合的需求。

(7) 针对SOAP的性能优化

结合开发工具,从应用层次对影响WSIO的主要因素进行了分析和优化,分别从数据编码、HTTP ChunkingHTTP keep-alive、数据压缩、缓存大小等角度对SOAP性能进行了调优。

3. 运行和开发环境

WSIOGNU LINUX(2.4)系统下,使用C/C++实现,同时使用了gSOAPGSI-PluginFUSE开源软件系统,详细软件版本如下:

¨ GNU LINUX Scientific Linux CERN 2.4.21-32.0.1.EL.cernsmp

¨ GCC3.2.3

¨ GSOAP2.6.2

¨ GSI-Plugin2.7

¨ FUSE2.5.3

¨ Globus Toolkit 4.0.3

WSIO目前运行在GNU LINUX(2.4)系统下,未来计划移植至SOLARISWINDOWS等平台下。

4. 功能描述

WSIO主要由服务器、客户端、GFAI三个模块组成。WSIO中远程文件地址表示为:协议类型://服务器地址[:端口]/路径/文件名,比如,
file://liuag.ihep.ac.cn/file1 (本地文件)
rfio://castor.ihep.ac.cn/castor/file2 (CASTOR文件)
dcap://dcache.ihep.ac.cn/pnfs/file3 dCache文件)。

WSIO服务器实现了与POSIX标准兼容的基本文件I/O操作RPC,如wsio_openwsio_readwsio_writewsio_seekwsio_closewsio_stat等,并通过WEB服务提供外部访问接口。WSIO接收和处理来自WSIO客户端的I/O RPC请求,通过GFAI来后台具体的存储系统进行交互,处理结果通过SOAP传回WSIO客户端。对于一个存储系统,在其内部部署WSIO服务后,其他系统就可以使用WSIO客户端与其进行数据交换。WSIO服务的参数选项包括服务器地址、端口号、服务器类型以及各种优化参数,在服务启动时指定。

WSIO客户端分为客户端工具、开发库、文件系统三种形式,它们都是通过WSIO服务的外部调用接口来请求WSIO服务。其中,RPC消息和I/O数据都通过SOAP协议进行传输。客户端可以访问数据,也可以对文件和目录进行操作。WSIO提供的客户端工具有wslswscpwscatwsrmwsmkdirwsrenamewschownwschmod等。客户端开发库提供了与服务端RPC对应的I/O函数库,如wsio_openwsio_readwsio_writewsio_seekwsio_closewsio_statWSIO文件系统可以直接mount到本地文件系统上,通过VFS来请求WSIO服务。

GFAI使用共享对象动态加载技术,实现了不同存储系统的一致性访问接口。WSIO服务调用GFAI与本地存储系统进行I/O交互。GFAI目前支持本地文件系统、CASTORdCache存储系统,提供了如下基本的POSIX文件系统API

(1) gfai_creat, gfai_open, gfai_seek, gfai_read, gfai_write, gfai_close

(2) gfai_access, gfai_chmod, gfai_chown, gfai_stat, gfai_rename, gfai_unlink

(3) gfai_mkdir, gfai_rmdir, gfai_opendir, gfai_readdir, gfai_closedir

5.工作原理

WSIO - 基于WEB服务的远程文件I/O

1 WSIO工作流程

WSIO是一个WEB应用服务,但简化了SOA架构,无需服务代理的参与,服务提供者与请求者直接交互。WSDL描述了服务的行为、方法和输入输出格式,用户采用SOAP协议访问WSIO服务时,只需要通过WSIO发布的WSDL了解SOAP消息基本格式,从而屏蔽WEB服务的底层实现细节。

WSIO基于WEB服务实现,使用SOAP协议来进行远程方法的调用。特别地WSIO使用SOAP进行I/O数据的传输,I/O数据使用SOAPDIME附件形式封装。WSIO工作流程如图1所示,描述如下:

(1) 客户端应用使用SOAP消息向WSIO服务发送请求,SOAP消息中包含方法名、参数值和相关I/O数据(如图所示);

(2) WSIO服务接到服务请求,根据传递过的SOAP消息进行服务方法调用,其中需要调用GFAI访问存储系统;

(3) 请求服务调用完成后,WSIO服务将结果封装成SOAP消息返回给客户端,SOAP消息中包含方法调用结果和相关I/O数据(如图所示);

(4)客户端收到返回的结果,请求完成。

WSIO - 基于WEB服务的远程文件I/O
2 WSIO_OPEN请求的SOAP消息格式
WSIO - 基于WEB服务的远程文件I/O
3 WSIO_OPEN响应的SOAP消息格式

WSIO可以改进广域网环境下存储系统存在的一些问题:

1、SOAP采用HTTP作为底层通信协议,可以穿越防火墙在广域网上进行通信交互,因此WSIO突破了很多存储系统因为安全考虑不允许外部访问的限制。

2、分布式存储系统有的提供文件访问接口,有的仅提供文件传输接口,而且不同系统间的接口差别较大,其中不少部分都于POSIX标准不兼容。WSIO屏蔽了不同系统访问协议的细节和差别,并提供了统一的、于POSIX兼容的文件系统接口,方便了用户使用。

3、不同存储系统的异构性使得存储资源的整合和互操作难度愈增。WSIO借助WEB服务良好的互操作性,解决了存储系统间的互操作问题,可以无缝地整合广域网上的存储资源,消除信息孤岛(如图4所示)。在存储系统上部署WSIO Server,其他系统就可以使用WSIO客户端与其进行数据交换,可扩展性非常好。WSIO支持第三方控制传输,用户在客户端可以发起在两个不同系统之间传输数据。

WSIO - 基于WEB服务的远程文件I/O<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Visio.Drawing.11" ShapeID="_x0000_i1025" DrawAspect="Content" ObjectID="_1330505129"> </o:OLEObject> </xml><![endif]-->

图 4 WSIO实现存储资源的整合和互操作

4、WSIO实现的其实是文件IORPC功能。IO操作请求通过SOAP传递给WSIO服务器,WSIO服务调用本地的文件访问协议服务并把结果再通过SOAP回传给WSIO客户端。可见,WSIO维持了原存储系统的文件共享语义和相关特性。

5、海量存储系统等访问频繁、数据量大,可以通过增加WSIO服务器数量来解决负载均衡问题。实验表明WSIO性能经优化后可以满足应用的需求。

6. 体系结构和关键技术点

WSIO - 基于WEB服务的远程文件I/O<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Visio.Drawing.11" ShapeID="_x0000_i1026" DrawAspect="Content" ObjectID="_1330505130"> </o:OLEObject> </xml><![endif]-->

5 基于WEB ServiceWSIO体系结构

从图5可以看出,WSIO由服务器和客户端两部分组成,包括WSIO ServiceWSIO CLI/APIProtocol Modules三个主要模块。WSIO ServiceWEB服务,它负责接收和处理来自WSIO客户端的I/O RPC请求。WSIO客户端通过命令行工具或API请求WSIO服务。其中,RPC消息和I/O数据都通过SOAP传输。Protocol Modules是各种文件访问协议服务的API库集合,WSIO Service和客户端调用这些API库与本地存储系统进行I/O交互。

WSIO的体系结构比较简单,但在WEB服务的帮助下,却显现很强大的能力。WSIO实现了存储系统的远程文件I/O功能,在异构环境下存储系统之间的进行数据互操作,方便存储资源的有效整合和扩展。WSIO 关键技术点如下:

(1)SOAP大数据量传输

尽管SOAP提供了强大的互操作性,但是SOAP自身的特点决定了它的性能低。首先,SOAP消息采用XML编码,不仅需要额外的XML转换和解析,而且编码后的消息体积比机器表示在很多(一般为4~8倍)。再者,HTTP不是有效率的通讯协议。影响传输速率的主要因素是编码后数据传输时间和连接次数。当文件很大时,数据编码方式直接决定性能,相差可高达数倍。WSIO中采用以下技术来提高SOAP的传输性能:

a) 使用base64BinaryDIME编码方式减少冗余信息和提高效率。WSIO中的RPC参数使用XML编码,小量I/O数据使用base64Binary编码,大量I/O数据则使用DIME编码,获得较好的可扩展性和整体性能。

b) 数据压缩在带宽低的情况下,能减少传输数据量,一定程度上提高性能。

c) HTTP Keep-alive,永久连接能减少HTTP连接产生的延迟,对于高延迟和低带宽的网络以及频繁的小容量SOAP信息交换非常有效。

d) HTTP ChunkingHTTP以分块方式数据传输,不需要事先确定数据长度,可大大提高效率。

e) 缓存大小调整,这里的缓存分SOAPI/O两种。合理的SOAP缓冲区和I/O读写记录大小有利于性能提高,但并非越大越好。根据实验结果,将SOAP_BUFLENRecord大小分别设为256KB4MB

(2)多种应用模式服务器设计

针对数据访问的特点,设计了不同模式的WSIO服务器,分为普通(COMMON)、单一(STANDALONE)、多线程(MULTITHREAD)、线程池(POOL)、队列(QUEUE)GSI六种服务器模式。COMMON是最简单的运行模式,STANDALONE模式于COMMON基本相同,主要一个区别就是它可以运行于80端口。大量数据传输或设置了keep-alive选项时,请求的服务处理时间过长,多线程模式防止了其他请求得不到服务的情况。线程池模式通过限制服务线程数量,防止过度消耗服务器系统资源造成宕机。队列模式在线程池的基础上为线程加上了服务请求队列,防止线程池满时请求被丢弃,适合服务请求频繁的应用。

(3)可扩展通常文件访问接口GFAI

GFAI(General File Access Interface)把各种文件访问协议统一起来,为用户提供了一个一致性、可扩展的存储系统访问接口。GFAI根据访问协议动态加载不同的共享对象,访问不同的存储系统。这使得GFAI具有可扩展的特性,兼容未来出现的新协议。

频繁的动态库加载以及函数符号查找是非常耗时的,GFAI使用了缓存和HASH表技术来提高性能。使用一个结构体HASH数组来缓存所有已加载协议共享对象库的句柄和函数指针,以协议类型为键值进行HASH数组的查找。这样,加载动态库和查找函数符号的次数就大大减少了,节省大量的系统开销。另外,为了方便用户扩展新的协议,GFAI提供了自动生成代码框架的功能,用户只需要根据存储系统实现框架中的数个POSIX I/O函数即可。

(4)GLOBUS GSI支持

安全性是WEB服务发展的一大障碍。GSIGTGlobus Toolkit)中的安全组件,它用于解决网格中的基本安全需求。WSIO基于SOAPplug-in扩展机制,使用开源的GSI Plug-in实现了GSI支持,保证了传输层和网络层安全,并且使用X.509证书的DN对服务进行授权和认证,确保WSIO在复杂的广域网环境下的安全性。

GSI传输层和消息层的安全是开发者是透明的,直接调用GSI Plug-in提供的API即可。但WSIO服务的授权和认证需要在程序逻辑中自行实现,其中需要访问plug-in数据结构,由GSI Plug-in在处理接收到的SOAP消息时进行调用。

为了防止恶意使用或破坏WSIO服务,需要对服务请求者进行授权。以用户X.509证书DN为单位,使用访问控制列表ACL进行服务访问授权。请求服务时,用户证书被嵌入在SOAP消息中,接收到请求消息时,WEB服务检查ACL中是否存在相应的DN,然后才做出应答,只要被授权的请求者才按照SOAP消息的内容进行响应。

(5)本地文件系统接口

WSIO用户使用于LINUX文件操作命令相似的客户端工具来访问WSIO服务,如wslswscpwscatwsmkdirwsrmdirwsrmwsrenamewschmodwschown等。用户使用很不方便,需要改变传统文件访问使用习惯。WSIO基于FUSE,在用户空间实现了WSIO文件系统,提供了本地文件系统接口。这样,用户可以像访问本地文件系统一样来访问WSIO服务,原有的应用程序无需修改即可直接访问WSIO存储资源。

WSIO文件系统主要实现了满足最基本语义的VFS虚拟文件系统接口函数,主要包括wsio_lstatwsio_readdirwsio_openwsio_readwsio_writewsio_close25API。然后使用FUSE的数据结构struct fuse_operations进行关联映射,通过FUSE内模块就实现了WSIO的本地文件系统接口。

7. 功能模块设计

WSIO主要分为服务器、通用文件访问接口GFAI、客户端三个模块,其中客户端又包括客户端工具集、文件系统、开发库三个部分。

7.1 WSIO服务

WSIO服务的实现主要有两块:WSIO服务器和WSIO服务方法。WSIO服务器分为普通(COMMON)、单一(STANDALONE)、多线程(MULTITHREAD)、线程池(POOL)、队列(QUEUE)GSI六种服务器模式。WSIO服务方法是一组I/O函数的RPC,对外提供调用接口,内部调用GFAI与不同存储系统进行交互。

WSIO - 基于WEB服务的远程文件I/O<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Visio.Drawing.11" ShapeID="_x0000_i1027" DrawAspect="Content" ObjectID="_1330505131"> </o:OLEObject> </xml><![endif]-->

6 WSIO服务工作流程图

不同模式的WSIO服务器工作流程(如图6所示)基本相同,区别主要在于处理请求的方式有所不同,如单线程、多线程、线程池、队列等。其中GSI模式与其他几个模式差别较大,工作流程如下:

(1) 初始化Globus GSI运行环境;

(2) 初始化gSOAP运行环境;

(3) 注册GSI Plug-in

(4) 检查X.509有效证书,并获取相关信息;

(5) 实现并设置服务授权认证回调函数;

(6) 开始监听用户连接并进入服务循环;

(7) 接受服务请求,调用认证函数检查是否授权,处理授权请求者的请求。重复(7)直到服务结束。

(8) 销毁运行环境,退出服务。

WSIO服务方法实现了一组在wsio.h(如图7所示)中定义的RPC函数,服务的WSDL文件wsio.wsdlgSOAPsoapcpp2根据wsio.h产生。WSIOWSDL中描述了服务的行为、方法和输入输出格式,用户可以据此使用各种语言和开发工具开发WSIO的客户端来请求WSIO服务。WSIO服务方法按照POSIXSOAP的标准进行定义和实现,其中I/O数据传递使用base64BinaryDIME编码。


GSOAP不支持复杂的数据类型,wsio.h文件中也不能包含(#include)其他的头文件,可能不能第生效。因此,需要使用void数据类型,不指明具体数据类型,返回后再作处理。然而,gSOAP不能对void数据类型进行序列化(serialize)操作,除非使用unionstruct分配实时类型信息。因此,当传出二进制I/O数据时,需要使用base64Binary结构类型(如图7)来操作。

WSIO - 基于WEB服务的远程文件I/O
7 base64Binary结构类型

在使用上述结构向外部传出数据时,需要使用soap_malloc进行内存分配,并指定__size值。DIME编码同样使用此数据结构,同时需要指定其中的idtypeoptions域。Idtype可以自由定义,options使用soap_dime_option函数进行定义。

7.2 通用文件访问接口GFAI

通用文件访问接口GFAI的目标就是屏蔽不同存储系统的访问协议细节,向上为用户提供一个统一的、与POSIX标准兼容的文件访问接口,方便用户使用。采用共享对象库动态加载技术并定制出标准接口,兼容未来的文件访问协议。GFAI体系结构如图8所示,应用程序通过GFAI提供的接口对文件进行访问,在它的下层是各种文件访问协议。为了使GFAI支持某种协议,需要按照标准为该种协议封装文件系统API函数库的共享对象。GFAI目前支持本地文件系统、CASTORdCache存储系统,提供了如下基本的POSIX文件系统API

(1) gfai_creat, gfai_open, gfai_seek, gfai_read, gfai_write, gfai_close

(2) gfai_access, gfai_chmod, gfai_chown, gfai_stat, gfai_rename, gfai_unlink

(3)gfai_mkdir, gfai_rmdir, gfai_opendir, gfai_readdir, gfai_closedir

WSIO - 基于WEB服务的远程文件I/O
8 通用文件访问接口GFAI架构

文件访问协议共享对象库按上面的API标准进行封装,这些对象库并没有编译进GFAI中,而是需要的时候动态加载和调用。函数库名与库中的函数名与协议类型单一映射,如RFIO协议的函数库名应为librfio.so,库中函数应以rfio_为前缀。GFAI函数根据协议名来加载对象库和定位函数符号,实现对不同存储系统的访问。GFAI调用的工作流程如下:

(1) 应用程序调用GFAI接口函数,其中指定协议名称;

(2) GFAI根据协议名计算的HASH值,检查对应对象库是否已加载,如果已经加载则跳到第(4)步;

(3) 根据协议名加载共享对象库,并查找常用函数符号,缓存在一个结构体HASH数组中(结构体如图9所示);

(4) 调用函数符号访问存储系统,并返回处理结果。

WSIO - 基于WEB服务的远程文件I/O
9 GFAI中缓存对象库句柄和函数符号的结构体

7.3 WSIO客户端

WSIO客户端又包括客户端工具集、文件系统、开发库三个部分,都是通过远程调用WSIO的服务方法对存储系统进行访问。客户端工具集提供了一组类似于文件操作命令,如wslswscpwscatwsmkdirwsrmdirwsrmwsrenamewschmodwschown,另外还有一组支持GSI的命令集,如gsi_wslsgsi_wscpgsi_wscatgsi_wsmkdirgsi_wsrmdirgsi_wsrmgsi_wsrenamegsi_wschmodgsi_wschown。开发库实现了一组类POSIXC/C++函数,供用户开发WSIO应用程序,目前没有完全实现。WSIO文件系统提供了本地文系统接口,用户可以像使用本地文件系统一样来访问WSIO服务,非常符合用户的使用习惯。

WSIO客户端工具集的开发相对比较简单,直接调用由gSOAP工具产生的客户端函数即可,如删除操作的调用:

soap_call_ns__unlink(&soap, server, "", fap, filename, &result);

其中,soap为运行环境,调用前需要使用soap_init进行初始化;serverWSIO服务的endpoint,如http://liuag.ihep.ac.cn:8080fap为文件访问协议名,如filerfiodcap

WSIO文件系统基于FUSE(File System in User Space)实现,将远程的WSIO服务直接挂载至本地文件系统,为用户提供了一个透明的存储空间,使得用户感觉不到在使用远端的WSIO服务,而好像在使用传统的文件系统。因此,WSIO文件系统比客户端工具更易于使用,符合用户以前的使用习惯。FUSE内核模块为普通应用程序与内核虚拟文件系统的交互提供了一个桥梁,它的工作原理如图10所示。

WSIO - 基于WEB服务的远程文件I/O

10 FUSE工作原理

按照文件系统基本操作语义的标准,定义一组符合POSIX标准的I/O操作函数,并调用WSIO服务方法来实现。然后,使用FUSE中定义的fuse_operations进行映射(如图11所示),与具体的操作语交进行关联。实际运行过程中,FUSE内核模块根据这一映射关系来传递来自VFSI/O操作请求,实现用户对WSIO的访问。

WSIO - 基于WEB服务的远程文件I/O
11 WSIO文件系统操作与FUSE的映射关系

8. 相关软件比较和分析

从数据传输性能和效率的角度比较,WSIO不如主流的文件传输工具,如FTPGridFTPwget等,这主要是因为WEB服务和SOAP的自身特点所决定的。但是在对WSIO的性能进行优化后,其传输速率于SCP(SSH)相差无几(如图14所示)。然而,相对于这些文件传输工具,WSIO提供了细粒度的文件I/O操作,可以穿透防火墙访问存储资源,支持基于GSI的安全,并提供了本地文件系统接口,这些是WSIO的优势所在。

WSIO的研究背景和应用领域也于文件传输工不同。文件传输工具主要用于数据传输,除此以外并没有更好的用处。WSIO除了用于数据传输外,可以应用于异构存储系统之间的数据互操作、内部存储资源的外部访问、存储资源的整合与统一访问和细粒度的文件I/O访问操作等方面,实际应用范围比较广泛。

以下是几组测试数据,包括WSIO性能优化效果、缓存大小对WSIO的性能影响、WSIOSCP的性能比较。

WSIO - 基于WEB服务的远程文件I/O<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Excel.Chart.8" ShapeID="_x0000_i1029" DrawAspect="Content" ObjectID="_1330505133"> <o:WordFieldCodes>\s</o:WordFieldCodes> </o:OLEObject> </xml><![endif]-->

12 LANWSIO性能优化效果

WSIO - 基于WEB服务的远程文件I/O<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Excel.Chart.8" ShapeID="_x0000_i1030" DrawAspect="Content" ObjectID="_1330505134"> <o:WordFieldCodes>\s</o:WordFieldCodes> </o:OLEObject> </xml><![endif]-->

13 缓存大小对WSIO的性能影响

WSIO - 基于WEB服务的远程文件I/O<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Excel.Chart.8" ShapeID="_x0000_i1031" DrawAspect="Content" ObjectID="_1330505135"> <o:WordFieldCodes>\s</o:WordFieldCodes> </o:OLEObject> </xml><![endif]-->

14 WANWSIOSCP性能比较

9. 总结

WSIO是一个基于Web Service技术实现的、与POSIX标准兼容的文件I/O,实现了存储系统的远程文件I/O功能。WSIO支持GLOBUS GSI以及访问授权和认证,实现了通用文件访问接口GFAI来对不同存储系统的支持和扩展,并提供了本地文件系统接口。

WSIO除了用于数据传输外,可以应用于异构存储系统之间的数据互操作、内部存储资源的外部访问、存储资源的整合与统一访问和细粒度的文件I/O访问操作等方面,满足应用中用户对数据的一些特定需求。

WSIO目前还处于模型开发阶段,存在许多不足之处,如性能、稳定性、容错性以及跨平台等。今后开发中,将继续在开源的框架下,对WSIO进行改进和完善,达到可实际应用的阶段,希望可以解决广域网环境下存储和数据访问的一些实际问题。

你可能感兴趣的:(Web,应用服务器,网络协议,网络应用,SOAP)