IPv6存储集群网络模块的设计应用
2015-07-18王悦
王悦
摘要:互联网协议 IPv4技术存在很多缺陷,如网络地址资源有限,地址空间狭小,网络地址分配率低,安全性不高等问题。随着互联网规模和网络结构的不断扩大和发展,人们对网络协议的要求就越来越高,而IPv4技术已经远远不能满足互联网发展的实际需要。在这样的形势下, IPv6作为IPv4技术的下一代网络协议就运用而生。网络协议 IPv6技术作为新一代网络协议,很大程度上解决了传统IPv4技术的多种不足问题,成为新一代网络协议的主要标志,使用了将近20余年的IPv4技术将会成为历史。该文主要针对IPv6存储集群网络模块的设计和应用进行了分析和探讨。
关键词:IPv6;IPv4;存储集群;网络模块;设计应用
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)012-0044-02
IPv6作为新一代网络协议技术具备多重优点,网络地址资源丰富,有超大的网络地址空间,服务质量高,分级地址模式以及安全性高等特点。随着科技的不断创新和人们要求的不断提高,视频会议、流媒体直播以及数据通信等等业务的增加,而这些实现这些应用的过程中都需要足够的网络储存支持,这就导致网络的数据量急剧增长。
SAN和NAS是以往常用的存储集群系统,SAN和NAS属于共享存储系统,系统中的每个节点都可以对其进行访问,但如果系统中的节点增加到一定程度时,I/0总线将会影响系统性能的进一步增长,这样就不能满足实际需要。而Lustre的出现有效地解决了SAN和NAS中出现的问题,为海量存储系统的构建提供了基础条件。目前,大多数分布式文件系统都是通过IPv4技术实现的,在IPv6网络协议逐渐成为互联网标准的形势下,构建基于IPv6的分布式文件系统将成为互联网的必然发展趋势。文章将介绍把支持IPv4的Lustre分布式文件系统改进为支持IPv4和IPv6两种网络协议的分布式文件系统的设计原理和方法步骤,并在两种协议环境中对Lustre的性能进行测试。
1 基于Lustre的文件系统、网络模块
Lustre文件系统是有多个公司和科研机构共同研发的基于对象存储的文件系统,其中之一的IBM(即国际商业机器公司)开发的超级计算机Bule Gene(深蓝)和HPStorageWorks Scalable File Share(HP的可扩展文件共享系统)用到的文件存储系统都是都是Lustre文件系统。Lustre文件系统表现的多方面优点主要原因是因为该系统同时采用了MDS(元数据服务器)、OST(基于对象的存储服务器)以及Client(客户端)形成三方通信模式。元数据服务器的主要功能是维护和管理目录结构、命名空间以及用户权限,并且还负责保持系统数据的一致性;存储服务器主要就是负责系统对象数据的存储管理;客户端负责存储系统文件的运行,和存储服务器实现系统数据交互,负责系统文件的读写以及存储对象的属性改变,另外还有通过获取符合链接、目录、inode结构等方式与元数据服务器进行交互。
开发基于IPv6的Lustre文件存储系统要解决的一个关键性问题就是Lustre文件存储系统的网络模块,Lustre文件存储系统采用的网络模块是Portals MPI,Portals MPI主要是针对规模较大的并行系统而设计开发的,该网络模块利用旁路应用程序以及旁路操作系统等相关技术到达零拷贝的效果,并通过对网络抽象层的应用可以独立支持各种网络类型。TCP/IP NAL是Portals 支持的多种网络类型中唯一一个涉及IP协议栈的,所以只需要对网络抽象层进行改进设计。为了对Socket API同时支持IPv4和IPv6的原理有更深入的理解,就需要对Socket API的内核实现原理进行分析。Linux系统内核对IPv6的支持是从该系统版本2.2开始,本文是以版本2.6为研究对象进行分析。
2支持IPv4和IPv6双协议栈的Socket设计原理
2.1选择地址结构
IPv4和IPv6之间最明显的变化及时把32位地址位数增加到128位,in6_addr和in_addr分别是两者在Linux系统中的描述形式,但最后还是采用其对应的Socket地址结构进行描述,极sockaddr_in6和sockaddr_in,主要原因有三个:
第一,实现协议无关性的一个关键要素就是系统再进行IP地址传递同时就其所属协议族进行传递,这就需要地址结构中包含有所属协议族,而Socket地址结构很好地解决了这个问题。
第二,IPv4的单播地址可以保证全球唯一,但IPv6包含有链接局部和聚合全局单播地址等,链接局部单播地址只能在给定链路内保证唯一,但不可以保证全球惟一,其代表的接口是否相同不能利用in6_addr来进行具体判断,只有把sockaddr_in6结构中的sin6_scope_id(指定链路范围的成员)与结构中in6_addr(Pv6地址成员)进行有效结合才可以对接口进行精确识别。
第三,sockaddr_storage 结构和sockaddr 结构是Socket 的两个通用地址结构,sockaddr 结构的容量要比sockaddr_storage 结构小很多,因此在进行空间预留时很容易出现空间不够的问题,而sockaddr_storage 结构有足够大的容量。
2.2 选择IP地址类型
第一,选择IPv6地址类型。大端字节序和小端字节序是系统内存中多字节类型的两个存储方法,两个存储方法的主要区别就是高序字节存储在起始地址,还是低序字节存储在起始地址。IPv6地址的表达方式有三种,三种地址表达方法的128位数地址都是利用数组来表示。数组元素是多字节的表达方式有两种,另外一种是s6_addr,s6_addr的元素是利用长度为16的单字节数组。为了省去大端字节和小端字节相互转换的麻烦,IPv6地址的表达方式尽可能采用s6_addr。
第二,选择IPv4的地址类型。通常采用的int的IPv4地址表达方法其实是很不安全的,因为int类型在很多情况下并不是32为,而且程序的可读性也有所降低,因此IPv4的地址类型可以用in_addr来表示。
2.3使用同时支持IPv4和IPv6 双栈的Socket API
以往的Socket API仅仅支持IPv4协议,随着IPv6的诞生和发展,产生了支持双栈的API。在对支持双栈的API进行调用时一定要明确地址结构的格式和地址结构的地址族,协议之间的相关性不能被隐藏。Getnameinfo()和getaddrinfo()是Socket API提供的两个新型函数,协议无关性可以利用这两个函数来实现。利用getnameinfo()可以通过服务端口号和Socket地址结构获取服务名和主机名;getaddrinfo()可以由服务名和主机名获取服务端口号和Socket地址结构。
2.4 Socket系统在内核中的调用
系统调用主要是给用户空间的程序提供内核服务,系统调用用到的函数主要有connect(),socket(),以及setsockopt()等。对于比较重视效率的程序,如分布式系统,其系统调用如果比较频繁的话就需要转移到内核空间,以便提高效率。
在内核中实现的系统直接调用的过程中,效率较高的都是底层函数。进行socket系统调用的时候,获得socket结构指针后对其所指向的方法进行直接调用,此时程序可以到达最高效率。结合文章以上论述分析,这种情况下指定的操作集就是socket指针指向的方法。另外,因为用户空间的地址范围和内核空间的地址范围有所不同,所以一定要对寄存器的段描述符进行更改,使段描述符指向内核空间,才可以实现内核中的系统调用。
3对改进后的 Lustre文件系统进行测试
运用文章的上述设计原理,成功设计开发出同时支持IPv4和IPv6双协议的分布式文件存储系统。对改进后的Lustre文件系统性能进行测试,该文件系统既可以在IPv4网上正常运行,同时也可以在纯粹的IPv6网上运行。
为了对IPv4环境下的Lustre和IPv6环境下的Lustre进行性能比较,进行了对比性测试。测试的需要的相关设备:配置相同的两台机器,其一为Client和OST,另外一个是MDS;硬盘(300 GB×2 SATA)、DDR RAM(512 MB)、CPU(3. 0 G)作为性能测试硬件环境;Linux-2.4版本的RedHat 9.0和Lustre-1.2(改进后的文件系统)作为软件环境。Iozone为测试工具。
具体测试方法:在Linux-2.4加载IPv6以及不加载IPv6的环境下运行支持IPv4和IPv6双栈的文件系统Lustre,利用Iozone在系统中写出一定大小的文件,根据测试结果分析,系统的数据块从小逐渐到大,在IPv4和IPv6环境下Lustre都可以获得宽带,Lustre在两种环境中的运行性能没有表现出太多差别,主要是因为IPv4的地址长度仅仅是IPv6地址长度的四分之一,但IPv6的数据包结构比较简单,而且有固定的报头长度,有利于硬件的运行和实现,整体分析,Lustre在IPv4和IPv6环境下的性能基本相同。
4 结束语
本文以仅支持IPv4网络协议的分布式文件系统Lustre为基础,利用Socket接口设计、开发了同时支持IPv4和IPv6两种网络协议的分布式文件系统,对其设计开发原理做了具体阐述,并对改进后的Lustre分布式文件系统进行性能测试。测试结果证明基于IPv6的Lustre分布式文件系统可以用于构建新一代网络储存集群,接下来要研究的是基于IPv6的数据传输问题。
参考文献:
[1] 曹强,罗怡,谢长生,张常军.IPv6存储集群网络模块的设计应用[J].江南大学学报:自然科学版,2007(4).
[2] 陈如明. 对IP 技术发展中一些问题的思考[J]. 电信科学, 2005, 21(8): 6-9 .
[3] 徐志桐. 在IPV4环境下部署IPV6网络的策略[J]. 中国新技术新产品,2009(9) .
[4] 罗怡,谢长生,曹强,张常军. 下一代互联网存储集群系统的设计与实现[J]. 计算机工程与科学,2007(6) .
[5] 周俊. 对IPv4到IPv6过渡策略的浅析[J]. 扬州职业大学学报,2004(4) .
[6] 袁秀梅,樊劲辉,武浦军. IPv4/IPv6过渡时期的网络方案设计[J]. 北京工业职业技术学院学报, 2004(3) .
[7] 王晓娟,刘景然,丁峰. IPv4向IPv6过渡方法的研究[J]. 青岛远洋船员学院学报,2006(2) .
[8] 罗林,李腊元. IPv4/IPv6过渡机制的研究[J]. 中国水运:理论版,2006(4) .