天天看点

使用 HA-LVM 实现高可用存储

近年来,有一种趋势是数据中心优先选择商用的硬件和软件而非采用专利的解决方案的商品。他们为什么不能这样做呢?这种做法具有非常低的成本并且可以以更有利的方式来灵活地构建生态系统。唯一的限制是管理员想象的空间有多大。然而,一个问题要问:“与专利的和更昂贵的解决方案相比较,这样的定制解决方案表现如何呢?”

开放源码项目已经发展成熟到了具有足够的竞争力,并提供相同的功能丰富的解决方案,包括卷管理,数据快照,重复数据删除等。虽然经常被忽视的,长期支持的概念是高可用性。

高可用性的想法很简单:消除任何单点故障。这保证了如果一个服务器节点或一个底层存储路径停止工作了(计划或非计划的),还依然可以提供数据请求服务。现在存储部署的解决方案都是多层结构的,并且是可以为高可用性进行配置的,这就是为什么本文严格关注ha-lvm。

ha-lvm

高可用性的逻辑卷管理器(ha-lvm)已经集成了lvm的套件。它提供共享卷一个故障转移的配置,也就是说如果集群中的一台服务器出现故障或进行维护,共享存储配置将故障转移到辅助服务器上,所有i / o请求将恢复,不间断的。ha-lvm配置是一个主/从配置。这意味着在任何一个时间只有一个服务器访问共享存储。在许多情况下,这是一种理想的方法,因为一些先进的lvm的功能,如快照和重复数据删除,在主/从环境下是不支持的(当多个服务器访问共享存储)。

clvm(lvm集群的守护进程)是ha-lvm一个非常重要的组件。当启动ha-lvm后,clvm守护进程会防止有多台机器同时对共享存储做修 改,否则对lvm的元数据和逻辑卷会造成破坏。尽管在采用主从配置时,这样的问题并不需要太多担心。要做到这一点,守护进程得依赖于分布锁管理器 (dlm). dlm的目的也是协助clvm访问磁盘。

下面会举一个2台服务器的集群访问一个外部存储的例子(图一)。 这个外部存储可以是采用磁盘阵列形势的(raid-enabled) 或者磁盘簇(jbod)形式的磁盘驱动器,可以是通过光纤信道(fibre channel),串行连接(sas),iscsi或者其他的存储区域网络及其协议(san)接入到服务器的。这个配置是与协议无关的,只要求集群中的服务器能访问到同一共享数据块设备。

使用 HA-LVM 实现高可用存储

图一.举例两台服务器访问同一个共享存储的配置

clvm

md raid还不支持集群,所有也就不能兼容clvm.

clvm 守护进程

clvm 守护进程会将lvm元数据的更新分发到整个集群中,前提是集群中的每个节点都必须运行守护进程。

磁盘簇

磁盘簇(就是一堆磁盘)是一种使用多个磁盘驱动器的架构,但是不支持具有冗余能力的配置。

配置集群

几乎所有的linux发行套件都提供必要的工具包。但是,工具包的名字可能各有差异。你需要安装lvm2-clumster(在部分发行套件中,可能命名为clvm),corosync集群引擎,红帽集群管理器(cman),资源组管理进程(rgmanager),还有所有其他运行在服务器上的独立的工具。尽管红帽集群管理器的描述中就包含了“红帽”的发行套件的名字,但是其他与红帽无关的大多数linux的发行套件还在会把cman列在他们的资源库中。

继续阅读