系统设计
USN 是一个复杂的系统,涉及到许多复杂的技术,本文主要论述其核心技术的设计和实现,即GMPFS、ASA 和iSCSI 系统的设计与实现。 GMPFS 可以驻留在多种操作系统平台上(UNIX,Windows ,Linux) ,支持各种协议用户的访问(NFS ,CIFS ,iSCSI) ,为用户或应用程序提供对网络存储系统的数据访问服务。 ASA 将多种存储技术(这些存储技术各有所长,也各有所短) 整合为一个统一的海量存储系统,充分发挥各种存储技术的优势,使得该存储系统对特定的应用程序而言服务性能达到最优,有效地满足多方面的应用需求。iSCSI 真正的实现了块I/ O 和文件I/ O 在IP 网络上的统一,文件协议和块协议在IP 协议上的统一。
全局多协议文件系统的设计
GMPFS 保留了分布式文件系统的灵活性和高性能的优点,而克服了其在不同I/ O 协议支持方面的缺陷,能同时支持NFS、CIFS 和iSCSI 协议用户的访问。 GMPFS 在提供文件存取的方法和文件目录结构的同时,还为每种存储卷提供特定的存储模式。 每种存储模式包含某种文件系统的元数据结构,操作接口(文件类型和数据块类型) ,功能函数集(格式化,检索等) ,优化方法(cache方法和预取等) 和存储空间分配回收方法及数据结构。对于文件卷而言,存储模式包含实现POSIX语义的操作函数和文件目录结构;对于分区卷而言,存储模式必须面向特定分区类型,如NTFS ,ext3。 所有的存储模式都必须在元数据服务器中的ASA 系统中注册,以便ASA 为用户的I/O 请求进行通道选择。
GMPFS的结构如图3 所示。其中协议转换接口主要通过NFS 的扩展程序模块和samba 模块的组合对NFS 协议和CIFS协议的支持,并通过iSCSI 目标器驱动程序的扩展对iSCSI 协议的支持。启发式数据管理接口主要是用启发式方法获得用户对存储数据的需要,如性能、使用率以及安全性等。GMPFS数据组织逻辑界面提供数据组织的逻辑视图,这一点正是针对传统文件系统文件目录结构对于海量数据难以管理的弱点,在增加元数据信息的前提下,通过查询和检索,按照用户需要提供各种类型文件视图,例如根据文件创建的用户和时间进行分类。扩展的文件或卷操作接口、数据组织与分配管理、元数据组织结构和I/ O 定向器等主要是保证与传统的文件系统操作语义兼容,实现程序级的数据访问。应用程序无需修改就可以使用USN 系统中的数据。提供与元数据服务器中的ASA 及存储资源的接口和通讯,能充分利用ASA 系统所掌握的存储资源,合理组织数据,满足用户或应用程序对数据存储的多方面、个性化要求。如通过同时提供服务器通道和附网高速通道,改善用户的I/ O 性能服务,减少服务器瓶颈。
iSCSI系统设计
iSCSI 协议定义的是SCSI 到TCP/ IP 的映射,即将主机的SCSI 命令封装成IP 数据包,在IP 网络上传输,到达目的节点后,再恢复成封装前的SCSI 命令,从而实现SCSI 命令在IP 网络上的直接、透明传输。它整合了现有的存储协议SCSI 和主流网络协议TCP/ IP 等两种主流协议,实现了存储和网络的无缝融合。从应用的角度看,iSCSI 一方面通过SCSI 命令的远程传送,实现了和远程存储设备的命令级交互,使用户访问远程的SCSI 设备像本地的SCSI 设备一样方便,而且具有高速度;另一方面也可用于改造传统的NAS、SAN 技术,实现NAS 和SAN 的融合。iSCSI 系统是USN 系统的核心部分之一,iSCSI 的设计实现了基于IP 的数据块访问机制。
目前iSCSI 的实现方式可以考虑采用以下三种方式:纯软件方式、智能iSCSI 网卡实现方式、iSCSI HBA 卡实现方式。由于我们是设计USN 的原形系统,所以只采用纯软件方式,iSCSI HBA 卡方式是下一步产品化我们将实现的目标。iSCSI系统整体设计模型如图4 所示(不包括管理模块) 。服务器端(Target) 采用linux 操作系统, 客户端( Initiator) 采用Windows2000。SCSI 微端口驱动在系统中生成一个虚拟的SCSI 磁盘,过滤驱动截获系统发给SCSI 磁盘的SCSI 命令,通过核心态的网络接口发给服务器处理。
自主存储代理系统的设计
自主存储代理ASA 的一端面对海量存储系统。目前的存储系统有DAS(直连存储) 、NAS、SAN、iSCSI 等,ASA 能够自动地发现海量存储系统中存储设备的种类和可利用的各种资源,自主地对这些存储设备和资源进行有效的统一管理和优化;根据应用的不同和应用程序的具体需求,安排与应用程序相适应的存储设备种类、性能以及可靠性和可用性等级等,使应用程序得到最优的存储资源分配。
ASA 的另一端面对应用程序(GMPFS) 。ASA 通过对目前存储系统所使用的元数据进行扩展,采用启发式的方法,收集用户应用信息,为用户提供统一、方便、快捷的存储访问接口以及合理的数据存储方案;根据用户I/O请求所涉及数据的属性,选择客户端与存储设备交互数据的通道,即元数据(目录、卷信息等) 和小数据I/O请求,选择服务器通道,对大数据I/O请求选择高速附网通道。大、小数据I/O请求由ASA 自主地根据整个系统的I/O信息量进行调整。ASA 系统结构如图5 所示。
客户端与USN交互流程
USN 系统中包括三类用户:Windows 文件I/O用户(使用CIFS 协议) ,Unix 文件I/O用户(使用NFS 协议) ,iSCSI 块I/O用户(使用iSCSI 协议) 。用户在客户端与USN 系统交互流程与图6 所示。
块I/O客户的具体的数据读写流程为(如图6) : (1) 客户1上的应用程序发出的块I/O命令(SCSI 命令) 经iSCSI 设备驱动层和TCP/ IP 协议栈之后,封装成IP 数据包,在IP 网络上传输; (2) 封装后的SCSI 命令达到USN 服务器之后,经解封装,恢复成封装前的SCSI 命令,USN 服务器利用这些SCSI 命令对iSCSI 存储设备发出块I/O读写请求; (3) 被请求的数据块经iSCSI 设备中的iSCSI 层和TCP/ IP 协议栈封装成PDU ,iSCSI 设备传送的PDU 到客户端可经两个途径:一种是经过服务器转发,一种是经过高速附网通道直接传到客户端; (4)PDU 经IP 网络上传输返回到客户1 后,PDU 经客户1 解封装并由其文件系统组合成文件。
当USN 系统提供File I/O 服务时,其数据读写过程(如图6 所示) : (1) 客户2 (文件I/O) 向USN 服务器发出文件读写请求(其工作方式和传统的NAS 相同) ; (2)USN 服务器接到客户端的文件读写请求后:一方面,将该I/O 请求发给对应的NAS设备或NAS 头,NAS 设备或NAS 头将所请求数据传给USN 服务器,再经USN 服务器传到客户端;另一方面USN 服务器不把文件I/O 请求传到NAS 或NAS 头,而是将NAS 或NAS 头的IP 地址传给客户端,客户端通过该IP 地址直接与NAS 或NAS头进行数据交互。
这里的NAS 头主要是支持FC 协议的SAN 设备能直接挂到TCP/ IP 网络,支持NFS/ CIFS 用户的访问,NAS 头也可安装iSCSI目标器驱动程序支持iSCSI 用户的访问。不论是块I/O请求还是文件I/O请求,都可通过附网高速通道实现客户端与存储设备的数据交互。
试验评估
从客户端对构建USN 的各子存储系统以及整个USN 进行功能和性能评测,并作进一步的比较。我们从两个方面对统一存储网进行测试:功能测试和性能测试。功能测试包括: (1)构建100M及1000M以太网环境,将iSCSI 存储设备与服务器连接;在服务器操作系统中安装iSCSI 软件包后,使用户能够通过网络获得iSCSI 存储设备提供的存储空间,并能象使用本地硬盘一样对其进行操作。
本测试项测试服务器端iSCSI 盘安装、设置、管理和使用等各项功能; (2) iSCSI 存储设备作为NAS 头的存储设备,与NAS 头组成一个NAS 存储系统,本测试项测试iSCSI 盘在NAS 中的安装、设置、管理和使用等各项功能; (3) iSCSI 盘与本地盘、FC-RAID 盘构成各种冗余度的RAID ,本测试项测试各种存储盘在RAID 中的安装、配置、管理和使用等各项功能; (4) 多个NAS、iSCSI 设备、NAS 头连接FC-RAID 通过多GMPFS 和ASA 构建成USN 海量存储系统,本项测试测试GMPFS 和ASA 系统在融合NAS、iSCSI 和SAN 的系统中的安装、配置及使用等各项功能。
性能测试包括:测试在100M和1000M网环境中不同工作负载下NAS 存储设备、iSCSI 存储设备、FC-RAID、本地硬盘以及它们组成的海量USN系统的数据传输性能:包括单位时间内的IO 次数、一次IO 的平均响应时间、数据传输率和CPU 利用率。该项测试的主要思想是针对不同的网络应用环境,对各种存储设备和各种传输通道进行频繁的IO 处理,在确定时间内统计并计算IO 率、数传率、响应时间、CPU 利用率等性能参数,从而得到的各种性能评估。