15.4.3.9 高可用性
文件系统专用设备Filer 除了软硬件本身具有99.99%的高可靠性以外,为了消除一些单点故障(如系统主板出错,等),在以低成本、低性能开销、不增加系统复杂度的前提下,将两台独立的Filer 耦合起来,实现一旦一台Filer 因故障而停止运行并且不能重新启动,另一台Filer 立即就可接管这一台Filer 的全部工作,保证系统正常运行。
两台Filer 都与磁盘阵列相连,并处于同一网中,两台Filer 之间用高速、冗余的光纤互连。光纤通道(FC-AL)的硬盘有两个端口,分别与两台Filer 相连。
每个Filer 有自己主管的一组硬盘。正常运行时,两台Filer 各自独立工作,硬盘、风扇或电源出错不影响另一台Filer 的工作。同样,若一台Filer 的软件出错,这也仅仅引起这台Filer 重新启动,不会影响到另一台Filer 的工作。如果一台Filer 发生灾难性故障,即不能重新启动,则另一台Filer 会自动接管原属于有故障的Filer 的硬盘、文件系统、同时将其IP 地址也归为己有。
在整个接管过程中,客户端仅简单地感觉到系统像是在重新启动。所有在系统本身重起过程中,能够保留的状态,另一台Filer 也同样通过接管保留。当然,如果一台Filer 在其重新启动过程中丢失一些状态,如CIFS 锁(LOCK)状态和文件状态等,则在接管后,另一台Filer 也不能保留这些状态。
一旦有故障的Filer 恢复正常运行后,它不会自动地再接管自己的文件系统,这需要系统管理员干预才能实现。系统管理员也可强制一台Filer 交出自己的文件系统,从而可实行计划中的Filer 和硬盘维护工作。
Cluster Failover 主要依靠以下两个方面工作:
其一是WAFL 的特性,特别是WAFL 文件系统的盘上状态(ON-DISK STATE)永远是一致的。这个盘上状态从一个一致点移动到另一个一致点的过程为一个交易,也就是说,要么完成一个状态迁移,要么无状态迁移,因此它永远保持一致。另外,WAFL 在日志文件中记录所有被服务过的、能够转移到非易先性RAM(NVRAM)中的客户请求。日志文件中那些已被转移到硬盘上的客户请求只有在一个盘上状态迁移完成后,才被丢弃。Filer 通常利用这些特征将盘上数据从故障中恢复。当Filer 重新启动时,它只是简单地重新执行在最近(一致性)盘上状态未反映的NVRAM 中的客户请求。
NVRAM 在CLUSTER 中的镜像
其次是互连的特性,特别是互连具有远程内存存取能力(有时也称作非一致性内存存取,或者简称NUMA)。当一个客户请求到来时,Filer 将其记录在它本地的NVRAM 中。
在Cluster 的配置中,Filer 利用远程内存存取特性将日志文件中的记录项拷贝到另一台Filer的NVRAM 中。这个技术的一个突出优点是发送方发送的拷贝极快,几乎不影响到接收方的操作(如,没有包处理过程)。同样,另一台Filer 也会将自己的NVRAM 中的日志记录项拷贝到这台Filer 的NURAM 中。
当一台Filer 不能从互连的光纤通道、网络或硬盘上探测到另一台Filer 的心跳(HEARTBEAT)或I/O 活动,他即认为这台Filer 已出故障,接管过程开始。主要是接管出故障的Filer 的IP 和MAC 地址、文件系统和硬盘,以及后台服务器进程(daemon),并将其使用的NVRAM 中的日志记录项回现。这个技术与Filer 重新启动时所使用到的技术类似。接管后,正常工作的Filer 中的每个后台服务器进程(daemon)具有两个标识符,一个用于本地Filer,另一个用于另一台Filer。