【PHP开源代码栏目提醒】:网学会员在PHP开源代码频道为大家收集整理了“NAS中基于NFS的文件共享管理系统的研究 - 会议论文“提供大家参考,希望对大家有所帮助!
NAS中基于NFS的文件共享管理系统的研究 NAS中基于NFS的文件共享管理系统的研究 程延锋1 李风华1·2 史国振2 周长春1 西安电子科技大学计算机学院1 北京电子科技学院2 摘要:Nfs.utils是NFS协议的一种
开源软件,其exportfs工具负责文件共享管理,针对其必须在终端下以命令行方式管理文件共享的问题,提出基于B/S架构的nfs—utils文件共享管理系统。
通过修改nfs-utils源
代码,使用备份文件解决了管理进程和nfs—utils守护进程同时访问etab文件的互斥问题;管理进程在修改etab文件或者备份文件后,通过刷新内核缓冲区通知nfs—utils守护进程,使得修改后的配置文件立即生效;管理系统基于X.509采用对称加密和非对称加密算法实现了数据的加密传输,保证了管理机和NAS之间数据传输的安全。
与exportfs相比,本管理系统拓展了远程管理功能,并解决了由此引起访问etab文件的互斥、修改后配置立即生效等问题,实现了远程对文件共享高效和安全的管理。
关键词:NAS NFS配置文件Web 网络附加存储(Network Attached Storage,NAS)的主要功能是向异构系统的客户端提供文件共享服务…。
NAS基于通用Internet文件系统(Common IntemetFile System,CIFS)〔2 3和网络文件系统(Network File System,NFS)〔3 3等协议实现文件共享。
很多软件可以实现NFS协议,为了深入研究其软件以提高文件读写性能等问题,本文采用
开源的nfs.utils,通过修改它的配置文件操纵NFS服务,这就需要研究NAS管理员如何高效、方便和安全修改nfs—utils的配置文件实现文件共享管理。
nfs.utils本身提供一个工具exportfs负责对文件共享管理,但是必须在终端下以命令行方式去管理文件共享,导致对文件共享管理效率低下的问题,且命令行方式的文件共享管理不具有人性化的特点。
在WWW访问协议HTrP中,并没有考虑到安全闻题,WWW服务的安全就只能依赖于服务器和客户的其他方面设置。
针对上述问题,提出基于B/S架构的nfs-utils文件共享管理系统,系统利用 ·399· 第十八届全国信息保密学术会议(IS2008)
论文集PHP扩展模块,将nfs—utils的配置选项加以封装,并且对传输的数据进行加密,管理员通过Web浏览器可以高效、方便和安全的对基于NFS文件共享进行管理;通过Web页面远程管理文件共享,为防止数据泄漏等安全问题,必须使配置文件修改后立即生效,但不能通过重启NAS或者断电使其立即生效,因为这样对正在连接NAS的其他客户造成很大的影响,所以提出一种使nfs—utils的配置文件修改后自动生效的解决方法;接着通过修改nfs,utils源
代码,使用一个备份文件解决了管理进程写etab文件(/var/lib/nfs/etab)和nfs-utils守护进程读etab文件的互斥问题;最后通过采用对称加密和非对称加密的算法实现了对数据的加密传输,保证了管理机和NAS之间数据传输的安全。
1 NFS协议与nfs·utils 1。
1 NFS协议 NFS是由Sun Microsystem设计并实现的,主要用来通过网络透明地访问远程的文件系统心J。
所谓透明的访问,是指访问这些文件系统与访问本地的文件系统的用户界面是一致的,并不需要额外的命令HJ。
NFS采用C/S结构和TCP/IP协议族,允许多个客户端挂载服务器的文件系统。
NFS支持在不同硬件平台和操作系统之间实现文件共享,这种特性是通过其建立在远程过程调用(Remote ProcedureCall,RPC)和外部数据表示(eXternal Data Representation,XDR)上实现的∞J。
当NFS客户端对文件请求时,客户端通过虚拟文件系统(Virtual File System,vps)判断是本地文件请求还是对NFS服务端的文件请求,如果是本地文件系统请求,则交由本地文件系统处理,否则通过NFS交由服务器文件系统处理【6】。
NPS的体系结构如图l所示。
1.2 NFS协议在Linux系统中的实现软件一nfs-utils 在Linux中采用
开源的nfs—utils实现NFS;NFS有四个版本,目前较新版本的nfs-utils套件都实现了NFS的四个版本,但是Linux普遍使用的是nfs.utils实现的NFS的第三个版本。
与NFS服务相关主要的守护进程有6个,分别是:portmap、lockd、statd、mountd、nfsd和rquotaH’o 由于NFS是基于主机进行授权,所以在NFS服务器端中用户通过手工修改配 ·400· NAg中基于NFS的文件共享管理系统的研究 I素引崮 l本地文件l f访问{ F N代空≤i 艮:!:=:么 匿!竺苎竺卜叫二篓二l 国 L 奉 ▲ JI 丫 , 内核 ▲ 匡竭▲ 内核 + 丫 TCPfODe。
1 k堡z翻 艮。
。
婴翻 ▲ ▲ NFs客户端 N嗍臣务器 图1 NFS体系结构置文件/etc/exports限定TCP/IP网络中主机对服务器共享出的目录有读写或者只读权限等,其配置文件的格式示例如图2所示。
/tmp 192.168.0.0(ro,root—squash) #1P为192.168.0.1的主机对服务器中/tmp有只读权限,且客户端root权限压缩 /home 192.168.0.8(州,root_squash) #1P为192.168.0.8的主机对服务器中/home萑f读写权限,且客户端root权限压缩 /tmp 192.1 68。
3.0/255.255.255.O(ro) 髯网络192.168.3.0/255.255.255.0中的主机对服务器中/tmp有只读权限 /home 192.168.4.0/255.255.255.0(rw) 撑网络192.168.4.0/255.255.255.0中的主机对服务器中/home有读写权限 图2配置文件的格式实例2文件共享管理系统的设计 2.1系统框架及I/O流程 2.1.1系统框架 所设计的文件共享管理系统是一个基于web的管理系统。
使用Apache服务器 ·401· 第十八届全国信息保密学术会议(IS2008)
论文集提供Web服务,脚本语言采用PHP,‘Web页面请求通过HTl’P进行传输,管理数据通过自行设计的加密/解密模块实现了加密传输,保证了数据的安全。
NAS和NFS客户端采用C/S架构,NAS管理机和NAS之闯采用B/S架构.系统的总体框架如图3所示。
议 Q熏:.器 网一善 囝哐酸固申 国国…目 图3 系统的总体框架 在Web页面中,NAS管理员NFS读写主机列表中增加一个对指定目录有读写权限的NFS客户端,其操作流程如图3所示,当管理员在浏览器中把NFS客户端的主机IP移动到读写主机列表后,后台完成以下交互步骤: Step 1.浏览器将更改的内容(共享的名称,主机的IP和主机的权限等)通过加密模块进行加密并提交到NAS; Step 2.对传输到NAS的数据通过解密模块进行解密,接着传给Apche服务器进行处理,并将处理结果提交到PHP扩展模块,通过PHP模块锯析成底层c模块的操作,并调用nfs—manage模块接口,自动修改配置文件,并使其修改后立即 NAS中基于NFS的文件共享管理系统的研究生效: Step 2.1调用nfs—save~added—expofl接El在/etc/exports中增加一个export项,使得在重启服务或者重启机器时,读取文件中的数据; ,Step 2.2判断etab文件是否被设置了读取锁,如果是,修改etab.bak文件(/var/lib/nfs/etab.bak),否则修改etab文件,通过nfs—add—export接口实现; Step 2.3凋用cache—flush接口,把etab文件或者etab.bak文件的最后修改时间设为内核缓冲Ⅸ刷新时间,刷新内核缓冲区; Step 3.nfs—manage模块将是否修改成功返回给PHP扩展模块,如果失败,则会将失败的原因(如:IP地址不合法)同时返回给PHP扩展模块; Step 4.Apache服务器将PHP扩展模块返同结果生成HTML格式的数据,通过NAS的加密模块进行加密并传回管理机。
Step 5.管理机通过解密模块对数据进行解密,并把结果显示到Web页面中。
2.1.2 NAS管理机、NAS和NFS客户端之间的交互流程 在NAS管理机端,以授权一个NFS客户端对NAS中的某个目录有读写权限为例,三者具体的交互过程如下:系统管理员在NAS管理机中打开Web浏览器,输入管理员用户名和密码,进入管理系统;然后在Web页面中授权一个NFS客户端对NAS中的某个目录有读写权限的操作;NAS管理机发送的数据到达NAS,NAS对发送的请求进行解析,并调用nfs—manage模块操作配置文件,然后NAS发送返回消息给NAS管理机;NFS客户机向NAS发送访问共享请求;最后NAS对请求进行处理,返回给NFS客户端;其三者之间的交互流程如图4所示。
2.2系统的具体实现 2.2.1实现平台 本系统开发环境是基于Linux平台进行开发的,由于Linux内核2.6的Web服务性能比内核2.4的web服务性能好悼J,所以操作系统采用的是Fedar06,其内核版本是Linux-2.6.18,Web服务端采用的是Apache2.2+PHP5.1;考虑系统是基于Web的应用且提高系统的安全性和高效性,选择了C+PHP+Java.Script+HTML来实现整个管理系统的开发,C主要完成修改配置文件以及使其立即自动生效等功能,PHP负责Web页面和C的接口,JavaSeript负责完成必要的客户端的一些操作和验证工作,HTML书写基本的Web页面和表单等。
2.2.2配置文件的更改 ·403· 第r八辐全国信息保密学术会议(IS2008)
论文集 圈4 NAS蕾理机、NAS和NF¥客户端之问的交互流程 在基于NFS的文件共享中,单机服务器中异步写的性能比同步写的性能好,所以对与选项sync/a5ync默认设置为async;其次由于访问控制列表(Access Con—lrol List,ACL)“提供更加安全的网络数据共享,所以对与选项n0一acl/acl默认设置为acl;根据/etc/exports格式的特点定义了表示卟export项的数据结构也一export—info—t。
typedef stnact nfs—export—info—s! nfs host info—t hom;/,单个主机或者~个网络 char path〔NFS PATH—NAME—LEN+1〕;//共享目录 u埘t anonuid;//映射用户id 目d~t…鲥;//映射组id unsigned int flag;//选项标志位 }也一export info—t; 通过定义一个export项的结构体,可以很方便地修改配置文件,进而容易实现增加主机对目录读写权限和主机映射用户等一系列的共享管理操作。
2 2 3管理系统的功能模块组成 从功能角度上,管理系统主要包括共享空间管理、主机管理、用户/组管理、配额管理和共享管理。
(1)共享空间管理为NAS管理员提供创建、删除和扩展共享空间的接口,实 NAS中基于NFS的文件共享管理系统的研究现对磁盘空间进行有效的管理;共享空间中提供对用户进行配额的功能支持,但NFS是基于主机进行授权的,没有用户的概念,必须通过anonuid或者anongid的设定间接地对主机进行配额,且anonuid或者anongid是读写用户的id; (2)主机管理为NAS管理员提供了增加主机和删除主机的接口,当允许主机访问NAS中的某一特定共享时,从主机表中选中主机IP添加到目录的读写主机列表或者只读主机列表中; (3)用户/组管理为提供NAS管理员增加用户/组和删除用户/组的接口,功能是为主机做配额和权限限定;对一用户/组被设定对某一共享具有读写或者只读权限,则把用户添加到目录的ACL表中; (4)配额管理为NAS管理员提供了对用户创建配额、修改配额和删除配额的接口,进而实现对主机的配额; (5)共享管理为NAS管理员提供了创建共享和删除共享的接口。
2.3修改配置文件使其自动生效的解决方法 NAS管理员通过管理机远程管理文件共享,通过Web修改配置文件时,为防止数据泄露等安全问题,必须使修改后的配置文件立即生效,但不可能通过重新启动NAS或者断电使其立即生效,这样会对正在连接的其他客户端造成严重的影响,所以提出并实现了一种通过远程管理修改/ete/exports后使其自动生效的方法,在修改/etc/exports的同时,相应的修改etab文件或者etab.bak文件(为解决etab文件互斥操作而创建的一个备份文件),并且把etab文件或者etab.bak文件最后修改时间设为内核缓冲区刷新的时间,刷新内核缓冲区,这样达到了修磅3/Yetc/ex—ports后使其立即生效的目的,其算法描述如下: Step 1.把更新的内容写到/ete/exports中; Step 2.根据etab文件是否存在读取锁,如果不存在,把更新的内容写入etab文件,否则写入etab.bak文件; Step 3.把Step 2所修改文件的最后修改时间设为内核缓冲区的刷新时间,刷新内核缓冲区,是通过把etab文件或者etab.bak文件最后修改时间值分别写到/proc/net/rpc/auth.unix.ip/flush、/proe/net/rpc/nfsd.export/flush和/proc/net/rpc/nfsd.fh/flush三个文件中实现。
通过上述方法,实现了通过远程管理对配置文件修改后自动生效的目的,不会产生对正在连接的其他客户端因断电或者重新启动NAS造成严重的影响和数据 ·405· 第十八届全国信息保密学术会议(IS2008)
论文集泄露等安全问题。
2.4 etab文件互斥操作的解决方法 /ete/exports只是方便Linux终端用户对NFS客户端进行设置,而nfs.utils守护进程真正读取的是etab文件中的设定项;为了实现远程管理修改/ete/exports使其自动生效,系统中管理进程在修改/ete/expons的同时,必须相应的修改etab文件;管理进程和nfs.utils守护进程分别修改和读取etab文件,二者在时间上可能重叠,但二者的操作是互斥的。
当nfs.utils守护进程在读取etab文件时,管理进程不能更改它,这将导致管理操作失败,管理进程可以等待一段时间继续尝试,但是当多个NFS客户端连续请求时,管理进程可能会等待很长一段时间,不能对NAS进行高效的管理。
为了避免文件操作的互斥问题,可以让etab文件更新操作滞后一段时间,管理进程先把更新的etab文件写入一个备份文件etab.bak文件中,nfs—utils守护进程在下一次读取etab文件时,把etab.bak文件同步到etab文件中;为实现上面所讲述的解决方法,需要管理软件和nfs-utils共同完成。
在管理软件中,当管理进程试图修改etab文件时,通过判断etab文件是否被nfs—utils守护进程施加读取锁,如果被加锁,管理进程把更新后的文件内容写入etab.bak文件,否则直接写入etab文件,其算法描述如下: Step 1.判断etab文件是否存在读取锁,如果存在则转Step 3; Step 2.管理进程把更新的内容写入etab文件: Step 2.1对etab文件施加写入锁; Step 2.2把更新的内容写入etab文件; Step 2.3对etab文件解锁,返回; Step 3.管理进程把更新的内容写入etab.bak文件: Step 3.1对etab.bak文件施加写入锁; Step 3.2把更新的内容写入etab.bak文件; Step 3.3对etab.bak文件解锁,返回。
在nfs.utils中,必须修改源
代码中的xtab—export—read等接口,通过判断etab文件和etab.bak文件的最后修改时间值大小,决定nfs—utils守护进程是直接读取etab文件还是把etab.bak文件中的内容同步到etab文件以后再读取etab文件,其算法描述如下: ·406· NAS中基于NFS的文件共享管理系统的研究 Step 1.获取etab文件最后修改时间tl,如果不能获取tl,说明etab文件不存在,返回,否则继续执行; Step 2.获取etab.bak文件最后修改时间t2,如果不能获取晓,说明etab.bak文件不存在,nfs—utils守护进程直接读取etab文件,返回,否则继续执行; Step 3.如果tl>=t2,则nfs-utils守护进程对etab文件建立读取锁,如果成功,则读取etab文件,释放读取锁,返回,否则继续执行; Step 4.如果tl<t2,则把etab,bak文件的内容写到etab文件,然后读取etab文件: Step 4.1 nfs—utils守护进程对etab.bak文件建立读取锁,如果失败,则说明管理进程在修改它,此时etab文件必然可读,读取etab文件,返回,否则继续执行; Step 4.2 nfs—utils守护进程对etab文件建立写入锁,如果失败,则说明管理进程正在执行修改etab文件操作,读取etab.bak文件,释放etab.bak文件的读取锁,返回; Step 4.3把etab.bak文件的内容写到etab文件中,释放文件锁; Step 4.4 nfs.utils守护进程读取etab文件。
通过管理软件和修改后nfs—utils源
代码共同作用,虽然没有解决nfs—utils守护进程读etab.bak文件和管理进程写etab.bak文件之间的冲突,但保证了nfs.utils守护进程读取的etab.bak文件是最新的,解决nfs.utils守护进程读etab文件和管理进程写etab文件的冲突,提高了管理的效率。
2.5管理机与NAS之间数据的加密传输 采用对称加密和非对称加密算法相结合的方式实现管理机和NAS之间数据的加密传输。
使用对称加密算法对需要加密的管理数据进行加密,然后使用非对称加密算法的公钥加密对称加密密钥;解密时则相反,先用非对称加密算法的私钥解密加密后的对称加密算法的密钥,然后用对称加密的密钥解密被加密的管理数据本身;接着,NAS对管理数据进行处理,并对处理的结果使用对称加密算法对数据进行加密并传到管理机;最后管理机对加密的数据处理结果使用对称加密算法进行解密,并显示到WEB页面。
其中的非对称加密基于X.509证书。
加密是在管理机的加密模块中完成,根据NAS的数字证书,使用该证书中的公钥对对称加密密钥进行加密,加密后形成 ·407· 第十八届全国信息保密学术会议(IS2008)
论文集一个MIME消息发送出去。
解密是在NAS的接收管道完成的,加密后的MIME消息进入到接收端口,然后进入接收状态,接收端使用管理机的数字证书中的私钥解密得到对称密钥,对接收到的消息进一步解密,获得消息原文;NAS对原文进行处理,并且对处理的结果使用对称加密算法进行加密,把密文传送到管理机,管理机进行使用对称加密算法进行解密,并显示到WEB页面。
整个过程如图5所示。
一输人生成的对称密 管理机 NAS 图5管理机与NAS之间数据的加密传输全过程 对数据的加密使用对称加密算法,在管理机用密钥生成函数产生一个随机密钥Key,利用密钥长度为128位AES算法对数据进行加密。
3结束语 本文主要针对exportfs工具存在必须在终端下以命令行方式管理文件共享的问题,提出基于B/S架构的nfs—utils文件共享管理系统,扩展了远程管理功能,并解决了由此引起访问etab文件的互斥、修改后配置立即生效等问题和管理机与NAS之间数据的安全传输问题,实现了远程对文件共享高效和安全的管理。
系统只实现了对单台NAS的管理,随着NAS在信息存储中不断增加,实现对多台NAS统一有效管理是下一步研究的主题。
References:〔1〕Gash A.Gibson,Rodney Van Meter.Network Attached Storage Architecture〔J〕.COMMUNICA· ’lIONS OF THE ACM,2000,43(11):37-45. NAS中基于NFS的文件共享管理系统的研究〔2〕CIFS Explained〔OL〕.http://www.codefx.eom/CIFS_Explained.htm,2001.〔3〕B.Callagha,B.Pawlowski,P.Staubach.NFS Version 3 Protocol Specification〔0L〕.http:// www.fiqs.org/rfcs/rfel813.html,1995.〔4〕Wang Xiao—Liang,Zhu Zhen—Min,Li Ying.Realize NFS Service Based on User Resource Manage— ment with Windows〔J〕.Applieation Research of Computers,2003,19(1):246—247.〔5〕W.Richard Stevens.TCP/IP mustrated Volumel:The Protocols〔M〕.translated by Fan Jan— Hua,et aL Beijing:China Machine Press,2000.347—361.〔6〕Gary Nutt.Operating Systems〔M〕.translated by Luo Yu,et a1.Third Edition,Beijing:China Machine Press,2005.344—345.〔7〕Christopher Smith.Linux NFS—HOWTO〔OL〕.http://nfs.sourceforge.net/nfs—howto,2006.〔8〕Shi Heng—Hua.the comparison of Web serving on Linux 2.4 and 2.6 kernels〔D〕.Master,Bei— jing University of Technology Dissertation,2005.〔9〕九Gnmbacher.POSIX Access Control Lists on Linux〔C〕.In:Proceedings of the Annual USENIX Technical Conference,FREENIX Track.San Antonio,TX:USENIX Association.2003. 259—272..