- 论坛徽章:
- 0
|
由于关闭可能是一个很长的过程,因此在关闭进行期间可能发生其它的重新配置。正常情况下,关闭操作尝试被推迟到其它重新配置完成之后。不过,如果关闭操作很早以前就已经开始了,也可能首先完成关闭。
如果节点没有干净地离开集群,则可能是因为节点已崩溃,或是因为某个集群组件在紧急情况下使此节点离开。随后发生的集群重新配置将调用 VxVM 中止功能。此过程会立即尝试暂停所有对共享卷的存取,尽管此操作实际要等到完成磁盘的未决 I/O 之后才能执行。
尚未启动的 I/O 操作将失败,并且会删除共享卷。那些正在存取共享卷的应用程序会因此出现错误而失败。
在节点中止或崩溃后,因为很可能有未同步的镜像,所以必须通过继续存在的节点或随后进行集群重新启动来恢复共享卷。
当集群中的所有节点都离开时,如果最后一个节点没有干净地离开,或者以前未干净离开的节点未完成再同步则在下一次启动集群时必须恢复共享卷。
滚动式升级功能允许您升级在集群中运行的 VxVM 版本而不必关闭整个集群。若要安装在集群中运行的 VxVM 的新版本,可以使一个节点离开集群,将其升级,然后将此节点重新加入到集群中。对集群中的每个节点重复进行该操作。
集群协议版本存储在/etc/vx/volboot文件中。在安装新的 VxVM 的过程中,vxdctlinit命令创建volboot文件,并将集群协议版本设置为所支持的最高版本。
每个新的 VERITAS Volume Manager 发行版都支持两种版本的集群协议。较低的版本号对应于早期的 VERITAS Volume Manager 发行版。它有一套固定的功能和通信协议。较高的版本号对应于新的 VxVM 发行版,新版本包含一套新的上述功能。如果新的 VxVM 发行版在功能或协议上没有任何更改,而只有错误修复或细微更改,则集群协议版本保持不变。在这种情况下,不需要对集群协议版本进行升级。
在滚动升级过程中,每个节点都必须关闭,且必须安装带有最新集群协议版本的 VERITAS Volume Manager 发行版。所有具有新的 VxVM 发行版的节点继续使用较低的版本。安装了新的集群协议版本的从属节点会尝试加入集群。如果主节点上没有使用新的集群协议版本,它将拒绝该从属节点加入,并向其提供当前的集群协议版本。从属节点使用主节点提供的集群协议版本重新尝试加入。如果此时加入失败,则说明主节点上的集群协议版本超出了要加入的从属节点支持的协议版本范围。在这种情况下,必须通过 VxVM 的每个中间发行版本升级集群中的其余节点,以达到所支持的最新集群协议版本。
在所有的节点上都安装了新的发行版以后,在主节点上运行vxdctlupgrade命令,将集群切换到更高的集群协议版本。
集群环境中的脏区日志 (DRL)
脏区日志 (DRL) 是卷的一个可选属性,它在系统发生故障后提供镜像卷的快速恢复。集群共享磁盘组支持 DRL。本节简要介绍 DRL,并说明 DRL 在集群环境中的行为方式。
与非集群环境中一样,集群的脏区日志存在于镜像卷的日志子磁盘中。
不带集群支持的系统中的脏区日志具有恢复映像和单个活动映像,而集群中的脏区日志具有一个恢复映像,并且对于集群中的每个节点都有一个活动映像。VxVM 的集群功能将恢复映像放在日志的开头。
集群脏区日志的大小通常比非集群系统的大,因为它必须容纳恢复映像以及集群中每个节点的活动映像。脏区日志中每个映像的大小是一个或多个完整的块。vxassist命令自动分配足够大的脏区日志。
日志的大小取决于卷的大小和节点数。日志必须足够大以容纳全部映像(每个节点的映像再加上恢复映像)。对于每个两千兆字节的卷大小,每个映像必须为一个块长。对于包含两个节点的集群中的两千兆字节大小的卷两个块大小的日志每个映像对应一个块)就足够了;这是日志大小的最小值。在一个包含四个节点的集群中,一个四千兆字节的卷需要十个块的日志大小,依此类推。
可以将非共享磁盘组(及其卷)作为集群环境中的共享磁盘组重新导入。不过,导入磁盘组的脏区日志可能被认为无效,并可能导致完全恢复操作。
如果共享磁盘组由不带集群支持的系统导入VxVM 将认为共享卷的日志无效,并将进行完全卷恢复。完成恢复后VxVM 将使用 DRL。
VxVM 集群功能可以在非共享卷上执行 DRL 恢复。但是,如果将这样的卷移动到带集群支持的 VxVM 系统中并作为共享卷导入,则脏区日志很可能太小,而无法容纳所有集群节点的映像。然后VxVM 会将日志标记为无效,且无论如何都要执行完全恢复。同样地,将 DRL 卷从两节点集群移到四节点集群可能导致日志大小太小VxVM 集群功能将通过完全卷恢复解决这一问题。在这两种情况中,您都要负责为新日志分配足够的大小。
要增加现有 DRL 日志的大小以便能够容纳额外节点的映像,请使用vxplex-ormdis命令分离并删除日志 plex,然后使用vxassistaddlog命令重新创建日志。
当集群中的一个或多个节点崩溃时
DRL 必须对这些节点在发生崩溃时所使用的所有卷进行恢复处理。在集群开始启动时,所有的活动映像都在卷启动操作过程中被并入到恢复映像。
在将崩溃(即作为脏节点离开集群)节点的 DRL 活动映像并入到所有受影响的卷的恢复映像中之前,禁止将它们重新加入集群。在恢复实用程序将崩溃节点的活动映像与恢复映像进行比较并进行任何必要的更新之后,崩溃的节点才能重新加入集群并恢复对卷的 I/O (这会改写活动映像)。在这段时间内,其它节点可以继续执行 I/O。
VxVM 跟踪已崩溃的节点。如果在给定的时刻在集群中进行多个节点恢复操作,则它们各自的恢复和恢复映像更新会彼此竞争。VxVM 跟踪 DRL 恢复状态的更改并防止 I/O 冲突。
主节点对每个卷的 DRL 恢复映像更新执行易失性跟踪,并防止多个实用程序同时更改恢复映像。
vxdctl实用程序控制vxconfigd卷配置后台驻留程序的操作。-c选项可用于请求集群信息。若要确定vxconfigd后台驻留程序是否已激活和/ 或正在运行,请使用如下命令
# vxdctl -c mode
根据集群节点的当前状态的不同,该命令会产生下列输出信息之一
mode: enabled: cluster active -MASTER
mode: enabled: cluster active -SLAVE
mode: enabled: cluster active -role not set
mode: enabled: cluster inactive
如果关闭vxconfigd后台驻留程序将不显示任何集群信息。
有关更多信息请参见vxdctl(1M) 帮助手册。
vxdisk实用程序管理VxVM 磁盘。若要使用vxdisk实用程序确定某个磁盘是否是集群共享磁盘组的一部分,请使用此命令
# vxdisk list accessname
此处,accessname 是磁盘存取名(或设备名)。
此命令的部分输出(对设备c4t1d0而言)如下所示:
Device: c4t1d0
devicetag: c4t1d0
type: sliced
clusterid: cvm2
disk: name=disk01 id=963616090.1034.cvm2
timeout: 30
group: name=rootdg id=963616065.1032.cvm2
flags: online ready autoconfig shared imported
注意clusterid字段设置为cvm2(集群的名称),而flags字段包含一个shared 项。当节点未加入集群时flags字段包含autoimport标志而非imported。
可以使用vxdg列出有关共享磁盘组的信息。若要显示所有磁盘组的信息请使用此命令
# vxdg list
此命令的输出示例显示如下:
NAME STATE ID
rootdg enabled 774215886.1025.teal
group2 enabled,shared 774575420.1170.teal
group1 enabled,shared 774222028.1090.teal
共享磁盘组用shared标志指定。
若要仅显示共享磁盘组的信息,请使用如下命令
# vxdg -s list
此命令的输出示例如下所示:
NAME STATE ID
group2 enabled,shared 774575420.1170.teal
group1 enabled,shared 774222028.1090.teal
若要显示关于一个特定磁盘组的信息,请使用如下命令
# vxdg list diskgroup
此处,diskgroup 是磁盘组名称。
注意flags字段设置为shared。在从属节点上运行时,此命令的输出稍有不同。另外请注意local-activation和cluster-actv-modes域。这些域会分别显示用于此节点以及集群中各节点的激活模式。
只能在主节点上创建共享磁盘组。
如果已经运行集群软件设置集群,则可以使用此命令创建共享磁盘组:
# vxdg -s init diskgroup [diskname=]devicename
此处,diskgroup 是磁盘组名称diskname 是为 VM 磁盘选择的管理名称,而devicename 是设备名(或磁盘存取名)。
操作系统无法断定磁盘是否是共享的。为了在处理可由多个系统存取的磁盘时保护数据的完整性,在将磁盘添加到磁盘组时应使用正确的指定值。如果可在其中进行磁盘存取的节点是集群中唯一的节点,则 VxVM 允许将物理上没有共享的磁盘添加到共享磁盘组。但是这意味着其它节点将无法加入集群。此外,如果尝试将同一磁盘同时添加到两个节点上的不同磁盘组中则结果将是不确定的。请只在一个节点上(最好是在主节点上)执行全部配置。
磁盘只能被强制添加到主节点上的共享磁盘组中。
如果因为某个磁盘未与现有磁盘组中的其它磁盘一样挂接到相同的节点而导致 VxVM 不将该磁盘添加到该磁盘组,则可以使用此命令强制添加该磁盘:
# vxdg -f adddisk -g diskgroup [diskname=]devicename
只有在完全清楚后果(如可能的数据损坏)的情况下,才可以使用强制选项(-f)。
共享磁盘组只能在主节点上导入。
可以使用vxdg-simport命令将磁盘组作为共享磁盘组导入。如果在运行集群软件之前设置了磁盘组则可以使用此命令将磁盘组导入到集群结构中:
# vxdg -s import diskgroup
此处,diskgroup 是磁盘组名称或 ID。在随后重新启动集群时,自动将该磁盘组作为共享磁盘组导入。注意,在调用vxdg实用程序之前,可能有必要逐出磁盘组(使用vxdg deportdiskgroup 命令)。
可以使用vxdg命令的-f选项强制导入磁盘组。
使用强制选项 (-f) 时应小心,而且只有在完全清楚后果(如可能的数据损坏)的情况下才使用。
当重新启动集群时VxVM 可能会出于下列某种原因拒绝自动导入磁盘组:
由于磁盘的硬件错误,磁盘组中的一个磁盘已经不可存取。在这种情况下,请使用如下命令强制重新导入磁盘组:
# vxdg -s -f import diskgroup
磁盘组中的磁盘所挂接到的一些节点当前不在集群中,因此磁盘组无法存取它的所有磁盘。在这种情况下,强制导入是不安全的,千万不要进行这样的尝试(因为可能导致不一致的镜像)。
若要将共享磁盘组转换为专用磁盘组,请首先使用如下命令在主节点上逐出该磁盘组:
# vxdg deport diskgroup
然后,使用此命令在任何集群节点上重新导入磁盘组:
# vxdg import diskgroup
可以使用vxdgmove命令在磁盘组之间移动自包含的 VxVM 对象(如磁盘和顶级卷)集。在集群中,可以在导入了专用磁盘组的任何集群节点上的专用磁盘组之间移动此类对象。
只能在主节点上的共享磁盘组之间移动对象。不能在专用磁盘组和共享磁盘组之间移动对象。
分割专用磁盘组将创建专用磁盘组而分割共享磁盘组将创建共享磁盘组。可以在任何导入了专用磁盘组的集群节点上分割专用磁盘组。只能在主节点上分割共享磁盘组或创建共享目标磁盘组。
如果源磁盘组和目标磁盘组都是共享的,则必须在主节点上执行结合。
不能将专用磁盘组与共享磁盘组结合。
在集群节点上设置该节点对共享磁盘组的存取激活模式。
使用此命令可更改共享磁盘组的激活模式:
# vxdg -g diskgroup set activation=mode
激活mode 是下列模式之一:exclusive-write或ew、read-only或ro、shared-read或sr、shared-write或sw以及off。
只能在主节点上设置共享磁盘组的连通性策略。
vxedit命令可用于设置共享磁盘组的global或local连通性策略
# vxedit -g diskgroup set diskdetpolicy=global|local diskgroup
只能在主节点上创建排它打开存取的卷。
当使用vxassist命令创建卷时,可使用exclusive=on属性指定该卷一次只能由集群中的一个节点打开。例如,若要在磁盘组dskgrp中创建镜像卷volmir,并将其配置为排它打开,请使用如下命令
# vxassist -g dskgrp make volmir 5g layout=mirror exclusive=on
还支持由同一节点多次打开某个卷。其它节点的任何打开该卷的尝试都将失败,直到由打开该卷的节点最终将其关闭。而指定exclusive=off意味着集群中的多个节点可同时打开一个卷。
只能在主节点上设置对某个卷进行排它打开存取。设置该属性时,应确保集群中的任何节点均未打开该卷。
可以用 vxvol 命令设置exclusive=on属性,以指定现有卷一次只能由集群中的一个节点打开。
例如,若要对磁盘组dskgrp中的卷volmir设置排它打开,使用如下命令
# vxvol -g dskgrp set exclusive=on volmir
还支持由同一节点多次打开某个卷。其它节点的任何打开该卷的尝试都将失败,直到由打开该卷的节点最终将其关闭。
而指定exclusive=off意味着集群中的多个节点可同时打开一个卷。
如下命令显示在节点上运行的集群协议版本:
# vxdctl list
此命令产生类似下面的输出:
Volboot file
version: 3/
seqno: 0.19
cluster protocol version: 20
hostid:giga
entries:
还可使用如下命令检查现有的集群协议版本:
# vxdctl protocolversion
此命令产生类似下面的输出:
Cluster running at protocol 10
如下命令显示节点支持的最大和最小协议版本及当前协议版本:
# vxdctl support
此命令产生类似下面的输出:
支持信息
vold_vrsn: 11
dg_minimum: 60
dg_maximum: 70
kernel: 10
protocol_minimum: 10
protocol_maximum: 20
protocol_current: 20
还可使用如下命令显示当前 VERITAS Volume Manager 发行版本支持的最大和最小集群协议版本:
# vxdctl protocolrange
此命令产生类似下面的输出最小协议版本:10, 最大协议版本: 20
集群协议版本只能在主节点上更新。在用新集群协议更新了集群中的所有节点后,可在主节点上使用以下命令升级整个集群
# vxdctl upgrade
只能在主节点上恢复卷。vxrecover实用程序用于在更换磁盘后恢复 plex 和卷。当节点离开集群时,它可能使一些镜像的状态不一致。vxrecover实用程序可用于恢复这样的卷。vxrecover的-c选项使其恢复共享磁盘组中的所有卷。vxclustd后台驻留程序在必要时自动调用带有-c 选项的vxrecover实用程序。
当vxrecover实用程序处于活动状态时,系统性能可能会有一些下降。
vxstat实用程序可返回指定对象的统计信息。在集群环境中,vxstat从集群的所有节点中收集统计信息。统计信息提供所有节点对被请求对象的总的使用情况。如果指定本地对象,则返回其本地使用情况。
可使用下列命令形式指定节点的子集
# vxstat -g diskgroup -n node[,node...]
此处,node 是整数。如果提供了以逗号分隔的节点列表,则vxstat实用程序显示列表中节点的统计信息的合计。
例如,若要获得节点 2 的卷vol1的统计信息请使用如下命令
# vxstat -g group1 -n 2 vol1
此命令产生类似下面的输出:
TYP
vol
NAME
vol1
OPERATIONS BLOCKS
READ WRITE READ
2421 0 600000
WRITE READ
0
AVG TIME(ms)
99.0
WRITE
0.0
若要获得并显示整个集群的统计信息请使用如下命令
# vxstat -
所有节点的统计信息将合计在一起。例如,如果节点 1 执行了 100 个 I/O 而节点 2 执行了200 个 I/O,则vxstat-b共显示 300 个 I/O。 |
|