附录 B. 附加硬件信息

以下各节提供了关于配置被用在群集系统中的硬件的额外信息。

B.1. 设置电源控制器

本节讨论电源控制器。关于电源控制器和它们在群集环境中所扮演的角色,请参阅第 1.1.3 节

B.1.1. 电源开关

要获取被 Red Hat, Inc. 测试或(并)支持的串行连接和网络连接的电源开关列表,请参考红帽硬件兼容列表(Red Hat Hardware Compatibility List),它位于:

http://hardware.redhat.com/hcl/

B.1.2. 设置监视器电源开关

关于使用监视计时器来保障群集数据完好性的用法模型的描述位于第 1.1.3 节。如该节所描述,监视计时器有两种:基于硬件的和基于软件的。

本节详细说明要设置群集硬件配置中的监视计时器所需的配置任务。

不管你使用的是哪一种监视计时器,你都有必要为该监视计时器创建恰当的设备特殊文件。这可以通过以下命令来达到:

cd /dev
./MAKEDEV watchdog

在使用群集配置工具时,每个被添加到群集中的新成员都默认启用了软件监视器功能。

B.1.2.1. 配置软件监视计时器

任何群集系统都可以使用软件监视计时器来保障数据完好性,而没有必要使用专用的硬件部件。群集软件自动载入相应的叫做 softdog 的可载入内核模块。

如果群集被配置使用软件监视计时器,群集成员守护进程(clumembd)会定期重设计时器的间隔。如果 clumembd 没有重设计时器,失效的群集就会重新自行引导。

在使用软件监视计时器时,系统有可能被挂起,以致于软件监视器线程没有被执行。在这种罕见的情况下,另一个群集成员可能会接替似乎被挂起的群集成员的服务。一般来说,这是较安全的操作,但是如果挂起的群集成员忽然自动恢复了(发生的可能性极小),数据损坏就有可能发生。要进一步减少使用软件监视计时器时发生这种不利情况的可能性,管理员除了外部电源开关(若有)外还应该配置 NMI 监视计时器。

B.1.2.2. 启用 NMI 监视计时器

如果你使用软件监视计时器来保障数据完好性,推荐你还启用不可掩蔽的中断(NMI)监视计时器来增强对数据完好性的保障。NMI 监视计时器是导致系统在中断被阻塞而被挂起的情况下重新引导的另一种机制。NMI 监视器可以和软件监视计时器一起使用。

和软件监视计时器不同的是,软件监视计时器被群集仲裁守护进程(cluquorumd)重设,而 NMI 监视计时器计数系统的中断次数。正常情况下,一个健康的系统每秒接收上百个设备和计时器中断。如果 5 秒钟内没有发生中断,系统挂起事件就发生了,NMI 监视计时器就会超时,从而引发系统的重新引导。

你可以通过合并带有软件监视计时器的群集仲裁守护进程的健康监视功能和 NMI 监视器的低级系统状况检测功能来实现强健的数据完好性保障体制。

要正确操作 NMI 监视计时器机制,群集成员必须在主系统板上包含一个 APIC 芯片。

NMI 监视器是通过在内核的命令行上添加 nmi_watchdog=1 而在支持的系统上被启用的。以下是 /etc/grub.conf 中的例子:

注记注记
 

以下的 GRUB 和 LILO 引导装载程序只应用于红帽企业 Linux 的 x86 体系。

# grub.conf
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title HA Test Kernel (2.4.9-10smp)
        root (hd0,0)
        # This is the kernel's command line.
        kernel /vmlinuz-2.4.9-10smp ro root=/dev/hda2 nmi_watchdog=1

# end of grub.conf

在使用 LILO 的系统上,在 /etc/lilo.confappend 部分添加 "nmi_watchdog=1"。例如:

# lilo.conf
prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
lba32

image=/boot/vmlinuz-2.4.9-10smp
        label=linux
        read-only
        root=/dev/hda2
        append="nmi_watchdog=1"

# end of lilo.conf

编辑 /etc/lilo.conf 之后运行 /sbin/lilo 来使改变生效。

要判定某个服务器是否支持 NMI 监视计时器,首先按照前面描述的方法给内核命令行添加 "nmi_watchdog=1"。系统被引导后,登录为根用户后键入:

cat /proc/interrupts

其输出应和以下相似:

           CPU0       
  0:    5623100          XT-PIC  timer
  1:         13          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  7:          0          XT-PIC  usb-ohci
  8:          1          XT-PIC  rtc
  9:     794332          XT-PIC  aic7xxx, aic7xxx
 10:     569498          XT-PIC  eth0
 12:         24          XT-PIC  PS/2 Mouse
 14:          0          XT-PIC  ide0
NMI:    5620998       
LOC:    5623358 
ERR:          0
MIS:          0

以上输出中与此有关的部分是看一看 NMI id 是否出现在左侧。如果 NMI 的值大于零(0),服务器就支持 NMI 监视器。

如果这个办法行不通,即:如果 NMI 是零,请试着按照前面描述的方法把 nmi_watchdog=2 而不是 nmi_watchdog=1 传递给内核。系统引导后 再检查一下 /proc/interrupts。如果 NMI 的值大于零,那么 NMI 监视器就被正确配置了。如果 NMI 是零,那么你的系统就不支持 NMI 监视计时器。

B.1.2.3. 配置硬件监视计时器

内核为多种硬件监视计时器提供驱动程序支持。这些计时器中,有些是直接在系统板上实现的;有些是如 PCI 卡的单独的硬件部件。基于硬件的监视计时器在群集中提供了优异的数据完好性保障,因为它们的操作完全独立于系统处理器之外,所以能够在系统挂起事件发生时重新引导系统。

由于低级硬件监视器部件之间缺少统一的标准,我们很难描述如何识别某个系统是否包含这类部件。许多低级的硬件监视器部件没有自行标记。

在配置被内核支持的监视计时器时,你有必要在 /etc/modules.conf 文件中加入相应的项目。例如,如果使用了一个基于 Intel-810 的 TCO 监视计时器,你应该在 /etc/modules.conf 中添加以下行:

alias wdt i810-tco