`
izuoyan
  • 浏览: 8935652 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

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

团队名称:IHEPer

作者:刘爱贵

电子邮箱:liuag@ihep.ac.cn

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

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.工作原理

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)客户端收到返回的结果,请求完成。


2 WSIO_OPEN请求的SOAP消息格式

3 WSIO_OPEN响应的SOAP消息格式

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

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

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

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

<!--[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. 体系结构和关键技术点

<!--[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与不同存储系统进行交互。

<!--[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)来操作。


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


8 通用文件访问接口GFAI架构

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

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

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

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

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


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所示。

10 FUSE工作原理

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


11 WSIO文件系统操作与FUSE的映射关系

8. 相关软件比较和分析

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

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

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

<!--[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性能优化效果

<!--[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的性能影响

<!--[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进行改进和完善,达到可实际应用的阶段,希望可以解决广域网环境下存储和数据访问的一些实际问题。

分享到:
评论

相关推荐

    node-v12.20.1-sunos-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于Springboot+Vue的乡政府管理系统-毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    一名合格的程序猿修炼手册.md

    一名合格的程序猿修炼手册.

    5MHz 函数发生器使用说明书

    5MHz 函数发生器使用说明书

    99- 矿山工业互联网平台解决方案.pptx

    99- 矿山工业互联网平台解决方案.pptx

    基于Python大学生社会实践申报系统的设计与实现带vue前后端分离毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    工厂工资明细表Excel模版

    基于提供的字段介绍,我们可以设计一个基础的工厂工资明细表Excel模板结构如下: | 序号 | 姓名 | 工种 | 工作天数 | 工时费/天 | 小计(正常工资) | 加班时间 | 加班费率/小时 | 小计(加班工资) | 预借 | 合计(实发工资) | 签字 | 备注 | | ---- | ---- | ---- | -------- | ---------- | -------------- | -------- | -------------- | --------------- | ---- | -------------- | ---- | ---- | | 1 | | | | | | | | | | | | | | 2 | | | | | =D2*C2

    供应链管理 高成本、高库存、重资产的解决方案.rar

    随着市场竞争的不断加剧和客户需求的多样化,传统的供应链管理模式面临着高成本、高库存和重资产等一系列挑战。为了有效应对这些挑战,企业亟需通过数字化转型来重塑供应链管理,实现效率提升和成本降低。本资料《供应链管理:高成本、高库存、重资产的解决方案》提供了针对这些问题的综合性数字化解决方案。在这份精品资料中,读者将了解到如何利用先进的信息技术手段,如大数据、云计算、物联网(IoT)和人工智能(AI),对供应链进行优化。通过实时数据分析,企业能够精准预测市场需求,从而减少过剩库存,降低仓储成本。同时,智能化的供应链协同平台可以加强供应商与制造商之间的合作,提高响应速度和灵活性,缩短产品交付周期。此外,资料还深入探讨了如何通过数字技术实现供应链的可视化管理,使企业能够全面掌握供应链的每一个环节,及时发现并解决问题,避免成本浪费。通过采用轻资产运营模式,企业能够减轻固定资产负担,提高资本使用效率。最终,这份资料不仅为企业提供了一套完整的供应链数字化转型路径,还结合具体案例分析,展示了数字化转型如何在实际操作中带来显著成效,帮助企业在激烈的市场竞争中保持领先地位。重新回答||

    五相感应电机矢量控制模型MATLAB

    适合相关科研人员,新手借鉴啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

    node-v10.14.0-x64.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于STM32F103C8单片机-FLASH读写程序KEIL工程源码.zip

    STM32学习软件编程资料,STM32F103C8单片机经典外设应用设计实例软件源代码,KEIL工程文件,可供学习参考。

    node-v12.22.8-sunos-x64.tar_3.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v12.16.2-sunos-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    菜鸟自制流密码.docx

    菜鸟自制流密码.docx

    基于大数据的房产估价.doc

    基于大数据的房产估价 基于大数据的房产估价是一种利用海量数据和分析技术来评估房地产价值的方法。它通过收集、整合和分析各种与房地产相关的数据,以提供更加准确、全面的房产估价服务。 首先,大数据在房产估价中的应用主要体现在数据收集和处理上。这些数据可能包括不同时间点的房产属性、成交量、成交额、成交时长等,以及消费者线上行为数据和市场交易数据等。这些数据可以来自于多个渠道,如政府部门、房地产机构、互联网平台等。通过对这些数据的收集、清洗、整合和分析,可以更加准确地判断房地产市场的现状和趋势,为房产估价提供有力的数据支持。 其次,基于大数据的房产估价方法还可以结合地理信息系统(GIS)和其他技术工具,对房地产价格进行精细化分析。例如,可以利用GIS系统判断各类城市生活配套设施对房地产价格影响的权重,或者结合消费者行为数据和交易数据,分析目标消费者的核心需求和迫切程度,从而更准确地判断房地产项目的可行性和市场潜力。 此外,基于大数据的房产估价还可以利用机器学习、人工智能等先进技术,构建预测模型,对房地产市场的未来发展进行预测和研判。这些模型可以根据历史数据和趋势,分析各种因素对房地产价格的

    node-v11.6.0-linux-armv7l.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    5G网优认证练习题题库.xlsx

    5G通信、网络优化与通信建设

    绘画学习平台微信小程序设计+ssm后端毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    抛光机-零件图-机械工程图-机械三维3D建模图打包下载.zip

    抛光机_零件图_机械工程图_机械三维3D建模图打包下载.zip

    Cambro 2020 21 产品目录

    Cambro 2020 21 产品目录

Global site tag (gtag.js) - Google Analytics