探索对等结构的网络软RAID系统的设计与实现
摘 要:
随着计算机技术与网络技术的快速发展,网络分布式存储逐渐成为存储技术研究的重点。本文设计并实现了对等结构的分布式存储系统—NDSS,它可以提供大容量、高性能、高可靠性与灵活扩展的存储服务。本文介绍了NDSS的系统结构、工作原理与关键技术,并提供了对系统访问性能的实验测试结果。
关键词:对等结构 分布式文件系统 分布式共享内存
1 引言
随着计算机技术的发展和计算机应用的普及,计算机的作用已不仅是进行计算的工具,其主要应用已逐渐转变为大量数据的存储与处理。存储技术在计算机科学中的地位变得越来越重要。集成电路技术发展使CPU速度有了显著的提高,而磁盘等I/O设备受机械部件速度的限制相对提高不大,这就造成单机系统的计算能力与I/O性能之间的差距越来越大,于是人们提出将I/O操作分散到不同计算机中并行处理来提高I/O性能。
随着计算机网络的发展与网络带宽的不断增长,利用网络技术来提高存储系统的容量、可靠性与可扩展性成为可能。近年来,网络分布式存储已经成为存储技术发展的新趋势。分布式存储系统可以将分散在网络中的存储资源组织起来,构成大容量的虚拟磁盘存储空间。目前,国外在分布式存储系统方面的研究课题相当多,但是这些研究成果大多仍处于实验室研究阶段,并没有大规模使用或成为商用的存储系统。
按照分布式存储系统的实现层次来划分,这些研究课题主要可以分为2个层次:一类实现在文件系统级;另一类实现在设备驱动级。其中,文件系统级实现是指通过分布式文件系统来实现的分布式存储系统,这类研究工作主要包括xFS、Coda与Frangipani【1】等;设备驱动级实现是指在文件系统下面的设备驱动层实现的分布式存储系统,这类研究工作主要包括Petal、RAID-x【2】等。目前,在分布式文件系统方面的研究课题要多一些。
NDSS是在文件系统层次上设计与实现的分布式存储系统,它基于分布式文件系统与分布式共享内存相结合的设计思路。通过分布式文件系统来实现对并发的文件访问的分布式处理,通过分布式共享内存来实现对元数据文件的分布式处理。分布式文件系统作为分布式存储系统中数据的组织者与管理者,为上层的应用程序提供对存储系统的文件访问接口。
2 系统结构设计
2.1 总体结构
NDSS是构建在局域网环境中的对等结构的分布式存储系统。图1给出了NDSS系统的总体结构。在NDSS系统中,每个存储节点都是一台可以单独运行的计算机,任意两个存储节点之间的关系都是对等的,在系统中不存在用来进行统一管理的中心节点。每个存储节点都提供自己的本地磁盘作为整个磁盘空间的一部分,这些本地磁盘空间被按照某种数据布局(例如RAID 0)组织起来。
NDSS可以将局域网中不同计算机中的存储空间统一组织与管理起来,以便为用户提供大容量、高性能、高可靠性与可灵活扩展的存储服务。分布式文件系统为用户提供了数据文件的访问接口,文件系统将对文件的读写操作分解成对多个数据块的读写操作,并将对实际的物理磁盘的读写操作发送到相应的存储节点中完成。
2.2 虚拟磁盘空间
虚拟磁盘空间(Virtual Disk Space)是分布式存储系统与分布式文件系统中的重要概念。虚拟磁盘空间是指为分布在不同节点中的磁盘提供统一的虚拟地址分配机制。分布式存储系统提供给用户的是一块大容量的、完整的、统一的虚拟磁盘空间,对实际的物理磁盘空间的访问对用户是透明的。用户只需通过文件系统对磁盘资源进行读写操作,而不需要考虑文件中的数据块实际存储在哪个磁盘中。
图2 给出了虚拟磁盘空间的概念。虚拟磁盘空间在操作系统环境中的不同层次有不同的概念。虚拟磁盘空间在设备驱动级的概念是单一磁盘映像(Single Disk Image),这是底层的分布式存储系统所要解决的问题。虚拟磁盘空间在文件系统级的概念是单一文件映像(Single File Image),这是上层的分布式文件系统所要解决的问题。目前,Linux 操作系统中的文件系统无法提供对多个节点的单一文件映像,因此我们需要开发专用的分布式文件系统。
3 关键技术分析
3.1 分布式文件系统
我们的分布式文件系统是在Linux 环境下设计与实现的。Linux 操作系统是一种开放源代码的操作系统,可以通过自行开发内核模块的方法来提供新服务的支持。Linux 操作系统支持的文件系统大多位于内核空间,而我们的分布式文件系统是在用户空间实现的。在Linux 用户空间实现文件系统的最大优点是实现起来相对简单。
分布式存储系统中的所有存储节点中都需要安装分布式文件系统。分布式文件系统需要被加载到某个磁盘设备(或分区)上,它负责处理通过网络接收到的分布式文件访问请求,完成文件访问请求中对本地磁盘的那部分读写操作,并与其它存储节点协同完成对远程磁盘的读写操作。分布式文件系统只负责管理它所加载的那部分磁盘空间,不会影响到存储节点中的本地文件系统进行正常的本地磁盘管理。
图3 给出了分布式文件系统结构。分布式文件系统采用模块化的设计方法,主要包括以下6 个组成模块:请求重定向模块、远程请求模块、远程响应模块、元数据管理模块、数据一致性模块与数据布局模块。其中,请求重定向模块负责接收来自远程的访问节点的存储访问请求;远程请求模块与远程响应模块负责完成存储节点之间的通信;元数据管理模块负责处理与数据文件相关的元数据信息的操作;数据布局模块负责实现虚拟磁盘空间的数据布局;数据一致性模块负责解决并发访问控制与数据一致性问题。
分布式文件系统中的文件分为3 种类型:系统文件、元数据文件与数据文件。其中,系统文件用来保存文件系统的全局信息,例如加载文件系统的设备、单个数据块大小、位图信息等;元数据文件用来保存相应的数据文件的状态信息,例如文件访问权限、文件大小、数据块指针等;数据文件用来保存文件中的实际数据信息,它被以数据块形式分散保存在所有存储节点中。
分布式文件系统提供了自定义的应用程序访问接口(API),它为应用程序提供了对文件的操作方法,例如对文件进行创建、读取、写入等操作。该API 与标准UNIX/POSIX 的文件操作调用类似。
当某个存储节点接收到对系统的文件访问请求时,首先通过所有节点中的数据一致性模块协同工作来获得符合访问权限的文件操作锁,然后通过元数据管理模块处理该数据文件的元数据信息,最后完成对本地磁盘的读写操作以及对其它存储节点中磁盘的远程访问。
3.2 分布式共享位图
由于系统中没有负责对整个存储空间进行集中管理的中心节点,因此多个存储节点可能同时对同一数据块发出读写请求,但是数据块在执行写操作时不能响应其它读写请求,这就是由分布式结构带来的并发访问控制问题。另外,由于系统中的所有存储节点都有自己的Cache,因此数据块在每个存储节点的Cache 中有可能保存了不同的内容,这就是由分布式结构带来的数据一致性问题。
我们的设计思想是使用分布式共享内存来实现数据一致性模块,利用分布式共享内存的工作原理解决并发访问控制与数据一致性问题。分布式共享内存(DSM,Distributed Shared Memory)系统是指将分布在网络环境中的多个节点中的内存单元组织起来,构成可以由多个节点的CPU 访问的大容量的共享内存。图4 给出了分布式共享内存系统结构。分布式共享内存系统与普通的网络存储系统的最大区别在于:分布式共享内存系统中的共享内存是统一编址的。
目前,分布式共享内存系统主要是软件DSM 系统,它对网络环境中的多个节点的内存空间通过软件方法实现了共享内存的编程界面。多数软件DSM系统是在运行库层次上实现的,例如JIAJIA【3】、TreadMarks 与CVM 等系统。运行库方式通过操作系统提供的界面来检测并进行缺页中断服务,一般使用mmap()与mmprotect()等系统调用来建立共享内存的虚拟映射关系,并通过修改共享内存页的访问权限来限制对共享内存单元的同时访问。这种实现方式的优点是不需要对操作系统进行修改,并且不需要用户或编译器过多参与工作。
数据文件中的信息以数据块的形式分别存储在多个磁盘块中,对文件的读写操作将被转化成对相关磁盘块的读写操作,而对磁盘块在磁盘中的定位由位图操作来完成。当文件系统被创建到某个磁盘分区上时,它会为位图信息分配内存空间并进行初始化。位图数据中的每位代表磁盘中的一个磁盘块,根据位图中的位可以计算出相应磁盘块的物理地址。位图中的某位为“0”代表该位对应的磁盘块未被使用;位图中的某位为“1”则代表该位对应的磁盘块已被使用。
分布式文件系统的位图需要在整个文件系统范围内提供服务,而分布式文件系统分布在局域网环境中多个存储节点中,因此我们提出将位图信息读入分布在存储节点中的分布式共享内存,利用分布式共享内存的工作机制来提供一种全局的位图服务。我们将这种分布在多个节点中的全局的位图服务称为分布式共享位图(Distributed SharedBitmap)。图5 给出了分布式共享位图结构。分布式共享位图的大小可以根据分布式文件系统管理的整个磁盘空间与单个磁盘块大小计算出,在创建文件系统时需要按照位图大小分配共享内存空间并进行初始化。
分布式共享位图可以利用分布式共享内存系统提供的锁机制来限制多个节点对位图信息的同时访问,这样不同节点就不能同时对同一磁盘块进行独占性的写操作,以此解决了由对等结构带来的分布式文件系统的同步访问控制问题。同时,分布式共享位图可以利用分布式共享内存系统提供的Cache 一致性协议与附着在锁上的状态信息,来解决由对等结构带来的分布式文件系统的数据一致性问题。
4 系统性能测试
我们使用NDSS 系统与VNS 系统、本地磁盘比较进行了性能测试。NDSS 系统由3 个存储节点组成,每个存储节点提供了5GB 磁盘空间,并将这些磁盘空间按RAID 0 结构组成15GB 虚拟磁盘空间。我们使用一个专用节点将文件操作请求均匀发送给NDSS 系统中的每个存储节点。VNS 系统【4】是以前开发的基于中心节点的网络软RAID 系统。VNS 系统由1 个中心节点与2 个存储节点组成,每个节点提供了5GB磁盘空间,并将这些磁盘分区按RAID 0结构组成15GB虚拟磁盘空间。本地磁盘是由配置相同的节点提供的15GB磁盘空间。实验中的局域网环境使用100M以太网交换机。
图6给出了系统性能的测试结果。从这三个系统的读性能来看,VNS系统的读性能比本地磁盘稍差一些,而NDSS系统的读性能比本地磁盘稍好一些,这是因为NDSS系统中的存储节点可以并行操作。从这三个系统的写性能来看,本地磁盘的写性能要明显好于其它两个系统,而NDSS系统的写性能比VNS系统要好一些。由于网络的传输速度低于本地磁盘的数据读写速度,这就限制了通过局域网环境通信的分布式存储系统的读写性能。如果局域网环境使用千兆以太网交换机,应该还可以提高NDSS系统的读写性能。
5 总结
NDSS系统是在文件系统级实现的分布式存储系统,它是在通用的硬件设备上完全基于软件实现的。NDSS系统具有成本低、配置灵活、可靠性高、可扩展性好等优点。NDSS系统是一种真实对等结构的分布式存储系统,它基于分布式文件系统与分布式共享内存相结合的设计思路,这是在分布式存储研究方面很有意义的尝试。今后,我们的目标是进行分布式存储应用手段方面的研究,以便利用分布式存储系统为用户提供安全可靠的存储服务。