文章编号:1007-757X(2006)08-0053-03基于Linux的集群存储系统郭国文摘 要:介绍了集群存储系统常用的模式、相关技术特点及其工作原理,以及L inux集群系统的软件构成,最后用实例说明了如何在L inux下构建集群存储系统关键词:集群;均衡;节点;镜像中图分类号:T P311.1 文献标识码:A1 引言集群(Cluster),是由一群同时运行同一个应用的服务器组成的服务器组,形成一个虚拟的服务器,为客户端用户提供统一的服务。
为了均衡集群服务器的负载,达到优化系统性能的目的,集群服务器将众多的访问请求,分散到系统中的不同节点进行处理。
从而实现了更高的有效性和稳定性。
[1]早在几年前,集群技术就被应用于数据中心的服务器设备上,效果显著。
与分布式文件系统相比,集群存储系统有几大优势:因为数据不需要从一个文件系统拷贝或复制到另一个文件系统,通过集群系统共享应用和数据的任务执行起来要比在单独的设备上执行快得多;集群可以为文件和文件系统提供更多的空间;如果集群内的某台服务器出现了故障,另一台服务器就可以把它的工作接手过来,故障恢复也成为了现实;用户也可以同时对位于其网络上的存储设备里的所有文件进行访问。
2 集群存储常见的两种模式的比较集群中的每个节点能够访问集群中所有节点的所有数据、重做日志文件、控制文件和参数文件。
数据磁盘由于在全局范围内可用,允许所有节点访问数据库。
每个节点都有自己的重做日志和控制文件,但其他节点必须能够访问这些文件,以便在系统故障时恢复该节点。
通过应用集群技术,不仅可有效提升数据中心服务器系统的稳定性、可用性及可管理性,同时,允许用户使用价格相对低廉的配置(如刀片)捆绑来替代昂贵的单块集成电路的高端服务器,在不影响性能的情况下节约了存储成本。
集群存储常见的两种模式是镜像服务器双机(如图1所示)和双机与磁盘阵列柜(如图2所示)。
[2]集群中镜像服务器双机系统是硬件配置最简单和价格最低廉的解决方案,通常镜像服务的硬件配置需要两台服务器,在每台服务器有独立操作系统硬盘和数据存储硬盘,每台服务器有与客户端相连的网卡,另有一对镜像卡或完成镜像功能的网卡。
镜像服务器具有配置简单,使用方便,价格低廉诸多优点,但由于镜像服务器需要采用网络方式镜像数据,通过镜像软件实现数据的同步,因此需要占用网络服务器的CP U及内存资源,镜像服务器的性能比单一服务器的性能要低一些。
有一些镜像服务器集群系统采用内存镜像的技术,这个技术的优点是所有的应用程序和网络操作系统在两台服务器上镜像同步,当主机出现故障时,备份机可以在几乎没有感觉的情况下接管所有应用程序。
但是因为两个服务器的内存完全一致,当系统应用程序带有缺陷从而导致系统死机时,两台服务器会同步死机。
同时,在大数据量读写过程中两台服务器在某些状态下会产生数据不同步,因此镜像服务器适合那些预算较少、对集群系统要求不高的用户。
与镜像服务器双机系统相比,双机与磁盘阵列柜互联结构多出了第三方生产的磁盘阵列柜,目前,豪威公司、精业公司等许多公司都生产有磁盘阵列柜,在磁盘阵列柜中安装有磁盘阵列控制卡,阵列柜可以直接将柜中的硬盘配置成为逻辑盘阵。
磁盘阵列柜通过SCSI电缆与服务器上普通SCSI卡相连,系统管理员需直接在磁盘柜上配置磁盘阵列。
图1 镜像服务器双机双机与磁盘阵列柜互联结构不采用内存镜像技术,因此需要有一定的切换时间(通常为60—180秒),它可以有效的避免由于应用程序自身的缺陷导致系统全部死机,同时由于所有的数据全部存储在磁盘阵列柜中,当工作机出现故障时,作者简介:郭国文,浙江万里学院,讲师,宁波 315100备份机接替工作机,从磁盘阵列中读取数据,所以不会产生数据不同步的问题,由于这种方案不需要网络镜像同步,因此这种集群方案服务器的性能要比镜像服务器结构高出很多。
双机与磁盘阵列柜互联结构的缺点是在系统当中存在单点错的缺陷,所谓单点错是指当系统中某个部件或某个应用程序出现故障时,导致所有系统全部死机。
在这个系统中磁盘阵列柜是会导致单点错,当磁盘阵列柜出现逻辑或物理故障时,所有存储的数据会全部丢失,因此,在选配这种方案时,需要选用一个品质与售后服务较好的产品。
当网络服务需要有相同的内容,双机与磁盘阵列柜互联结构是很好的选择,否则每台服务器需要将相同的内容复制到本地硬盘上。
当系统存储的内容越多,这种镜像服务器双机的代价越大,因为每台服务器需要一样大的存储空间,任何的更新需要涉及到每台服务器,系统的维护代价会非常高。
由于双机与磁盘阵列柜互联结构为服务器组提供统一的存储空间,这使得系统的内容维护工作比较轻松,如W ebmas-ter 只需要更新共享存储中的页面,对所有的服务器都有效。
当文件系统的存储空间增加时,所有服务器的存储空间也随之增大。
对于大多数I nter net 服务来说,它们都是读密集型(R ead -intensiv e )的应用,文件系统在每台服务器使用本地硬盘作Cache(如2G B 的空间),可以使得访问文件系统本地的速度接近于访问本地硬盘。
图2 双机与磁盘阵列柜此外,存储硬件技术的发展也促使从无共享的镜像服务器双机集群向双机与磁盘阵列柜互联结构的集群迁移。
[3]存储区域网(SN A ,Stor age A r ea N etwor ks )技术解决了集群的每个结点可以直接连接/共享一个庞大的硬盘阵列,硬件厂商也提供多种硬盘共享技术,如光纤通道(F iber Channel)、共享SCSI (Shared SCSI )。
I nfiniBand 是一个通用的高性能I /O 规范,使得存储区域网中以更低的延时传输I /O 消息和集群通讯消息,并且提供很好的伸缩性。
InfiniBand 得到绝大多数的大厂商的支持,如Compaq 、Dell 、Hewlett-Packard 、IBM 、I n-tel 、M icrosoft 和SU N M icro systems 等,它正在成为一个业界的标准。
这些技术的发展使得共享存储变得容易,规模生产也会使得成本逐步降低。
3 Linux 下的集群系统在几台运行L inux 的P C 机上,只要加入相应的集群软件,就可以组成具有超强可靠性、负载能力和计算能力的L inux 集群。
集群中的每台服务器称为一个节点。
Linux 集群分为三类。
一类是高可用性集群,运行于两个或多个节点上,目的是在系统出现某些故障的情况下,仍能继续对外提供服务。
这类集群中比较著名的有T ur bolinux T ur-boHA 、Heartbeat 、K imberlite 等。
第二类是负载均衡集群,目的是提供和节点个数成正比的负载能力,这种集群很适合提供大访问量的W eb 服务。
T urbolinux Cluster Ser ver 、L inux V ir-t ual Serv er 都属于负载均衡集群。
另一类是超级计算集群,按照计算关联程度的不同,又可以分为两种。
一种是任务片方式,要把计算任务分成任务片,再把任务片分配给各节点,在各节点上分别计算后再把结果汇总,生成最终计算结果。
另一种是并行计算方式,节点之间在计算过程中大量地交换数据,可以进行具有强耦合关系的计算。
这类软件有T ur bolinux En-F usion 、SCor e 等。
通常,负载均衡集群适用于提供静态数据的服务,如HT T P 服务,而高可用性集群既适用于提供静态数据的服务,如HT T P 服务,又适用于提供动态数据的服务,如数据库等。
高可用性集群之所以能适用于提供动态数据的服务,是由于节点共享同一存储介质,如R A IDBo x 。
也就是说,在高可用性集群内,每种服务的用户数据只有一份,存储在共用存储设备上,在任一时刻只有一个节点能读写这份数据。
[4]以T ur bo linux 和T urboHA 为例,集群中有两个节点A 和B,设这个集群只提供Or acle 服务,用户数据存放于共用存储设备的分区/dev/sdb3上。
在正常状态下,节点A 提供O ra-cle 数据库服务,分区/dev /sdb3被节点A 加载在/mnt/or acle上。
当系统出现某种故障并被T urboHA 软件检测到时,T ur-boHA 会将Or acle 服务停止,并把分区/dev /sdb3卸载。
之后,节点B 上的T urboHA 软件将在节点B 上加载该分区,并启动Oracle 服务。
对于Or acle 服务有一个虚拟的IP 地址,当Or acle服务从节点A 切换到节点B 上时,虚拟的IP 地址也会随之绑定到节点B 上,因此用户仍可访问此服务。
对于高可用性集群,由于它在设计时的目的就是为了最大可能地减少服务中断时间,因此服务的切换受到很大的关注。
当一个节点上的服务故障时,会被很快地检测到并被切换到其他节点上。
但在切换时,不能忽略对数据完整性的保护。
由于高可用性集群中至少有两个节点,连接在一个共用的存储设备上,对于非裸分区而言,如果被两个节点同时读写,就会造成文件系统被破坏。
因此就需要利用I /O 屏障来防止这一事件的发生。
I /O 屏障的目的是为了保证故障节点不能再继续读写某一服务的共用分区,实现的方式有多种。
Kim berlite 使用硬件开关来实现,当一个节点发生故障时,另一节点如果能侦测到,就会通过串行口发出命令,控制连接在故障节点电源上的硬件开关,通过暂时断电,而后又上电的方式使得故障节点被重启动。
4 建立Linux 下的集群存储系统系统硬件采用P 42.4G Hzcpu/1GB m ain memor y /30GB EI DE HDD/100M bps N IC 作为集群节点服务器和任务分发器,操作系统采用T urbo L inux 6.5Serv er,集群软件采用T urbo Cluster 6,Web 服务软件采用A pache 1.3.19。
系统结构拓扑图如图3所示。
整个系统中,任务分发器是实现计算机集群的关键节点。
节点采用T urbo 公司集群软件产品T ur bo Cluster 6。
它可以实现集群服务器的部署、调试、内容同步、流量管理、性能监视等,具有以下特点。
1)该系统任务分发器采用L inux 核心级的调度模块,最大限度地减低任务分发节点对整个集群系统性能的影响。
2)该系统的任务分发采用动态域名解析,本身不负担任何网络流量,所以任务分发节点的性能对整个集群系统的影响不大。
3)各节点服务器与压力客户端属于同一网段,因此节点服务器与压力客户端,虽然采用直接路由的方式进行通信,但是实际上无需路由即可完成。
图3 系统结构拓扑图总的来说,系统的性能主要取决于节点服务器的数量和Web 服务器软件的响应能力。