Sun Cluster 软件安装指南(适用于 Solaris OS)

在群集中创建磁盘组

本节介绍如何为群集配置创建磁盘组。在 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 文件中定义卷。

如何创建 md.tab 文件

5. 初始化 md.tab 文件。

如何激活卷

Procedure如何创建磁盘集

请执行以下过程来创建磁盘集。


注 –

此过程提供了 Sun Cluster 命令的完整形式。此外,大多数命令还有简短格式。除了命令名称的形式以外,简写形式和完整形式的命令是相同的。有关各命令及其简写形式的列表,请参见《Sun Cluster 系统管理指南(适用于 Solaris OS)》中的附录 A “Sun Cluster 面向对象的命令”


  1. SPARC:(Solaris 9)确定在您创建新磁盘集后群集中包含的磁盘集数目是否会超过三个。

    • 如果群集中包含的磁盘组不超过三个,则跳到步骤 9

    • 如果群集包含四个或四个以上磁盘组,则继续执行步骤 2 以准备群集。无论是首次安装磁盘组还是向已完全配置的群集添加更多磁盘组,均必须执行此任务。

    • 如果群集在 Solaris 10 OS 上运行,则 Solaris Volume Manager 将自动进行必要的配置更改。跳到步骤 9

  2. 在群集的任何节点上,检查 /kernel/drv/md.conf 文件中的 md_nsets 变量的值。

  3. 如果群集中磁盘组的总数大于 md_nsets 的现有值减一,请将 md_nsets 的值增加到所需的值。

    磁盘组的最大许可数为 md_nsets 的配置值减一。md_nsets 可能的最大值为 32,因此可以创建的最大磁盘组数为 31。

  4. 确保 /kernel/drv/md.conf 文件在群集的每个节点上都完全相同。


    Caution – Caution –

    不按本指南操作可能会导致严重的 Solaris Volume Manager 错误,并且可能丢失数据。


  5. 如果更改了任一节点上的 md.conf 文件,请执行以下步骤以使这些更改生效。

    1. 在一个节点上成为超级用户。

    2. 从一个节点,关闭群集。


      phys-schost# cluster shutdown -g0 -y
      
    3. 重新引导群集的每个节点。

      • 在基于 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)”

  6. 在群集的每个节点上,运行 devfsadm(1M) 命令。

    您可以同时在群集的所有节点上运行此命令。

  7. 从群集中的一个节点更新全局设备名称空间。


    phys-schost# cldevice populate
    

    有关更多信息,请参见 cldevice(1CL) 手册页。

  8. 尝试创建任何磁盘集之前,先在每个节点上检验上述命令是否已完成处理过程。

    即使仅从一个节点运行,该命令也会以远程方式在所有的节点上执行。要确定该命令是否已完成处理过程,请在群集中的每个节点上运行以下命令。


    phys-schost# ps -ef | grep scgdevs
    
  9. 确保要创建的磁盘组符合以下要求之一。

    • 如果正好用两个磁盘串配置磁盘组,则磁盘组必须正好连接至两个节点并正好使用两个调解器主机。这些调解器主机必须是用于该磁盘组的两个主机。有关如何配置双串调解器的详细信息,请参见配置双串调解器

    • 如果为磁盘集配置了两个以上的磁盘串,则应确保任意两个磁盘串 S1 和 S2 上的驱动器数目之和都会超过第三个磁盘串 S3 上的驱动器数目。用一个公式来表示,该需求为 count(S1) + count(S2) > count(S3)。

  10. 确保有本地状态数据库的副本。

    有关说明,请参见如何创建状态数据库副本

  11. 成为将控制磁盘组的群集节点上的超级用户。

  12. 创建磁盘组。

    以下命令可创建磁盘集并将其注册为 Sun Cluster 设备组。


    phys-schost# metaset -s setname -a -h node1 node2
    
    -s setname

    指定磁盘集名称。

    -a

    添加(创建)磁盘集。

    -h node1

    指定将控制磁盘集的主节点的名称。

    node2

    指定将控制磁组集的辅助节点的名称


    注 –

    运行 metaset 命令配置群集上的 Solaris Volume Manager 设备组时,该命令缺省指定一个辅助节点。创建了设备组之后,您可以使用 clsetup 实用程序更改设备组中所需的辅助节点数目。有关如何更改 numsecondaries 属性的更多信息,请参阅《Sun Cluster 系统管理指南(适用于 Solaris OS)》中的“管理设备组”


  13. 如果要配置被复制的 Solstice DiskSuite 设备组或 Solaris Volume Manager 设备组,请设置该设备组的复制属性。


    phys-schost# cldevicegroup sync device-group-name
    

    有关数据复制的更多信息,请参见《Sun Cluster 系统管理指南(适用于 Solaris OS)》中的第 4  章 “数据复制方法”

  14. 检验新磁盘组的状态。


    phys-schost# metaset -s setname
    
  15. 根据需要设置设备组的属性。


    phys-schost# cldevicegroup set -p name=value devicegroup
    
    -p

    指定一个设备组属性。

    name

    指定属性的名称。

    value

    指定属性的值或设置。

    devicegroup

    指定设备组的名称。设备组名称与磁盘集名称相同。

    有关设备组属性的信息,请参见 cldevicegroup(1CL)


示例 4–6 创建磁盘组

以下命令将创建 dg-schost-1dg-schost-2 两个磁盘组,同时指定节点 phys-schost-1phys-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

接下来的操作

将驱动器添加至磁盘组。请转到将驱动器添加到磁盘集

将驱动器添加到磁盘集

将驱动器添加到磁盘集时,卷管理软件将按照以下原则对驱动器进行重新分区,以便将磁盘集的状态数据库放入驱动器。

Procedure如何将驱动器添加到磁盘集

开始之前

确保已创建磁盘集。有关说明,请参见如何创建磁盘集

  1. 成为超级用户。

  2. 列出 DID 映射。


    phys-schost# cldevice show | grep Device
    
    • 选择由将要控制或可能要控制磁盘组的群集节点共享的驱动器。

    • 向磁盘集添加驱动器时,请使用格式为 /dev/did/rdsk/dN 的完整 DID 设备名称。

    在下面的示例中,DID 设备 /dev/did/rdsk/d3 的条目表明 phys-schost-1phys-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
    …
  3. 成为磁盘组的拥有者。


    phys-schost# cldegivegroup switch -n node devicegroup
    
    -n node

    指定拥有设备组所有权的节点。

    devicegroup

    指定设备组名称,该名称与磁盘集名称相同。

  4. 将驱动器添加到磁盘组。

    使用完整的 DID 路径名称。


    phys-schost# metaset -s setname -a /dev/did/rdsk/dN
    
    -s setname

    指定磁盘集的名称,该名称与设备组名称相同。

    -a

    给磁盘集添加驱动器。


    注 –

    将驱动器添加到磁盘组时,请使用低级别设备名称 (cNtXdY)。因为低级别设备名称是本地名称,并且在群集中不是唯一的,使用该名称可能使元集合不能切换。


  5. 检验磁盘组和驱动器的状态。


    phys-schost# metaset -s setname
    

示例 4–7 将驱动器添加到磁盘组

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 文件定义元设备或卷。

Procedure如何对磁盘组内的驱动器进行重新分区

可使用 metaset(1M) 命令对磁盘集中的驱动器进行重新分区,以使每个驱动器都有一小部分被保留用于 Solaris Volume Manager 软件。在标为卷目录 (VTOC) 的设备中,使用的是分片 7。在标为 可扩展固件接口 (EFI) 的设备中,使用的是分片 6。每个驱动器上的其余空间则被置于分片 0 中。为了更有效地使用驱动器,请使用以下过程修改磁盘布局。如果将空间分配给 VTOC 分片 1 至 6 或 EFI 分片 1 至 5,则在设置 Solaris Volume Manager 卷时就可以使用这些分片。

  1. 成为超级用户。

  2. 使用 format 命令更改磁盘组中每个驱动器的磁盘分区。

    对驱动器进行重新分区时,必须满足以下条件以防止 metaset(1M) 命令对驱动器进行重新分区。

    • 创建分片 7(对于 VTOC)或分片 6(对于 EFI),该分片应从 0 柱面开始,大小应足以容纳一个状态数据库副本。请参见 Solaris Volume Manager 管理指南,确定您的卷管理器软件版本的状态数据库副本的大小。

    • 将目标分片中的 Flag 字段设置为 wu(可读写,可卸载)。不要将其设置为只读。

    • 不要让目标分片覆盖驱动器上的任何其他分片。

    有关详细信息,请参见 format(1M) 手册页。

接下来的操作

使用 md.tab 文件定义卷。请转到如何创建 md.tab 文件

Procedure如何创建 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#


  1. 成为超级用户。

  2. 列出创建 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
    …
  3. 创建一个 /etc/lvm/md.tab 文件并使用您的首选文本编辑器编辑该文件。


    注 –

    如果驱动器包含的现有数据要用于子镜像,则您必须在设置卷之前备份这些数据。然后将数据恢复到镜像上。


    为避免群集环境中不同节点上的本地卷之间可能产生混淆,请使用一种可以使每个本地卷名称在群集中保持唯一的命名方案。例如,为节点 1 选择 d100d199 之间的名称。为节点 2 选用 d200d299 之间的名称。

    有关如何创建 md.tab 文件的详细信息,请参见 Solaris Volume Manager 文档和 md.tab(4) 手册页。


示例 4–8 样例 md.tab 文件

以下样例 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 文件样例的结构如下。

  1. 第一行将设备 d0 定义为卷 d10d20 的镜像。-m 表示该设备为镜像设备。


    dg-schost-1/d0 -m dg-schost-1/d0 dg-schost-1/d20
  2. 第二行将卷 d10d0 的第一个子镜像)定义为单向条。


    dg-schost-1/d10 1 1 /dev/did/rdsk/d1s0
  3. 第三行将卷 d20d0 的第二个子镜像)定义为单向条。


    dg-schost-1/d20 1 1 /dev/did/rdsk/d2s0

接下来的操作

激活在 md.tab 文件中定义的卷。请转至如何激活卷

Procedure如何激活卷

请执行以下过程来激活 md.tab 文件中定义的 Solaris Volume Manager 卷。

  1. 成为超级用户。

  2. 确保 md.tab 文件位于 /etc/lvm 目录中。

  3. 确保您对将要在其中执行命令的节点上的磁盘组具有拥有权。

  4. 获取磁盘组的拥有权。


    phys-schost# cldevicegroup switch -n node devicegroup
    
    -n node

    指定拥有所有权的节点。

    devicegroup

    指定磁盘集名称。

  5. 激活在 md.tab 文件中定义的磁盘集的卷。


    phys-schost# metainit -s setname -a
    
    -s setname

    指定磁盘集名称。

    -a

    激活 md.tab 文件中的所有卷。

  6. 对群集中的每个磁盘集重复执行步骤 3步骤 5

    如有必要,请从与驱动器连接的另一个节点运行 metainit(1M) 命令。该步骤对于群集对拓扑是必需的,因为在此类拓扑中,并非所有节点都能访问驱动器。

  7. 检查卷的状态。


    phys-schost# metastat -s setname
    

    有关更多信息,请参见 metastat(1M) 手册页。

  8. (可选的)捕获磁盘分区信息,以供将来参考之用。


    phys-schost# prtvtoc /dev/rdsk/cNtXdYsZ > filename
    

    应将该文件存储在群集外部的某个位置。如果对磁盘配置进行了任何更改,请再次运行此命令以捕获更改后的配置信息。如果磁盘发生故障需要更换,则可以使用此信息来恢复磁盘分区配置。有关更多信息,请参见 prtvtoc(1M) 手册页。

  9. (可选的)对群集配置进行备份。

    对群集配置的归档备份有助于您更方便地恢复群集配置。

    有关更多信息,请参见《Sun Cluster 系统管理指南(适用于 Solaris OS)》中的“如何备份群集配置”


示例 4–9 激活 md.tab 文件中的卷

在以下示例中,md.tab 文件中为磁盘集 dg-schost-1 定义的所有卷均将被激活。


phys-schost# metainit -s dg-schost-1 -a

接下来的操作

如果群集包含正好配置了两个磁盘附件的磁盘组并且包含两个节点,请添加双串调解器。请转到配置双串调解器

否则,请转到如何创建群集文件系统以创建群集文件系统。