集群由共享一组磁盘的若干主机或节点组成。集群配置的主要优点包括:
可用性
如果某个节点发生故障,其它节点仍然可以存取共享磁盘。在用合适的软件配置后,关键的应用程序可通过将其执行的操作传送给集群中的备用节点,从而继续运行。这种通过切换到冗余硬件来提供连续不间断服务的能力通常称为故障切换。故障切换对用户以及用于数据库和文件共享的高级应用程序是透明的。您可以配置VERITAS Cluster ServerTM (VCS),以监视系统和服务并在硬件或者软件发生故障时重新启动另一节点上的应用程序。VCS 还允许执行常规管理任务,如使节点加入或离开集群。
脱离主机处理集群通过在负载较轻的集群节点上执行某些活动(如备份、决策支持和报告生成)可以减少系统资源争用。这使企业可以从对集群系统的投资中获得更多的价值。VERITAS Volume Manager (VxVM) 的集群功能使集群中最多可有 16 个节点同时存取和管理受 VxVM 控制的磁盘集(VM 磁盘)。在所有的节点上可以使用同一磁盘配置逻辑视图和对其所进行的任何更改。启用了集群功能以后,集群中的所有节点都可以共享 VxVM 对象。要使用此功能,您需要有附加的许可证。
集群卷管理概述
近年来,紧耦合集群系统在企业级的关键数据处理领域中日益流行。集群的主要优点在于能够防止受到硬件故障的影响。如果主节点发生故障或因其它原因而无法使用,则应用程序可以通过将其执行操作传送给集群中的备用节点从而继续运行。这种通过切换到冗余硬件以提供连续不间断服务的能力通常称为故障切换。
集群系统的另一个主要优点在于其减少由备份、决策支持和报告生成等活动所造成的系统资源争用的能力。企业可通过在集群中负载较轻的节点而非响应服务请求的负载较重的节点上执行此类操作,从而从对集群系统的投资中获得更大的价值。这种在负载较轻的节点上执行某些操作的能力通常称为负载平衡。
VxVM 的集群功能与由主机操作系统或 VCS 提供的集群管理器后台驻留程序一起工作。集群管理器向 VxVM 通知所发生的集群成员更改。每个节点独立启动,并且都有各自的集群管理器以及各自的操作系统和带集群功能支持的 VxVM 的副本。当节点加入集群时它就获得了对共享磁盘的存取权。当节点离开集群时,它就不再具有对共享磁盘的存取权。当在某一节点上启动集群管理器时,此节点即加入集群。
专用网络允许节点共享有关系统资源和彼此状态的信息。通过使用专用网络,任何节点都可以识别当前活动的其它节点、正在加入或离开集群的节点以及已发生故障的节点。该专用网络至少需要两个通信通道,以便提供冗余来应对其中一个通道发生故障的情况。如果只使用了一个通道,则将无法区分是通道发生故障还是节点发生故障,这种情况称为网络分区。
对于集群管理器,所有节点都是一样的。加入集群的所有节点都有可能存取在共享磁盘组中配置的 VxVM 对象。然而,VxVM 的集群功能需要一个节点充当主节点;集群中的所有其它节点充当从属节点。任何节点都能够成为主节点,主节点负责协调某些 VxVM 活动。
必须在主节点上运行配置或重新配置 VxVM 对象的命令。必须从主节点启动的任务包括:设置共享磁盘组、创建和重新配置卷以及执行快照操作。
专用磁盘组
只属于一个节点。专用磁盘组仅由一个系统导入。从物理上讲,可以从一个或多个系统存取专用磁盘组中的磁盘,但实际上仅限于从一个系统存取。根磁盘组 (rootdg) 始终是专用磁盘组。
共享磁盘组
由所有节点共享。共享(或集群共享)磁盘组由所有的集群节点导入。从物理上讲,共享磁盘组中的磁盘必须能够由可能加入集群的所有系统存取。在集群中,大多数磁盘组是共享的。集群中的所有节点都可以存取共享磁盘组中的磁盘,这使得多个集群节点上的应用程序能够同时存取同一个磁盘。共享磁盘组中的卷可由集群中的多个节点同时存取,具体情况取决于许可授权和磁盘组激活模式的约束。
可以使用vxdg命令将一个磁盘组指定为集群共享磁盘组。当一个磁盘组作为一个节点的集群共享磁盘组导入时,每个磁盘头文件都标记上了集群 ID。随后的每个节点加入该集群时,将该磁盘组识别为集群共享磁盘组而将其导入。系统管理员还可以随时导入或逐出共享磁盘组该操作以分布式方式在所有节点上发生。
每个物理磁盘都标记有一个唯一的磁盘 ID。当 VxVM 的集群功能在主节点上启动时,它
导入所有的共享磁盘组(设置了noautoimport属性的磁盘组除外)。当从属节点试图加入集群时,主节点向其发送已导入的磁盘 ID 列表,从属节点则查看是否可以存取所有这些磁盘。如果从属节点不能存取其中列出的一个磁盘则它将放弃加入集群的尝试。如果它可以存取列出的所有磁盘则导入与主节点相同的共享磁盘组,并加入集群。当一个节点离开集群时,它将逐出所导入的全部共享磁盘组,但这些磁盘组在继续存在的节点上仍将保持导入状态。
重新配置共享磁盘组是通过所有节点的合作执行的。磁盘组的配置更改在所有节点上同时发生并且更改完全相同。此类更改在本质上是原子式的,即它们要么在所有节点上同时发生,要么根本不发生。
正如“共享磁盘组的激活模式”中所讨论的,集群的所有成员是否对集群共享磁盘组同时具有读写存取权限取决于该磁盘组的激活模式设置。只要集群中至少有一个节点是活动的,就可以使用包含在集群共享磁盘组中的数据。一个集群节点发生故障并不影响其余活动节点的存取。不管哪个节点存取集群共享磁盘组,该磁盘组的配置看起来都是相同的。
在每个节点上运行的应用程序都可以同时存取 VM 磁盘上的数据。VxVM 不禁止多个节点同时写入共享卷。假定由应用程序控制一致性(例如通过使用 VERITAS Cluster File System 或分布式锁定管理器)。
如果要让来自某个节点的应用程序 I/O 能够存取共享磁盘组中的卷则必须在该节点上激活共享磁盘组。应用程序对卷进行读写的能力由共享磁盘组的激活模式支配。用于共享磁盘组的有效激活模式是exclusive-write、read-only、shared-read、shared-write和off(未激活)。用于共享磁盘组的默认激活模式是shared-write。
集群的一些特殊用法,如高可用性 (HA) 应用程序和脱离主机备份等,可以利用磁盘组激活显式控制来自集群中不同节点的卷存取。
磁盘组的激活模式控制来自集群中不同节点的卷 I/O。对于给定节点上的某个磁盘组,如果已在集群中的另一个节点上激活了该磁盘组则不可能以与之冲突的模式在给定节点上激活它。
exclusive-write (ew) 该节点具有对磁盘组的排它写存取权限。任何其它节点都不能激活磁盘组进行写存取。
read-only (ro) 该节点具有对磁盘组的读存取权限,并拒绝集群中所有其它节点的写存取。该节点没有对磁盘组的写存取权限。尝试在其它节点上激活磁盘组以获得任何一种写模式将会失败。
shared-read (sr) 该节点具有对磁盘组的读存取权限。该节点没有对磁盘组的写存取权限,但其它节点可以获得写存取权限。
shared-write (sw) 该节点具有对磁盘组的写存取权限。
off 该节点对磁盘组既没有读存取权限也没有写存取权限。但允许在磁盘组上执行查询操作。
允许的和有冲突的激活模式
exclusive-write read-only shared-read shared-write
exclusive-write 失败 失败 成功 失败
read-only 失败 成功 成功 失败
shared-read 成功 成功 成功 成功
shared-write 失败 失败 成功 成功
若要将激活模式置于用户的控制下请创建默认文件/etc/default/vxdg,该文件包含以下行:
enable_activation=true
default_activation_mode=activation-mode
激活模式是下列模式之一:exclusive-write、read-only、shared-read、shared-write和off。
当使用默认值文件启用激活时,建议使默认值文件在集群的所有节点上都完全相同。否则,激活的结果将是无法预见的。
当创建或导入共享磁盘组时,将以指定的模式激活它。当某个节点加入集群时,将以指定的模式激活可从该节点存取的所有共享磁盘组。
如果在vxconfigd后台驻留程序运行期间编辑了默认值文件,则必须重新启动vxconfigd进程才能使默认值文件中的更改生效。
如果默认激活模式是除关闭外的其它任何一种,且集群的另一节点已经以冲突模式激活了某个磁盘组,则集群加入、磁盘组创建或导入之后的激活可能失败。
集群中的节点必须始终就磁盘状态达成一致。具体而言,如果一个节点无法写入给定的磁盘,则在将写操作的结果返回给调用者之前,所有节点都必须停止对该磁盘的存取。因此,如果一个节点无法联系某个磁盘则应联系另一个节点以检查该磁盘的状态。如果磁盘发生故障,则所有的节点都无法对它进行存取,于是节点可一致同意分离该磁盘。如果磁盘没有发生故障,而是一些节点的存取路径发生故障,则节点无法就该磁盘的状态达成一致。为解决此类差异,可应用下列任一策略
在全局连通性策略中,如果集群中的任何节点报告磁盘故障,则在集群范围内(全局)进行分离。这是默认策略。在局部连通性策略中,如果磁盘发生故障,则仅将故障的范围限定在发生故障的特定节点。注意,系统会尝试与集群中的所有节点通信来确定磁盘的可用性。如果所有节点都报告磁盘有问题,则进行集群范围内的分离。
VxVM 的集群功能不支持 RAID-5 卷或集群共享磁盘组的任务监视。但这些功能可用于挂
接在集群的特定节点上的专用磁盘组中。在不涉及 RAID-5 卷的前提下支持联机重新布局。
根磁盘组 (rootdg) 不能作为集群共享磁盘组。它必须是专用的。
只有原始设备的存取可以通过 VxVM 的集群功能执行。除非安装并配置了适当的软件(如 VERITAS Cluster File System),否则它不支持对共享卷中的文件系统的共享存取。如果共享磁盘组包含不受支持的对象,则将其逐出,然后将该磁盘组重新导入为一个集群节点上的专用磁盘组。将卷重新组织为共享磁盘组支持的布局,然后逐出磁盘组,并将其重新导入为共享磁盘组。
集群初始化和配置
在任何节点第一次可以加入新集群之前,必须在集群管理器设置过程中提供某些配置信息。这些信息通常以某种形式存储在集群管理器配置数据库中。其确切内容和格式取决于集群管理器的特性。VxVM 需要的信息如下所示:
集群 ID
节点 ID
节点的网络地址
端口地址
当节点加入集群时,这些信息在节点启动时自动装载到该节点上的 VxVM 中。VxVM 的集群功能要求集群管理器(例如,由 SunCluster. 或由 VCS 中的 GAB (组成员和原子广播)所提供)已进行过配置。如果是 VCS 环境,可在任意节点上使用vxcvmconfig命令来配置集群,以使用 VxVM 的集群功能。VRTScavf软件包中提供了vxcvmconfig命令,该软件包随 VERITAS SANPoint Foundation Suite. HA 提供,但不随 VERITAS Volume Manager 提供。
集群管理器启动过程对节点进行初始化,并在节点上启动各种集群组件(例如带集群支持的 VxVM、集群管理器和分布式锁定管理器)。一旦完成初始化,就可以启动应用程序了。必须在要加入到集群的每个节点上调用集群管理器启动过程。
对于集群环境中的 VxVM,初始化过程包括装载集群配置信息以及在集群中加入节点。第一个加入集群的节点成为主节点,后面的节点(从属节点)加入到主节点。如果两个节点同时加入,则由 VxVM 从中选择主节点。一旦完成给定节点的加入,该节点就具有对共享磁盘的存取权限。
如果有节点离开或加入集群,则发生集群重新配置。每个节点的集群管理器不断地监视其它集群节点。当集群成员更改时,集群管理器将通知 VxVM 以便采取适当的操作。
在集群重新配置期间,VxVM 暂停对共享磁盘的 I/O 操作。重新配置完成后I/O 操作继
续进行。在重新配置期间,应用程序可能会呈现出短暂的冻结状态。
如果正在进行其它操作(如 VxVM 操作或恢复),则可以推迟集群重新配置直到这些操作都完成。不与集群重新配置同时发生。根据具体的情况,一个操作可能会挂起并在稍后重新启动。在大多数情况下,优先执行集群重新配置。然而,如果卷重新配置处于提交阶段,则首先完成它。
当 SunCluster. 充当集群管理器时使用vxclust。
每当进行集群重新配置时,集群中的每个现有节点就按编排好的步骤一步步地运行vxclust实用程序。集群管理器实用程序确保在所有节点上同时执行相同的步骤。只有当上一步骤在所有节点上都已完成时,才会开始给定的步骤。在重新配置的每一步,vxclust实用程序都确定 VxVM 的集群功能下一步应执行的操作。在通知 VxVM 下一步执行的操作后vxclust实用程序就等待结果(成功、失败或重试),并将结果传送给集群管理器。
如果某个节点在特定的超时期间内没有响应vxclust实用程序请求,则该节点将中止。然后
vxclust实用程序根据具体情况确定是重新启动重新配置还是放弃。如果导致重新配置的原因是无法修正的本地错误则vxclust将放弃。如果一个节点由于另一个节点已经离开而不能完成操作,则剩下的这个节点将会超时。在这种情况下,vxclust实用程序将请求重新配置,希望另一个节点会离开。如果没有其它节点离开,则vxclust实用程序使本地节点离开。
如果某个重新配置步骤失败,则vxclust实用程序将错误返回给集群管理器。集群管理器可能会决定中止节点,使它立即脱离集群。任何正在进行中的对共享磁盘的 I/O 都将失败,对共享磁盘的存取也会停止。
vxclust在接收到集群发生更改的通知后确定应采取的操作。如果需要新的主节点(由于先前的主节点发生故障),则vxclust确定哪个节点成为新的主节点。
vxclustadm仅适用于 VERITAS Cluster Server (VCS)。
在没有集群监视器的情况下,vxclustadm命令提供到 VxVM 集群功能的接口。它可用于激活集群中任意节点上的 VxVM 的集群功能或使之无效。在集群启动和关闭期间,VERITAS Cluster Server (VCS) 也会调用它。
vxclustadm的startnode关键字通过将集群配置信息传递到 VxVM 内核来启动集群节点上的集群功能。为了响应该命令,内核与 VxVM 配置后台驻留程序vxconfigd执行初始化。
如果没有使用集群监视器,membership关键字将更新 VxVM 内核中有关集群成员的信
息。每当集群成员更改时,就必须对所有节点发出此命令。
stopnode关键字停止节点上的集群功能。它等待所有未完成的 I/O 完成并等待所有的应用程序关闭共享卷。
abortnode关键字终止节点上的集群活动。它既不等待未完成的 I/O 完成,也不等待应用程序关闭共享卷。
nodestate关键字报告集群节点的状态:out of cluster、joining或cluster memeber。
有关vxclustadm的完整信息及其用法的示例,请参见vxclustadm(1M) 帮助手册。
卷重新配置是创建、更改和删除 VxVM 对象(如磁盘组、卷和 plex 等)的过程。在集群中,所有节点协同执行此类操作。
卷重新配置事务是通过在主节点上运行 VxVM 实用程序来启动的。此实用程序联系主节点上的本地vxconfigd后台驻留程序该后台驻留程序对请求的更改进行确认。例如,vxconfigd拒绝创建与现有磁盘组同名的新磁盘组的尝试。主节点上的vxconfigd后台驻留程序随后将更改细节发送到从属节点上的vxconfigd后台驻留程序。然后,从属节点上的vxconfigd执行各自的检查。例如每个从属节点核实它没有与正在创建的磁盘组同名的专用磁盘组;如果该操作涉及新磁盘则每个节点都会检查它能否存取该磁盘。当所有节点上的vxconfigd后台驻留程序都认为所提出的更改可行时,将分别通知它的内核。然后这些内核协同提交或放弃事务。在可以提交事务之前,所有的内核都将确保没有任何正在进行中的 I/O。主节点既负责启动重新配置,又负责协调事务的提交。产生的配置更改似乎是在所有节点上同时发生的。
如果任一节点上的vxconfigd后台驻留程序在重新配置期间离开,则会将这一消息通知所有节点,操作将告失败。如果任一节点离开集群,操作将告失败,除非主节点已提交此操作。如果主节点离开集群,新的主节点(以前的从属节点)将完成操作或使操作失败具体取决于它是否从以前的主节点接收到成功完成的通知。通知按如下方式进行:如果新的主节点没有接收到此通知则任何其它从属节点也不会接收到。
如果在执行卷重新配置期间有一个节点试图加入集群,则重新配置的结果取决于该操作进行的程度。如果尚未调用内核,则卷重新配置将暂停,直到该节点加入集群。如果已调用内核,则节点等到重新配置完成后才加入集群。
当发生错误时(例如从属节点上的检查失败或有节点离开集群),该错误被返回到实用程序,并向主节点上的控制台发送一条信息以标识发生错误的节点。
VxVM 配置后台驻留程序vxconfigd会维护 VxVM 对象的配置。它从 SunCluster 下的vxclust实用程序或内核(运行 VCS 时)接收与集群有关的指令。每个节点上都运行一个单独的vxconfigd副本,这些副本通过网络互相通信。当进行调用时VxVM 实用程序与在同一节点上运行的vxconfigd后台驻留程序通信;它不会尝试与其它节点上的vxconfigd后台驻留程序连接。在集群启动期间,vxclust实用程序(SunCluster) 或内核(用于 VCS)提示vxconfigd开始集群操作,并指明它是主节点还是从属节点。
当一个节点为集群操作做好初始化时,将通知vxconfigd后台驻留程序此节点将要加入集群,并为它提供下列信息来自集群管理器配置数据库)
集群 ID
节点 ID
主节点 ID
节点的作用
每个节点上vxconfigd后台驻留程序的网络地址在主节点上,vxconfigd后台驻留程序通过导入共享磁盘组设置共享配置,并通知vxclust实用程序(用于 SunCluster)或内核(用于 VCS)从属节点何时可以加入集群。
在从属节点上,当从属节点可以加入集群时,将通知vxconfigd后台驻留程序。当从属节点加入集群时vxconfigd后台驻留程序和 VxVM 内核与主节点上的后台驻留程序通信,以设置共享配置。
当节点离开集群时, vxconfigd后台驻留程序通知所有其它节点上的内核。然后主节点执行任何必要的清除操作。如果主节点离开集群,内核将选择一个新的主节点,并将这一选择通知给所有节点上的vxconfigd后台驻留程序。
可以随时停止或重新启动vxconfigd后台驻留程序。如果vxconfigd后台驻留程序停止,则直到它重新启动后,卷重新配置才能发生,其它节点也才能加入集群。在集群中,从属节点上的vxconfigd后台驻留程序始终连接到主节点上的vxconfigd后台驻留程序。因此,停止任何集群节点上的vxconfigd后台驻留程序都是不明智的。
根据停止的vxconfigd后台驻留程序所在的节点,采取不同的操作:
如果在从属节点上停止了vxconfigd后台驻留程序,主节点将不采取任何行动。当vxconfigd后台驻留程序在从属节点上重新启动时,从属节点的vxconfigd后台驻留程序会尝试重新连接到主节点的后台驻留程序,并重新获得有关共享配置的信息。(共享配置的内核视图和对共享磁盘的存取都不受影响。)在从属节点上的vxconfigd后台驻留程序成功地重新连接到主节点上的vxconfigd后台驻留程序之前,它只有极少的有关共享配置的信息,任何显示或修改共享配置的尝试都会失败。例如,使用vxdglist命令列出的共享磁盘组被标记为disabled ;当重新加入操作成功完成时,它们被标记为enabled。
如果在主节点上停止了vxconfigd后台驻留程序则从属节点上的vxconfigd后台驻留程序将定期尝试重新加入到主节点。直到在主节点上重新启动了vxconfigd后台驻留程序之后,这种尝试才会成功。在这种情况下,从属节点上的vxconfigd后台驻留程序尚未丢失有关共享配置的信息,因此显示的任何配置信息都是正确的。如果vxconfigd后台驻留程序在主节点和从属节点上都停止了,则直到在主节点和从属节点上重新启动了vxconfigd,并且后台驻留程序已重新连接后,从属节点才会显示准确的配置信息。
如果vxclust实用程序(用于 SunCluster)或内核(用于 VCS)确认某节点上的vxconfigd后台驻留程序已停止,则vxclust将重新启动vxconfigd。
vxconfigd的-r重置选项重新启动vxconfigd后台驻留程序,并从头开始重新创建所有状态。不能在节点加入集群时使用该选项重新启动vxconfigd,因为它会导致丢弃集群信息。
尽管可以通过调用节点集群管理器的关闭过程在该节点上关闭集群,但此过程意在先停止节点上能够存取共享存储的任何应用程序,然后再终止集群组件。VxVM 支持干净节点关闭,它允许节点在对共享卷的所有存取停止后正常地离开集群。主机仍然可以运转,但集群应用程序不能在主机上运行。
VxVM 的集群功能为每个卷维护全局状态信息。这使 VxVM 能够在节点崩溃时确定需要恢复的卷。当节点由于崩溃或以其它某种非干净方式离开集群时VxVM 确定哪些卷可能有未完成的写操作,并由主节点将这些卷再同步。如果所有这些卷的脏区记录 (DRL) 或快速重同步都是活动的,则 VxVM 可使用脏区记录或快速重同步。
干净节点关闭操作应与停止所有集群应用程序的过程配合使用,或在该过程之后使用。根据集群应用程序及其关闭过程的特性,成功地关闭可能需要很长一段时间(几分钟到几小时)。例如很多应用程序有排干的概念,即在退出之前不接受新工作,但会完成所有正在进行的工作。此过程可能会花很长时间,比如激活了一个长时间运行的事务。
调用 VxVM 关闭过程时,该过程检查正在关闭的节点上的所有共享磁盘组中的所有卷。然后,该过程继续执行关闭或因下列原因之一失败
如果共享磁盘组中的所有卷都关闭了,则 VxVM 使它们不可由应用程序使用。由于所有节点都知道这些卷在要离开的节点上是关闭的,因此不执行再同步。
如果共享磁盘组中有任何卷是打开的,关闭过程将失败。可以反复重试关闭过程,直到成功。在此操作中没有超时检查超时检查是用于检验集群应用程序是否不再活动的服务。
节点一旦成功关闭,便离开了集群。除非该节点再加入集群,否则不可能存取共享卷。
回复于:2007-02-07 11:18:39
由于关闭可能是一个很长的过程,因此在关闭进行期间可能发生其它的重新配置。正常情况下,关闭操作尝试被推迟到其它重新配置完成之后。不过,如果关闭操作很早以前就已经开始了,也可能首先完成关闭。
如果节点没有干净地离开集群,则可能是因为节点已崩溃,或是因为某个集群组件在紧急情况下使此节点离开。随后发生的集群重新配置将调用 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。
阅读(2031) | 评论(0) | 转发(1) |