本节介绍如何为群集配置创建磁盘组。在以下情况下可能不需要创建磁盘组:
如果使用 SunPlex Installer 安装了 Solstice DiskSuite,则可能已存在一个到三个磁盘组。有关由 SunPlex Installer 创建的元集的信息,请参见使用 SunPlex Installer 配置 Sun Cluster 软件。
要创建供 Oracle Real Application Clusters 使用的 Solaris Volume Manager for Sun Cluster 磁盘组,请勿使用这些过程。请执行《Sun Cluster Data Service for Oracle Real Application Clusters Guide for Solaris OS》中的“Creating a Multi-Owner Disk Set in Solaris Volume Manager for Sun Cluster for the Oracle Real Application Clusters Database”中的过程。
下表列出了您将执行以创建磁盘组的任务。
表 3–2 任务对应关系:安装和配置 Solstice DiskSuite 或 Solaris Volume Manager 软件
任务 |
参考 |
---|---|
1. 使用 metaset 命令创建磁盘组。 | |
2. 将驱动器添加到磁盘组。 | |
3.(可选)对磁盘组中的驱动器重新分区,将空间分配为 1 到 6 个盘片。 | |
4. 列出 DID 伪驱动器映射并在 /etc/lvm/md.tab 文件中定义元设备或卷。 | |
5. 初始化 md.tab 文件。 |
请执行以下过程来创建磁盘组。
(Solaris 8 或 Solaris 9)创建新磁盘组后,确定群集中是否包含三个以上磁盘组。
在群集的任何节点上,检查 /kernel/drv/md.conf 文件中的 md_nsets 变量的值。
如果群集中磁盘组的总数大于 md_nsets 的现有值减一,请将 md_nsets 的值增加到所需的值。
磁盘组的最大许可数为 md_nsets 的配置值减一。md_nsets 可能的最大值为 32,因此可以创建的最大磁盘组数为 31。
确保 /kernel/drv/md.conf 文件在群集的每个节点上都完全相同。
不按本指南操作可能会导致严重的 Solstice DiskSuite 或 Solaris Volume Manager 错误,并且可能丢失数据。
如果更改了任一节点上的 md.conf 文件,请执行以下步骤以使这些更改生效。
在群集中的每个节点上,运行 devfsadm(1M) 命令。
您可以同时在群集的所有节点上运行此命令。
从群集的一个节点运行 scgdevs(1M) 命令以更新全局设备名称空间。
在每个节点上,在尝试创建任何磁盘组之前检验 scgdevs 命令是否已完成处理。
scgdevs 命令在所有节点上远程调用其自身,即使仅从一个节点运行该命令也是如此。要确定 scgdevs 命令是否已完成处理过程,请在群集的每个节点上运行以下命令。
% ps -ef | grep scgdevs |
确保要创建的磁盘组符合以下要求之一。
如果正好用两个磁盘串配置磁盘组,则磁盘组必须正好连接至两个节点并正好使用两个调解器主机。这些调解器主机必须是用于该磁盘组的两个主机。有关如何配置双串调解器的详细信息,请参见配置双串调解器。
如果用两个以上的磁盘串配置磁盘组,请确保对于任何两个磁盘串 S1 和 S2,这些串上的驱动器数的总和超过第三个串 S3 上的驱动器数目。如果用公式表达,则此要求为 count(S1) + count(S2) > count(S3)。
确保有本地状态数据库的复本。
有关说明,请参见如何创建状态数据库复本。
成为将控制磁盘组的群集节点上的超级用户。
创建磁盘组。
以下命令用于创建磁盘组并将其注册为 Sun Cluster 磁盘设备组。
# metaset -s setname -a -h node1 node2 |
指定磁盘组的名称。
添加(创建)磁盘组
指定将控制磁盘组的主节点的名称
指定将控制磁组集的辅助节点的名称
运行 metaset 命令配置群集上的 Solstice DiskSuite 或 Solaris Volume Manager 设备组时,该命令缺省指定一个辅助节点。可以在设备组创建后,使用 scsetup(1M) 实用程序更改设备组中所需的辅助节点数目。有关如何更改 numsecondaries 属性的更多信息,请参阅《Sun Cluster 系统管理指南(适用于 Solaris OS)》中的“管理磁盘设备组”。
检验新磁盘组的状态。
# metaset -s setname |
以下命令将创建 dg-schost-1 和 dg-schost-2 两个磁盘组,同时指定节点 phys-schost-1 和 phys-schost-2 为潜在主节点。
# metaset -s dg-schost-1 -a -h phys-schost-1 phys-schost-2 # metaset -s dg-schost-2 -a -h phys-schost-1 phys-schost-2 |
将驱动器添加至磁盘组。请转到将驱动器添加到磁盘组。
将驱动器添加到磁盘组时,卷管理软件将按照以下原则对驱动器进行重新分区,以便将磁盘组的状态数据库放入驱动器。
每个驱动器有一小部分保留在第 7 片中供 Solstice DiskSuite 或 Solaris Volume Manager 软件使用。每个驱动器的剩余空间放在第 0 片中。
只有在分片 7 配置不正确的情况下,才在将驱动器添加到磁盘组时对驱动器进行重新分区。
重新分区时,驱动器中的所有现有数据都将丢失。
如果分片 7 从柱面 0 开始,并且驱动器分区的大小足以包含一个状态数据库拷贝,则不会对该驱动器进行重新分区。
确保已创建磁盘组。有关说明,请参见如何创建磁盘组。
成为节点的超级用户。
列出 DID 映射。
# scdidadm -L |
选择由将要控制或可能要控制磁盘组的群集节点共享的驱动器。
将驱动器添加到磁盘组时,请使用完整的设备 ID 路径名称。
输出的第一列是 DID 实例编号,第二列是完整路径(物理路径),第三列是完整的设备 ID 路径名称(伪路径)。对于相同的 DID 实例编号,共享驱动器具有多个条目。
在以下示例中,DID 实例编号为 2 的条目表示一个由 phys-schost-1 和 phys-schost-2 共享的驱动器,完整的设备 ID 路径名称为 /dev/did/rdsk/d2。
1 phys-schost-1:/dev/rdsk/c0t0d0 /dev/did/rdsk/d1 2 phys-schost-1:/dev/rdsk/c1t1d0 /dev/did/rdsk/d2 2 phys-schost-2:/dev/rdsk/c1t1d0 /dev/did/rdsk/d2 3 phys-schost-1:/dev/rdsk/c1t2d0 /dev/did/rdsk/d3 3 phys-schost-2:/dev/rdsk/c1t2d0 /dev/did/rdsk/d3 … |
成为磁盘组的拥有者。
# metaset -s setname -t |
指定磁盘组的名称。
获取磁盘组的拥有权
将驱动器添加到磁盘组。
使用完整的设备 ID 路径名称。
# metaset -s setname -a drivename |
将驱动器添加到磁盘组
共享驱动器的完整设备 ID 路径名称
将驱动器添加到磁盘组时,请勿使用低级别设备名称 (cNtXdY)。因为低级别设备名称是本地名称,并且在群集中不是唯一的,使用该名称可能使元集合不能切换。
检验磁盘组和驱动器的状态。
# metaset -s setname |
metaset 命令将驱动器 /dev/did/rdsk/d1 和 /dev/did/rdsk/d2 添加到磁盘组 dg-schost-1。
# metaset -s dg-schost-1 -a /dev/did/rdsk/d1 /dev/did/rdsk/d2 |
要为在元设备或卷中使用的驱动器进行重新分区,请转到如何对磁盘组内的驱动器进行重新分区。
否则,请转到如何创建 md.tab 文件以使用 md.tab 文件定义元设备或卷。
使用 metaset(1M) 命令可以对磁盘组内的驱动器进行重新分区,以便每个驱动器都有一小部分保留在盘片 7 中供 Solstice DiskSuite 或 Solaris Volume Manager 软件使用。每个驱动器的剩余空间放在分片 0 中。要更有效地使用驱动器,请使用该过程修改磁盘布局。如果为盘片 1 到 6 分配了空间,可以在设置 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷时使用这些盘片。
成为群集节点的超级用户。
使用 format 命令更改磁盘组中每个驱动器的磁盘分区。
在对驱动器进行重新分区时,必须满足以下条件以使用 metaset(1M) 命令对驱动器进行重新分区。
从柱面 0 开始创建分片 7,该分片的大小应足以保存状态数据库拷贝。请参见 Solstice DiskSuite 或 Solaris Volume Manager 管理指南来确定您的卷管理器软件版本的状态数据库拷贝的大小。
将第 7 片中的 Flag 字段设置为 wu(读-写,可卸载)。不要将其设置为只读。
不要让分片 7 覆盖驱动器中的任何其他分片。
有关详细信息,请参见 format(1M) 手册页。
使用 md.tab 文件定义元设备或卷。请转到如何创建 md.tab 文件。
在群集中的每个节点上创建一个 /etc/lvm/md.tab 文件。使用 md.tab 文件为所创建的磁盘组定义 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷。
如果使用的是本地元设备或卷,请确保本地元设备名称或卷名称不同于构成磁盘组的设备 ID 名称。例如,如果在磁盘组中使用了设备 ID 名称 /dev/did/dsk/d3,则请勿将名称 /dev/md/dsk/d3 用于本地元设备或卷。该要求不适用于共享元设备或卷,共享元设备或卷使用命名约定 /dev/md/setname/{r}dsk/d#。
成为群集节点的超级用户。
列出创建 md.tab 文件时要引用的 DID 映射。
使用 md.tab 文件中的完整设备 ID 路径名称替换低级别设备名称 (cN tXdY)。
# scdidadm -L |
在下面的示例中,输出的第一列是 DID 实例编号,第二列是完整路径(物理路径),第三列是完整的设备 ID 路径名称(伪路径)。
1 phys-schost-1:/dev/rdsk/c0t0d0 /dev/did/rdsk/d1 2 phys-schost-1:/dev/rdsk/c1t1d0 /dev/did/rdsk/d2 2 phys-schost-2:/dev/rdsk/c1t1d0 /dev/did/rdsk/d2 3 phys-schost-1:/dev/rdsk/c1t2d0 /dev/did/rdsk/d3 3 phys-schost-2:/dev/rdsk/c1t2d0 /dev/did/rdsk/d3 … |
创建一个 /etc/lvm/md.tab 文件并使用您的首选文本编辑器来手工编辑该文件。
如果驱动器包含要用于子镜像的现有数据,您必须在设置元设备或卷之前备份数据。然后将数据恢复到镜像上。
为了避免混淆群集环境中的本地元设备或卷,使用的命名方案应使每个本地元设备名称或卷名在整个群集内都唯一。例如,为节点 1 选择 d100-d199 之间的名称,而为节点 2 使用 d200-d299 之间的名称。
有关如何创建 md.tab 文件的详细信息,请参见 Solstice DiskSuite 或 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 |
以下示例使用 Solstice DiskSuite 术语。对于 Solaris Volume Manager,trans 元设备称为事务卷,元设备称为卷。另外,以下过程对两个卷管理器均有效。
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 文件中定义的 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷。
成为群集节点的超级用户。
确保 md.tab 文件位于 /etc/lvm 目录中。
确保您对将要在其中执行命令的节点上的磁盘组具有拥有权。
获取磁盘组的拥有权。
# scswitch -z setname -h node |
指定磁盘组的名称。
指定具有拥有权的节点
激活在 md.tab 文件中定义的磁盘组的元设备或卷。
# metainit -s setname -a |
指定磁盘组的名称。
激活 md.tab 文件中的所有元设备
为每个主设备和日志设备连接第二个子镜像 (submirror2)。
当激活 md.tab 文件中的元设备或卷时,仅连接主设备和日志设备的第一个子镜像 (submirror1),所以必须手动连接 submirror2。
# metattach mirror submirror2 |
如有必要,请从与驱动器连接的另一个节点运行 metainit(1M) 命令。该步骤对于群集对拓扑是必需的,因为在此类拓扑中,并非所有节点都能访问驱动器。
检查元设备或卷的状态。
# metastat -s setname |
有关更多信息,请参见 metastat(1M) 手册页。
在以下示例中,在 md.tab 文件中为磁盘组 dg-schost-1 定义的所有元设备均已激活。然后,主设备 dg-schost-1/d1 和日志设备 dg-schost-1/d4 的第二个子镜像也已激活。
# metainit -s dg-schost-1 -a # metattach dg-schost-1/d1 dg-schost-1/d3 # metattach dg-schost-1/d4 dg-schost-1/d6 |
如果群集包含正好配置了两个磁盘附件的磁盘组并且包含两个节点,请添加双串调解器。请转到配置双串调解器。
否则,请转到如何创建群集文件系统以创建群集文件系统。