本节介绍如何为群集配置创建磁盘组。在 Sun Cluster 中创建 Solaris Volume Manager 磁盘集时,该磁盘集会通过 Sun Cluster 软件自动注册成类型为 svm 的设备组。要创建或删除 svm 设备组,就必须使用 Solaris Volume Manager 的命令和实用程序创建或删除设备组的底层磁盘集。
要创建供 Oracle RAC 使用的 Solaris Volume Manager for Sun Cluster 磁盘集,请勿使用这些过程。而应执行《Sun Cluster Data Service for Oracle RAC Guide for Solaris OS》中的“How to Create a Multi-Owner Disk Set in Solaris Volume Manager for Sun Cluster for the Oracle RAC Database”所介绍的过程。
下表列出了您将执行以创建磁盘组的任务。
表 4–2 任务表:安装和配置 Solaris Volume Manager 软件
任务 |
参考 |
---|---|
1. 使用 metaset 命令创建磁盘组。 | |
2. 将驱动器添加到磁盘组。 | |
3.(可选)对磁盘集中的驱动器重新分区,以便为各个分片分配空间。 | |
4. 列出 DID 伪驱动程序映射并在 /etc/lvm/md.tab 文件中定义卷。 | |
5. 初始化 md.tab 文件。 |
请执行以下过程来创建磁盘集。
此过程提供了 Sun Cluster 命令的完整形式。此外,大多数命令还有简短格式。除了命令名称的形式以外,简写形式和完整形式的命令是相同的。有关各命令及其简写形式的列表,请参见《Sun Cluster 系统管理指南(适用于 Solaris OS)》中的附录 A “Sun Cluster 面向对象的命令”。
SPARC:(Solaris 9)确定在您创建新磁盘集后群集中包含的磁盘集数目是否会超过三个。
在群集的任何节点上,检查 /kernel/drv/md.conf 文件中的 md_nsets 变量的值。
如果群集中磁盘组的总数大于 md_nsets 的现有值减一,请将 md_nsets 的值增加到所需的值。
磁盘组的最大许可数为 md_nsets 的配置值减一。md_nsets 可能的最大值为 32,因此可以创建的最大磁盘组数为 31。
确保 /kernel/drv/md.conf 文件在群集的每个节点上都完全相同。
不按本指南操作可能会导致严重的 Solaris Volume Manager 错误,并且可能丢失数据。
如果更改了任一节点上的 md.conf 文件,请执行以下步骤以使这些更改生效。
在一个节点上成为超级用户。
从一个节点,关闭群集。
phys-schost# cluster shutdown -g0 -y |
重新引导群集的每个节点。
在基于 SPARC 的系统中执行以下操作:
ok boot |
在基于 x86 的系统中执行以下操作:
显示 GRUB 菜单后,选择相应的 Solaris 条目,然后按 Enter 键。GRUB 菜单显示如下内容:
GNU GRUB version 0.95 (631K lower / 2095488K upper memory) +-------------------------------------------------------------------------+ | Solaris 10 /sol_10_x86 | | Solaris failsafe | | | +-------------------------------------------------------------------------+ Use the ^ and v keys to select which entry is highlighted. Press enter to boot the selected OS, 'e' to edit the commands before booting, or 'c' for a command-line. |
有关基于 GRUB 进行引导的更多信息,请参见《System Administration Guide: Basic Administration》中的第 11 章 “GRUB Based Booting (Tasks)”。
在群集的每个节点上,运行 devfsadm(1M) 命令。
您可以同时在群集的所有节点上运行此命令。
phys-schost# cldevice populate |
有关更多信息,请参见 cldevice(1CL) 手册页。
尝试创建任何磁盘集之前,先在每个节点上检验上述命令是否已完成处理过程。
即使仅从一个节点运行,该命令也会以远程方式在所有的节点上执行。要确定该命令是否已完成处理过程,请在群集中的每个节点上运行以下命令。
phys-schost# ps -ef | grep scgdevs |
确保要创建的磁盘组符合以下要求之一。
如果正好用两个磁盘串配置磁盘组,则磁盘组必须正好连接至两个节点并正好使用两个调解器主机。这些调解器主机必须是用于该磁盘组的两个主机。有关如何配置双串调解器的详细信息,请参见配置双串调解器。
如果为磁盘集配置了两个以上的磁盘串,则应确保任意两个磁盘串 S1 和 S2 上的驱动器数目之和都会超过第三个磁盘串 S3 上的驱动器数目。用一个公式来表示,该需求为 count(S1) + count(S2) > count(S3)。
确保有本地状态数据库的副本。
有关说明,请参见如何创建状态数据库副本。
成为将控制磁盘组的群集节点上的超级用户。
创建磁盘组。
以下命令可创建磁盘集并将其注册为 Sun Cluster 设备组。
phys-schost# metaset -s setname -a -h node1 node2 |
指定磁盘集名称。
添加(创建)磁盘集。
指定将控制磁盘集的主节点的名称。
指定将控制磁组集的辅助节点的名称
运行 metaset 命令配置群集上的 Solaris Volume Manager 设备组时,该命令缺省指定一个辅助节点。创建了设备组之后,您可以使用 clsetup 实用程序更改设备组中所需的辅助节点数目。有关如何更改 numsecondaries 属性的更多信息,请参阅《Sun Cluster 系统管理指南(适用于 Solaris OS)》中的“管理设备组”。
如果要配置被复制的 Solstice DiskSuite 设备组或 Solaris Volume Manager 设备组,请设置该设备组的复制属性。
phys-schost# cldevicegroup sync device-group-name |
有关数据复制的更多信息,请参见《Sun Cluster 系统管理指南(适用于 Solaris OS)》中的第 4 章 “数据复制方法”。
检验新磁盘组的状态。
phys-schost# metaset -s setname |
根据需要设置设备组的属性。
phys-schost# cldevicegroup set -p name=value devicegroup |
指定一个设备组属性。
指定属性的名称。
指定属性的值或设置。
指定设备组的名称。设备组名称与磁盘集名称相同。
有关设备组属性的信息,请参见 cldevicegroup(1CL)。
以下命令将创建 dg-schost-1 和 dg-schost-2 两个磁盘组,同时指定节点 phys-schost-1 和 phys-schost-2 为潜在主节点。
phys-schost# metaset -s dg-schost-1 -a -h phys-schost-1 phys-schost-2 phys-schost# metaset -s dg-schost-2 -a -h phys-schost-1 phys-schost-2 |
将驱动器添加至磁盘组。请转到将驱动器添加到磁盘集。
将驱动器添加到磁盘集时,卷管理软件将按照以下原则对驱动器进行重新分区,以便将磁盘集的状态数据库放入驱动器。
每个驱动器都有一小部分被保留用于 Solaris Volume Manager 软件。在标为卷目录 (VTOC) 的设备中,使用的是分片 7。在标为 可扩展固件接口 (EFI) 的设备中,使用的是分片 6。每个驱动器上其余的空间则置于分片 0 中。
将驱动器添加到磁盘集中时,只有在目标分片配置不正确的情况下才会对驱动器进行重新分区。
重新分区时,驱动器中的所有现有数据都将丢失。
如果目标分片是从 0 柱面开始的,而驱动器分区的大小又足以包含一个状态数据库副本,则驱动器不会进行重新分区。
确保已创建磁盘集。有关说明,请参见如何创建磁盘集。
成为超级用户。
列出 DID 映射。
phys-schost# cldevice show | grep Device |
选择由将要控制或可能要控制磁盘组的群集节点共享的驱动器。
向磁盘集添加驱动器时,请使用格式为 /dev/did/rdsk/dN 的完整 DID 设备名称。
在下面的示例中,DID 设备 /dev/did/rdsk/d3 的条目表明 phys-schost-1 和 phys-schost-2 正在共享驱动器。
=== DID Device Instances === DID Device Name: /dev/did/rdsk/d1 Full Device Path: phys-schost-1:/dev/rdsk/c0t0d0 DID Device Name: /dev/did/rdsk/d2 Full Device Path: phys-schost-1:/dev/rdsk/c0t6d0 DID Device Name: /dev/did/rdsk/d3 Full Device Path: phys-schost-1:/dev/rdsk/c1t1d0 Full Device Path: phys-schost-2:/dev/rdsk/c1t1d0 … |
成为磁盘组的拥有者。
phys-schost# cldegivegroup switch -n node devicegroup |
指定拥有设备组所有权的节点。
指定设备组名称,该名称与磁盘集名称相同。
将驱动器添加到磁盘组。
使用完整的 DID 路径名称。
phys-schost# metaset -s setname -a /dev/did/rdsk/dN |
指定磁盘集的名称,该名称与设备组名称相同。
给磁盘集添加驱动器。
将驱动器添加到磁盘组时,请勿使用低级别设备名称 (cNtXdY)。因为低级别设备名称是本地名称,并且在群集中不是唯一的,使用该名称可能使元集合不能切换。
检验磁盘组和驱动器的状态。
phys-schost# metaset -s setname |
metaset 命令将驱动器 /dev/did/rdsk/d1 和 /dev/did/rdsk/d2 添加到磁盘组 dg-schost-1。
phys-schost# metaset -s dg-schost-1 -a /dev/did/rdsk/d1 /dev/did/rdsk/d2 |
要对驱动器进行重新分区以便在卷中使用,请转到如何对磁盘组内的驱动器进行重新分区。
否则,请转到如何创建 md.tab 文件以使用 md.tab 文件定义元设备或卷。
可使用 metaset(1M) 命令对磁盘集中的驱动器进行重新分区,以使每个驱动器都有一小部分被保留用于 Solaris Volume Manager 软件。在标为卷目录 (VTOC) 的设备中,使用的是分片 7。在标为 可扩展固件接口 (EFI) 的设备中,使用的是分片 6。每个驱动器上的其余空间则被置于分片 0 中。为了更有效地使用驱动器,请使用以下过程修改磁盘布局。如果将空间分配给 VTOC 分片 1 至 6 或 EFI 分片 1 至 5,则在设置 Solaris Volume Manager 卷时就可以使用这些分片。
成为超级用户。
使用 format 命令更改磁盘组中每个驱动器的磁盘分区。
对驱动器进行重新分区时,必须满足以下条件以防止 metaset(1M) 命令对驱动器进行重新分区。
创建分片 7(对于 VTOC)或分片 6(对于 EFI),该分片应从 0 柱面开始,大小应足以容纳一个状态数据库副本。请参见 Solaris Volume Manager 管理指南,确定您的卷管理器软件版本的状态数据库副本的大小。
将目标分片中的 Flag 字段设置为 wu(可读写,可卸载)。不要将其设置为只读。
不要让目标分片覆盖驱动器上的任何其他分片。
有关详细信息,请参见 format(1M) 手册页。
使用 md.tab 文件定义卷。请转到如何创建 md.tab 文件。
在群集中的每个节点上创建一个 /etc/lvm/md.tab 文件。需使用 md.tab 文件来为已创建的磁盘集定义 Solaris Volume Manager 卷。
如果使用的是本地卷,请确保本地卷名称不同于用于构成磁盘集的设备 ID 名称。例如,如果在磁盘集内使用了设备 ID 名称 /dev/did/dsk/d3,请勿将名称 /dev/md/dsk/d3 用于本地卷。此项要求不适用于共享卷,它们使用命名约定 /dev/md/setname/{r}dsk/d#。
成为超级用户。
列出创建 md.tab 文件时要引用的 DID 映射。
使用 md.tab 文件中的完整 DID 设备名称代替级别较低的设备名称 (cN tXdY)。DID 设备名称采用的格式为 /dev/did/rdsk/dN。
phys-schost# cldevice show | grep Device |
=== DID 设备实例 === DID 设备名称: /dev/did/rdsk/d1 完整设备路径: phys-schost-1:/dev/rdsk/c0t0d0 DID 设备名称: /dev/did/rdsk/d2 完整设备路径: phys-schost-1:/dev/rdsk/c0t6d0 DID 设备名称: /dev/did/rdsk/d3 完整设备路径: phys-schost-1:/dev/rdsk/c1t1d0 完整设备路径: phys-schost-2:/dev/rdsk/c1t1d0 … |
创建一个 /etc/lvm/md.tab 文件并使用您的首选文本编辑器编辑该文件。
如果驱动器包含的现有数据要用于子镜像,则您必须在设置卷之前备份这些数据。然后将数据恢复到镜像上。
为避免群集环境中不同节点上的本地卷之间可能产生混淆,请使用一种可以使每个本地卷名称在群集中保持唯一的命名方案。例如,为节点 1 选择 d100 到 d199 之间的名称。为节点 2 选用 d200 到 d299 之间的名称。
有关如何创建 md.tab 文件的详细信息,请参见 Solaris Volume Manager 文档和 md.tab(4) 手册页。
以下样例 md.tab 文件定义了名为 dg-schost-1 的磁盘组。md.tab 文件中各行的顺序并不重要。
dg-schost-1/d0 -m dg-schost-1/d10 dg-schost-1/d20 dg-schost-1/d10 1 1 /dev/did/rdsk/d1s0 dg-schost-1/d20 1 1 /dev/did/rdsk/d2s0 |
md.tab 文件样例的结构如下。
第一行将设备 d0 定义为卷 d10 和 d20 的镜像。-m 表示该设备为镜像设备。
dg-schost-1/d0 -m dg-schost-1/d0 dg-schost-1/d20 |
第二行将卷 d10(d0 的第一个子镜像)定义为单向条。
dg-schost-1/d10 1 1 /dev/did/rdsk/d1s0 |
第三行将卷 d20(d0 的第二个子镜像)定义为单向条。
dg-schost-1/d20 1 1 /dev/did/rdsk/d2s0 |
激活在 md.tab 文件中定义的卷。请转至如何激活卷。
请执行以下过程来激活 md.tab 文件中定义的 Solaris Volume Manager 卷。
成为超级用户。
确保 md.tab 文件位于 /etc/lvm 目录中。
确保您对将要在其中执行命令的节点上的磁盘组具有拥有权。
获取磁盘组的拥有权。
phys-schost# cldevicegroup switch -n node devicegroup |
指定拥有所有权的节点。
指定磁盘集名称。
激活在 md.tab 文件中定义的磁盘集的卷。
phys-schost# metainit -s setname -a |
指定磁盘集名称。
激活 md.tab 文件中的所有卷。
如有必要,请从与驱动器连接的另一个节点运行 metainit(1M) 命令。该步骤对于群集对拓扑是必需的,因为在此类拓扑中,并非所有节点都能访问驱动器。
检查卷的状态。
phys-schost# metastat -s setname |
有关更多信息,请参见 metastat(1M) 手册页。
(可选的)捕获磁盘分区信息,以供将来参考之用。
phys-schost# prtvtoc /dev/rdsk/cNtXdYsZ > filename |
应将该文件存储在群集外部的某个位置。如果对磁盘配置进行了任何更改,请再次运行此命令以捕获更改后的配置信息。如果磁盘发生故障需要更换,则可以使用此信息来恢复磁盘分区配置。有关更多信息,请参见 prtvtoc(1M) 手册页。
(可选的)对群集配置进行备份。
对群集配置的归档备份有助于您更方便地恢复群集配置。
在以下示例中,md.tab 文件中为磁盘集 dg-schost-1 定义的所有卷均将被激活。
phys-schost# metainit -s dg-schost-1 -a |
如果群集包含正好配置了两个磁盘附件的磁盘组并且包含两个节点,请添加双串调解器。请转到配置双串调解器。
否则,请转到如何创建群集文件系统以创建群集文件系统。