存储网络高可用系统设计关键技术研究

构建高可用存储网络对企业的发展至关重要。它需要多方面的技术[1~3]支撑。其中关键技术有冗余技术、日志技术、复制技术、安全技术、负载平衡技术、系统失效监测处理技术等。上述技术是分布式网络系统普遍采用的技术,并不只是高可用存储网络系统所特有的。

  1存储网络高可用系统设计的关键技术

  1.1冗余技术

  冗余是指超过正常系统操作所需的信息、资源或时间的简单叠加。主要包括四种类型的冗余:

  a)硬件冗余。例如存储网络中额外的双服务器冗余和三服务器互为冗余、服务器中的双网卡冗余、双网络冗余、多个存储设备互相冗余、磁盘相互冗余等。

  b)软件冗余。例如软件模块的额外版本、同样的系统软件和应用程序在其他节点上并发运行等。

  c)信息冗余。使用了额外位数的错误监测代码,如CRC或RAID中的数据校验块,以及同样数据信息被同样复制或镜像到多个不同的存储节点上或多个不同的磁盘上等。

  d)时间冗余。执行一个操作时,如果需要,可以再次执行。例如应用程序故障后的重启执行。

  存储网络如果出现软、硬件故障,通过冗余的软、硬件可以保证系统的可用性;如果数据信息出错,可以通过冗余信息对其进行恢复来保证其可用性。

  1.2日志技术

  系统失效后的状态恢复主要有基于日志的状态恢复和基于检查点的状态恢复两种。基于日志的方法不仅保存检查点,而且把非事先决定的事件记录下来;在恢复时,这些日志可以用来完全重现进程的执行状态。消息日志法的基本思想是进程在失效后退回到一个无错的检查点状态;在该状态下重新处理先前处理过的消息(称为重播)。消息日志包括悲观日志和乐观日志。悲观消息日志法的特点是应用程序(进程)在处理消息前,必须保证消息已经记录到安全的固定存储器中。这种方法也称为同步记录。故障发生时,进程从最近的检查点得到恢复,事件被重现,故障前的执行被完全再现。这种方法的优势在于输出提交不需要特殊协议,恢复过程非常简单;缺点是同步记录使得系统性能开销太大。与悲观日志法相反,乐观日志法是假定故障之前消息记录会完成,因此采用异步方法记录消息。这种方法不会在记录消息时阻塞进程的执行,性能更好。由于使用恢复策略、垃圾收集和输出提交算法等,使其变得较复杂;进程失败时,那些没有来得及输出到稳定存储器的消息将丢失,造成无法恢复进程的状态;如果消息发送者出现故障,发送消息时的状态是不可恢复的状态,因此消息接收方就变成了孤儿进程,必须一同回滚。

  检查点是一种允许进程在正常运行中,每隔一定时间间隔保存其状态以减小失效恢复工作量的技术。当发生错误时,使用检查点可使受影响的进程从最后一次保存的检查点(状态)而不是从进程开始重新运行[4]。

  设置检查点有几要素:透明度、检查点文件所包含的数据以及设置检查点间隔。首先,检查点可以是透明的并且在进程运行时自动插入,或由编译器自动插入,或由应用程序的程序员手工插入。在透明方法中,检查点由处理器地址状态的全局快照构成,包括操作系统的所有动态数据。透明检查点常常需要保存大量数据,有些数据是状态恢复所必需的,有些则是不需要的。手工方法由程序员负责精确定义保存状态恢复所必需的数据,这样可显著地减少检查点的规模。只保存状态恢复必要的数据降低检查点文件所包含的数据量,对减少检查点的开销和增加检查点的覆盖范围是至关重要的。增量式的检查点切取只保存前一次检查点切取后变化的部分,不变的部分则不保存,这样可大大减少检查点文件所包含的数据量。另一个重要要素是检查点的时间间隔,即两个连续检查点之间的时间间隔。最佳检查点间隔不易预计,因为它取决于几个因素,如失效的频率、系统工作负荷、整个完整检查点的执行时间、检查点开销以及系统需要的可靠等级。另外,在设计或选取检查点切取技术时,需要考虑三个方面的开销,即系统正常时进行检查点切取时间开销、存储检查点文件时的存储空间开销、系统故障时运行检查点文件的通信开销。

  在存储网络环境中,日志记录并保存任意时刻服务器的动作序列(发送和接收的消息序列),系统任何时刻出现节点失效时,均可通过日志对接替节点的状态进行恢复。但仅通过日志进行恢复,往往重播时间过长,而且可能重播的大多数请求动作早已完成。为此可将日志技术与检查技术结合起来,减少系统节点失效恢复的时间。因为日志是记录每一个I/O请求状态信息,而检查点是记录该时刻系统请求队列中的那些正在处理的请求(已处理完的不记录)。其记录机制和节点失效恢复过程如图1和2所示。在图2中,记录n+1以前的记录是检查点j时,正在执行的请求记录。

  1.3复制技术

  复制包括程序模块的复制和数据文件的复制,在分布式系统中也称为基于对象的复制。对象可以是一个数据文件,也可以是一个程序模块,还可以是一个正在运行的进程模块。从应答方式上可将复制分为以下两种:

  a)主动复制(active replication)。两个或多个分布在不同节点上互为冗余的对象同时运行;每个冗余对象都会接收客户的请求,执行操作,修改其对应的状态,并发送应答。当有某个副本失效时,其余副本在失效副本缺席的情况下继续工作。对于客户的每个副本都应拥有相同的状态。为了实现同步,一般采用组播保证所有副本按照相同的顺序处理所有操作从而达到相同的状态。主动复制的状态同步过程如图3所示。客户向两个互为冗余的对象object1、object2同时发出请求,它们执行请求,同步状态,然后向客户端发回应答。

  b)被动复制(passive replication),又称主从复制(primarybackup)。它包括两个或多个冗余对象,其中一个称主对象(primary),另一个称备份对象(backup)。只有primary执行客户请求并作出应答;backup在primary可用时不会执行客户请求,客户只与primary通信,由primary通过独立通信路径或共享检查点文件来修改backup的内部状态。Primary失效时,服务切换到一个backup上。其状态转换如图4所示。

  一个被复制的对象有多个副本,且不同的副本位于不同的节点上。被复制文件副本与缓存副本在概念上是不同的:复制对象副本总是与服务器节点或存储节点相关,而缓存副本通常是与客户相关的;缓存副本的存在主要依赖于对象存取模式的局部性,而复制副本的存在依赖于系统对可用性和性能的需求;与缓存副本相比,复制副本更可靠、持久、完整和精确。

  复制技术能够增加可用性、可靠性、可扩展性和操作的自治性;能够减少网络开销,同时改进了响应时间和吞吐率。但是一个采用了复制技术的分布式存储系统应当提供复制透明性,即被复制对象的副本数目及其位置对用户是透明的,用户看到的是一个单一系统映像。另外,支持复制技术的文件系统还应当解决多副本的一致性问题。

  在分布式的存储网络环境下进行对象复制的关键问题是如何维护不同复制副本的一致性。如果一个客户修改一个文件的拷贝,那么这个修改最终必须要传播到所有的复制文件上。立即传播可以确保复制的一致性,但代价很大,因为应用程序必须等到复制完成才能继续执行。目前,大多数系统采用异步的复制技术。但是,如果在复制完成前,服务器或存储节点崩溃失效,那么将出现不一致性问题。因此,异步复制是基于性能考虑的一种折中。基于复制的高可用文件系统的最大优点是即使发生网络分区,系统仍可运行。网络的失效可能造成系统分区,此时,分区内的成员只能互相联系。在非复制的文件系统中,只有与文件服务器在一个分区的节点可以接受不间断的文件服务,其他客户只能等到网络重新连接后才能接受文件服务。在复制的文件系统中,包含文件拷贝的分区仍可继续操作。当所有的分区重新连接后,复制必须进行冲突解析。大多数冲突可以自动解析,但有些操作则必须人工处理,如对同一文件同时进行修改和删除操作。

  许多网络文件系统支持复制,如Locus[5]、Ficus[6]。Locus允许一个文件在一个存储节点集(SS)中被复制,并由一个当前同步点(CSS)进行协调。一个客户在每次打开 和关闭文件时联系CSS,CSS直接向包含此文件最近版本的一个SS发出请求。当一个文件在SS上被修改时,它通知其他SS进行后台复制更新。CSS确保在复制更新过程中客户不会访问过时的复制数据。Locus可以通过在每个分区中配置一个CSS来容忍网络分区。因为每个分区有自己的CSS,所以在网络分区时,复制文件可能会收到冲突的修改请求。大多数冲突在网络连接恢复后可以自动解析,但有些操作则必须由用户处理。

  Ficus的复制方法与Locus类似。Ficus异步更新文件复制,当修改的文件在后台进行复制传播时,应用程序可以继续执行。Ficus定期运行一个调节程序以保证复制的一致性。显然,在调节程序运行之前,客户有可能访问到陈旧的数据,Ficus认为这是性能与一致性之间的一种代价折中。调节程序在运行过程中会自动修改可以修改的复制冲突;否则它将向用户报错。

  1.4安全技术

  如何保证存储网络中的数据信息不被非法修改和破坏是存储网络高可用性所面临的另一个关键问题之一。如果没有安全技术保障,存储网络有可能受黑客、病毒,或人为破坏,不能保证用户所存信息的完整性,即不能保证系统所存信息对用户的可用性。系统安全与系统可用性之间的关系如图5所示。

  目前有多种解决存储网络安全的技术,如防火墙技术、身份论证技术、入侵监测技术等。下面主要介绍前两种安全技术:

  a)防火墙技术在Internet开放网络环境下,存储网络安全性的核心问题是整个存储网络能否得到控制,即是不是任何一个IP地址的用户都能进入存储网络。通过Internet网络对存储网络系统进行访问时,每个用户都会被分配一个独立的IP地址,这个IP地址能够大致表明用户的来源地址和来源系统。目标站点通过对来源IP分析,能够初步判断来自这一IP的数据是否安全,是否会对本网络系统造成危害,以及来自这一IP的用户是否有权使用本网络的数据。一旦发现某些数据来自不可信任的IP地址,系统便会自动将这些数据阻挡在系统之外;并且大多数系统能够自动记录那些曾经造成过危害的IP地址,使得它们的数据免于遭受第二次危害。用于解决企业内部存储网络层安全性问题的主要技术是使用防火墙技术。防火墙的主要目的在于判断来源IP,将危害或未经授权的IP数据拒之于系统之外,而只让安全的IP数据通过。一般来说,公司的内部存储网络若与Internet相连,则应该在两者之间设置防火墙,以防止内部存储网络的可用性被破坏。到目前为止,防火墙的研究已较为成熟,大量的相关产品已投入使用。

  b)身份认证技术

  为了保证存储网络的安全性,必须对其主要功能组件(AS(应用服务器)、MS(元数据服务器)、ND(网络设备)和SD(存储设备))之间相互认证和授权访问,在各个功能组件之间建立安全通信。

  按照基于不同的密码体制,常用的安全认证系统架构分成Kerberos和PKI/CA两大类[7]。Kerberos采用对称密码体制;PKI/CA采用非对称密