Sun Cluster 3.0 12/01 软件安装指南

安装和配置 Solstice DiskSuite 软件

开始之前,您需要获取以下信息。

下表列出了为 Sun Cluster 配置而安装和配置 Solstice DiskSuite 软件所要执行的任务。


注意:

如果您已使用 SunPlex Manager 安装 Solstice DiskSuite 软件,则"如何安装 Solstice DiskSuite 软件""如何创建元设备状态数据库复本"过程均已完成。


表 A-1 任务表:安装和配置 Solstice DiskSuite 软件

任务 

有关说明,请转到... 

规划 Solstice DiskSuite 配置的布局。 

"规划卷管理"

"Solstice DiskSuite 配置示例"

安装 Solstice DiskSuite 软件。 

"如何安装 Solstice DiskSuite 软件"

计算配置所需的元设备名称数和磁盘集数,并修改 /kernel/drv/md.conf 文件。

"如何设置元设备名称和磁盘集的数目"

在本地磁盘中创建元设备状态数据库复本。 

"如何创建元设备状态数据库复本"

可选)镜像根磁盘上的文件系统。

"镜像根磁盘"

使用 metaset 命令创建磁盘集。

"如何创建磁盘集"

将磁盘驱动器添加到磁盘集中。 

"如何向磁盘集添加驱动器"

为磁盘集中的驱动器重新分区,以便为第 1 至 6 片分配空间。 

"如何对磁盘集内的驱动器重新分区"

列出设备 ID 伪驱动程序映射并在 /etc/lvm/md.tab 文件中定义元设备。

"如何创建 md.tab 文件"

初始化 md.tab 文件。

"如何激活元设备"

对于双串配置,请配置调解器主机,检查调解器数据的状态并在必要时修正错误的调解器数据。 

"调解器概述"

"如何添加调解器主机"

"如何检查调解器数据的状态"

"如何修正错误的调解器数据"

配置群集。 

"配置群集"

Solstice DiskSuite 配置示例

下面的示例有助于解释在使用 Solstice DiskSuite 软件时,确定在每个磁盘集中放置多少磁盘这一过程。在该示例中,使用了三个存储设备,现有的应用程序在 NFS(两个文件系统,各为 5 千兆字节)和两个 ORACLE 数据库(一个 5 千兆字节,另一个 10 千兆字节)上运行。

下表显示用于确定样例配置中所需驱动程序数目的计算结果。 如果有三个存储设备,则可能需要 28 个驱动器,应在这三个存储设备之间尽可能均匀地分配这些驱动器。 注意,给 5 GB 文件系统额外提供 1 GB 的磁盘空间,因为所需的磁盘数是上舍入得出的。

表 A-2 确定配置所需的驱动器

使用 

数据 

所需的磁盘存储器 

所需的驱动器 

nfs1

5 GB 

3x2.1 GB 磁盘 * 2 (镜像) 

nfs2

5 GB 

3x2.1 GB 磁盘 * 2 (镜像) 

oracle1

5 GB 

3x2.1 GB 磁盘 * 2 (镜像) 

oracle2

10 GB 

5x2.1 GB 磁盘 * 2 (镜像) 

10 

下表显示在两个磁盘集和四个数据服务之间分配驱动器。

表 A-3 磁盘集的划分

磁盘集 

数据服务 

磁盘 

存储设备 1 

存储设备 2 

存储设备 3 

dg-schost-1

nfs1/oracle1

12 

dg-schost-2

nfs2/oracle2

16 

最初,每个存储设备上的四个磁盘(总共 12 个磁盘)分配给 dg-schost-1,而每个存储设备上的五个或六个磁盘(总共 16 个磁盘)分配给 dg-schost-2

两个磁盘集均未分配任何热备用磁盘。 每个磁盘集的每个存储设备至少有一个热备用磁盘,就可以使一个驱动器成为热备用的(恢复完全双向镜像)。

如何安装 Solstice DiskSuite 软件


注意:

如果已使用 SunPlex Manager 安装 Solstice DiskSuite 软件,则不要执行该过程。而应转到"镜像根磁盘"


对群集中的每个节点执行该任务。

  1. 成为群集节点的超级用户。

  2. 如果从 CD-ROM 安装,请将 Solaris 8 Software 2 of 2 CD-ROM 插入节点的 CD-ROM 驱动器。

    该步骤假定卷管理守护程序 vold(1M) 正在运行并且配置成管理 CD-ROM 设备。

  3. 安装 Solstice DiskSuite 软件包。


    注意:

    如果需要安装 Solstice DiskSuite 软件修补程序,则在安装 Solstice DiskSuite 软件之后不要重新引导。


    以下面示例中显示的顺序安装软件包。


    # cd /cdrom/sol_8_sparc_2/Solaris_8/EA/products/DiskSuite_4.2.1/sparc/Packages
    # pkgadd -d . SUNWmdr SUNWmdu [SUNWmdx] optional-pkgs
    

    SUNWmdrSUNWmdu 软件包是所有 Solstice DiskSuite 安装所必需的。SUNWmdx 软件包也是 64 位 Solstice DiskSuite 安装所必需的。

    有关可选软件包的信息,请参阅 Solstice DiskSuite 安装文档。

  4. 如果从 CD-ROM 安装,请弹出 CD-ROM。

  5. 安装任何 Solstice DiskSuite 修补程序。

    有关修补程序的位置和安装说明,请参阅《Sun Cluster 3.0 12/01 发行说明》。

  6. 对群集中的其他节点重复执行步骤 1步骤 5

  7. 从群集中的一个节点上,手动为 Solstice DiskSuite 输入全局设备名称空间。


    # scgdevs
    

  8. 设置群集中的元设备名称和磁盘集的期望数目。

    转到"如何设置元设备名称和磁盘集的数目"

如何设置元设备名称和磁盘集的数目


注意:

如果已使用 SunPlex Manager 安装 Solstice DiskSuite 软件,则不要执行该过程。而应转到"镜像根磁盘"


此过程说明如何计算配置所需的元设备名称的数量,以及如何修改 /kernel/drv/md.conf 文件。


提示:

每个磁盘集的元设备名称的缺省数目是 128,但许多配置需要的数目要大于该缺省数目。 着手配置前请增大这个数目,以便节省今后管理的时间。


  1. 计算群集中任一磁盘集所需的元设备名称的最大数目。

    每个磁盘集最多可有 8192 个元设备名称。 您需要在 nmd 字段中提供这个计算值。

    1. 计算每个磁盘集所需的元设备名称的数量。

      如果使用本地元设备,需确保每个本地元设备名称在整个群集内都唯一,不与该群集内的任何设备 ID (DID) 同名。


      提示:

      选择专用于 DID 名称的数值范围,以及供每个节点专用于其本地元设备名称的数值范围。 例如,DID 可以使用范围在 d1d1000 之间的名称;节点 1 上的本地元设备可以使用范围在 d1100d1199 之间的名称;而节点 2 上的本地元设备可以使用范围在 d1200d1299 之间的名称,依此类推。


    2. 确定要在任何磁盘集中使用的元设备名称的最大数目。

      要设置的元设备名称的数量取决于元设备名称的,而不是实际数量。例如,如果元设备名称范围在 d950d1000 之间,则 Solstice DiskSuite 软件需要 1000 个名称,而不是 50 个。

  2. 群集中的每个磁盘集最多可以有 8192 个元设备名称。

    计算群集中磁盘集的总预期数,然后为专用磁盘管理添加一个磁盘集。 群集最多可以有 32 个磁盘集。 缺省的磁盘集数为 4 个。您需要在 md_nsets 字段中提供这个计算值。

  3. 在每个节点上编辑 /kernel/drv/md.conf 文件。


    小心:小心:

    所有群集节点(或群集对拓扑中的群集对)必须具有完全相同的 /kernel/drv/md.conf 文件,而不管每个节点向多少个磁盘集提供服务。不按本指南操作可能会导致严重的 Solstice DiskSuite 错误并且可能丢失数据。


    1. 如果计算出的元设备名称的数量超过了 128 个,则将 nmd 字段设置为在步骤 1中计算出的数量。

    2. md_nsets 字段设置为在步骤 2中计算出的数量。

  4. 在每个节点上,执行重配置后的重新引导。


    # touch /reconfigure
    # shutdown -g0 -y -i6
    

    在执行了重配置后的重新引导之后,对 /kernel/drv/md.conf 文件所作的更改方可生效。

  5. 创建本地复本。

    转到"如何创建元设备状态数据库复本"

如何创建元设备状态数据库复本


注意:

如果已使用 SunPlex Manager 安装 Solstice DiskSuite 软件,则不要执行此过程。而应转到"镜像根磁盘"


对群集中的每个节点执行该过程。

  1. 成为群集节点的超级用户。

  2. 使用 metadb 命令在一个或多个本地磁盘上为每个群集节点创建复本。

    有关详细信息,请参阅 metadb(1M) 手册页和 Solstice DiskSuite 文档。


    提示:

    要为元设备状态数据提供保护(这是运行 Solstice DiskSuite 软件所必需的),则至少为每个节点创建三个复本。此外,将复本放在多个磁盘上可在其中的一个磁盘出现故障时免遭损失。


  3. 检验复本。


    # metadb
    

  4. 是否打算镜像根磁盘上的文件系统?

示例 - 创建元设备状态数据库复本

下面的示例显示了三个元设备状态数据库复本,每个都创建于不同的磁盘。


# metadb -af c0t0d0s7 c0t1d0s7 c1t0d0s7
# metadb
flags            first blk      block count
    a       u       16            1034         /dev/dsk/c0t0d0s7
    a       u       1050          1034         /dev/dsk/c0t1d0s7
    a       u       2084          1034         /dev/dsk/c1t0d0s7

镜像根磁盘

镜像根磁盘可防止因系统磁盘故障而关闭群集节点。 四种类型的文件系统可驻留在根磁盘中。 文件系统类型的镜像方法各不相同。

使用下列过程镜像各种类型的文件系统。


注意:

这些镜像过程中的某些步骤可能会导致类似于下面的错误消息,这种消息不会造成损害,因而可以忽略。


metainit: dg-schost-1: d1s0: not a metadevice



小心:小心:

对于本地磁盘镜像,在指定磁盘名称时不要将 /dev/global 用作路径。如果为非群集文件系统的系统指定了该路径,系统将无法引导。


如何镜像根 (/) 文件系统

使用此过程来镜像根 (/) 文件系统。

  1. 成为群集中一个节点上的超级用户。

  2. 使用 metainit(1M) 命令将根盘片置于一个单盘片(单向)并置中。

    使用该根盘片的物理磁盘名称 (cNtXdYsZ)。


    # metainit -f submirror1 1 1 root-disk-slice
    

  3. 创建第二个并置。


    # metainit -f submirror2 1 1 submirror-disk-slice
    

  4. 创建具有一个子镜像的单向镜像。


    # metainit mirror -m submirror1
    


    注意:

    镜像的元设备名称在整个群集中必须是唯一的。


  5. 运行 metaroot(1M) 命令。

    此命令编辑 /etc/vfstab/etc/system 文件,以便可以通过元设备上的根 (/) 文件系统来引导系统。


    # metaroot mirror
    

  6. 运行 lockfs(1M) 命令。

    该命令清理日志中的所有事务,并将这些事务写入所有已安装的 UFS 文件系统上的主文件系统中。


    # lockfs -fa
    

  7. 从节点中清空任何资源组或设备组。


    # scswitch -S -h node
    
    -S

    清空所有资源组和设备组

    -h node

    指定要从中清空资源或设备组的节点的名称

  8. 重新引导该节点。


    # shutdown -g0 -y -i6
    

  9. 使用 metattach(1M) 命令将第二个子镜像连接到镜像。


    # metattach mirror submirror2
    

  10. 如果将用来镜像根磁盘的磁盘物理连接到多个节点(多端口连接),请启用用来镜像根磁盘的磁盘的原始磁盘设备组的 localonly 特性。

    如果引导设备与多个节点连接,则必须启用 localonly 特性以防止意外地将节点与其引导设备隔开。

    1. 如果需要,可以使用 scdidadm -L 命令来显示原始磁盘设备组的完整设备 ID (DID) 伪驱动程序名称。

      在下面的示例中,原始磁盘设备组名称 dsk/d2 是输出的第三列(即完整的 DID 伪驱动程序名称)的一部分。


      # scdidadm -L
      ...
      1         phys-schost-3:/dev/rdsk/c1t1d0     /dev/did/rdsk/d2
      # scconf -c -D name=dsk/d2,localonly=true
      

      有关 localonly 特性的详细信息,请参阅 scconf_dg_rawdisk(1M) 手册页。

    2. 查看原始磁盘设备组的节点列表。

      输出类似于以下内容,其中 N 是 DID 号。


      # scconf -pvv | grep dsk/dN
      Device group name:                                 dsk/dN
      ...
        (dsk/dN) Device group node list:                 phys-schost-1, phys-schost-3
      ...

    3. 节点列表是否包含多个节点名称?

    4. 从原始磁盘设备组的节点列表中删除所有节点,其根磁盘已镜像的节点除外

      仅在节点列表中保留其根磁盘已镜像的那个节点。


      # scconf -r -D name=dsk/dN,nodelist=node
      
      -D name=dsk/dN

      给原始磁盘设备组指定群集范围内唯一的名称

      nodelist=node

      指定要从节点列表中删除的节点的名称

    5. 使用 scconf(1M) 命令来启用 localonly 特性。

      启用了 localonly 特性后,该原始磁盘设备组就由其节点列表中的节点专用。如果引导设备与多个节点连接,则启用该特性可以防止意外地将节点与其引导设备隔开。


      # scconf -c -D name=rawdisk-groupname,localonly=true
      
      -D name=rawdisk-groupname

      指定原始磁盘设备组的名称

  11. 记录备用引导路径以供将来使用。


    # ls -l /dev/rdsk/root-disk-slice
    

  12. 在群集的其余每个节点上重复执行步骤 1步骤 11

    确保镜像的每个元设备名称在整个群集中是唯一的。

  13. 是否要镜像全局名称空间 /global/.devices/node@nodeid

  14. 是否打算镜像无法卸装的文件系统?

  15. 是否打算镜像用户定义的文件系统?

示例 - 镜像根 (/) 文件系统

下面的示例显示了在节点 phys-schost-1 上创建镜像 d0 的过程,该镜像由分区 c0t0d0s0 上的子镜像 d10 和分区 c2t2d0s0 上的子镜像 d20 组成。磁盘 c2t2d0 是一个多端口磁盘,所以启用了 localonly 特性。


(创建镜像)
# metainit -f d10 1 1 c0t0d0s0
d11: Concat/Stripe is setup
# metainit -f d20 1 1 c2t2d0s0
d12: Concat/Stripe is setup
# metainit d0 -m d10
d10: Mirror is setup
# metaroot d0
# lockfs -fa重新引导节点)
# scswitch -S -h phys-schost-1
# shutdown -g0 -y -i6连接第二个子镜像)
# metattach d0 d20
d0: Submirror d20 is attached
 
(显示镜像磁盘的原始磁盘设备组的节点列表)
# scconf -pvv | grep dsk/d2
Device group name:                                 dsk/d2
...
  (dsk/d2) Device group node list:                 phys-schost-1, phys-schost-3
...
 
(从原始磁盘设备组的节点列表中删除 phys-schost-3)
# scconf -r -D name=dsk/d2,nodelist=phys-schost-3
 
(启用已镜像磁盘的原始磁盘设备组的 localonly 特性)
# scconf -c -D name=dsk/d2,localonly=true记录备用引导路径)
# ls -l /dev/rdsk/c2t2d0s0
lrwxrwxrwx  1 root     root          57 Apr 25 20:11 /dev/rdsk/c2t2d0s0 -> 
../../devices/node@1/pci@1f,0/pci@1/scsi@3,1/disk@2,0:a,raw

如何镜像全局名称空间

使用此过程来镜像全局名称空间 /global/.devices/node@nodeid

  1. 成为群集中一个节点上的超级用户。

  2. 将全局名称空间盘片置于单盘片(单向)并置中。

    使用磁盘片的物理磁盘名称 (cNtXdYsZ)。


    # metainit -f submirror1 1 1 diskslice
    

  3. 创建第二个并置。


    # metainit -f submirror2 1 1 submirror-diskslice
    

  4. 创建具有一个子镜像的单向镜像。


    # metainit mirror -m submirror1
    


    注意:

    镜像的元设备名称在整个群集中必须是唯一的。


  5. 将第二个子镜像连接到镜像中。

    这一连接操作会启动子镜像的同步。


    # metattach mirror submirror2
    

  6. 编辑 /global/.devices/node@nodeid 文件系统的 /etc/vfstab 文件项。

    用镜像名称替换 device to mountdevice to fsck 列中的名称。


    # vi /etc/vfstab
    #device        device          mount           FS      fsck    mount   mount
    #to mount      to fsck         point           type    pass    at boot options
    #
    /dev/md/dsk/mirror /dev/md/rdsk/mirror /global/.devices/node@nodeid ufs 2 no global

  7. 在群集的其余每个节点上重复执行步骤 1步骤 6

    确保镜像的每个元设备名称在整个群集中是唯一的。

  8. 等待在步骤 5中启动的镜像同步完成。

    使用 metastat(1M) 命令查看镜像状态。


    # metastat mirror
    

  9. 如果将用来镜像全局名称空间的磁盘物理连接到多个节点(多端口连接),请启用用来镜像全局名称空间的磁盘的原始磁盘设备组的 localonly 特性。

    如果引导设备与多个节点连接,则必须启用 localonly 特性以防止意外地将节点与其引导设备隔开。

    1. 如果需要,可以使用 scdidadm -L 命令来显示原始磁盘设备组的完整设备 ID (DID) 伪驱动程序名称。

      在下面的示例中,原始磁盘设备组名称 dsk/d2 是输出的第三列(即完整的 DID 伪驱动程序名称)的一部分。


      # scdidadm -L
      ...
      1         phys-schost-3:/dev/rdsk/c1t1d0     /dev/did/rdsk/d2
      # scconf -c -D name=dsk/d2,localonly=true
      

      有关 localonly 特性的详细信息,请参阅 scconf_dg_rawdisk(1M) 手册页。

    2. 查看原始磁盘设备组的节点列表。

      输出类似于以下内容,其中 N 是 DID 号。


      # scconf -pvv | grep dsk/dN
      Device group name:                                 dsk/dN
      ...
        (dsk/dN) Device group node list:                 phys-schost-1, phys-schost-3
      ...

    3. 节点列表是否包含多个节点名称?

    4. 从原始磁盘设备组的节点列表中删除所有节点,其根磁盘已镜像的节点除外

      仅在节点列表中保留其根磁盘已镜像的那个节点。


      # scconf -r -D name=dsk/dN,nodelist=node
      
      -D name=dsk/dN

      给原始磁盘设备组指定群集范围内唯一的名称

      nodelist=node

      指定要从节点列表中删除的节点的名称

    5. 使用 scconf(1M) 命令来启用 localonly 特性。

      启用了 localonly 特性后,该原始磁盘设备组就由其节点列表中的节点专用。如果引导设备与多个节点连接,则启用该特性可以防止意外地将节点与其引导设备隔开。


      # scconf -c -D name=rawdisk-groupname,localonly=true
      
      -D name=rawdisk-groupname

      指定原始磁盘设备组的名称

  10. 是否打算镜像无法卸装的文件系统?

  11. 是否打算镜像用户定义的文件系统?

示例 - 镜像全局名称空间

下面的示例显示了创建镜像 d101 的过程,该镜像由分区 c0t0d0s3 上的子镜像 d111 和分区 c2t2d0s3 上的子镜像 d121 组成。/global/.devices/node@1/etc/vfstab 文件项被更新为使用镜像名称 d101。磁盘 c2t2d0 是一个多端口磁盘,所以启用了 localonly 特性。


(创建镜像)
# metainit -f d111 1 1 c0t0d0s3
d111: Concat/Stripe is setup
# metainit -f d121 1 1 c2t2d0s3
d121: Concat/Stripe is setup
# metainit d101 -m d111
d101: Mirror is setup
# metattach d101 d121
d101: Submirror d121 is attached
 
(编辑 /etc/vfstab 文件)
# vi /etc/vfstab
#device        device          mount           FS      fsck    mount   mount
#to mount      to fsck         point           type    pass    at boot options
#
/dev/md/dsk/d101 /dev/md/rdsk/d101 /global/.devices/node@1 ufs 2 no global
 
(查看同步状态)
# metastat d101
d101: Mirror
      Submirror 0: d111
         State: Okay
      Submirror 1: d121
         State: Resyncing
      Resync in progress: 15 % done
...
 
(检验已镜像磁盘的原始磁盘设备组的 DID 名称)
# scdidadm -L
...
1         phys-schost-3:/dev/rdsk/c2t2d0     /dev/did/rdsk/d2
 
(显示镜像磁盘的原始磁盘设备组的节点列表)
# scconf -pvv | grep dsk/d2
Device group name:                                 dsk/d2
...
  (dsk/d2) Device group node list:                 phys-schost-1, phys-schost-3
...
 
(从原始磁盘设备组的节点列表中删除 phys-schost-3)
# scconf -r -D name=dsk/d2,nodelist=phys-schost-3
 
(启用已镜像磁盘的原始磁盘设备组的 localonly 特性)
# scconf -c -D name=dsk/d2,localonly=true

如何镜像不能卸载的文件系统

使用此过程来镜像在系统正常使用期间无法卸载的文件系统,如 /usr/optswap

  1. 成为群集中一个节点上的超级用户。

  2. 将无法卸载的文件系统驻留所在的盘片置于单盘片(单向)并置中。

    使用磁盘片的物理磁盘名称 (cNtXdYsZ)。


    # metainit -f submirror1 1 1 diskslice
    

  3. 创建第二个并置。


    # metainit -f submirror2 1 1 submirror-diskslice
    

  4. 创建具有一个子镜像的单向镜像。


    # metainit mirror -m submirror1
    


    注意:

    镜像的元设备名称在整个群集中必是唯一的。


  5. 对要镜像的每个无法卸载的文件系统重复执行步骤 1步骤 4

  6. 在每个节点上,为已镜像的每个无法卸装的文件系统编辑 /etc/vfstab 文件项。

    用镜像名称替换 device to mountdevice to fsck 列中的名称。


    # vi /etc/vfstab
    #device        device          mount           FS      fsck    mount   mount
    #to mount      to fsck         point           type    pass    at boot options
    #
    /dev/md/dsk/mirror /dev/md/rdsk/mirror /filesystem  ufs     2       no      global

  7. 从节点中清空任何资源组或设备组。


    # scswitch -S -h node
    
    -S

    清空所有资源组和设备组

    -h node

    指定要从中清空资源或设备组的节点的名称

  8. 重新引导该节点。


    # shutdown -g0 -y -i6
    

  9. 将第二个子镜像连接到每个镜像。

    这一连接操作会启动子镜像的同步。


    # metattach mirror submirror2
    

  10. 等待在步骤 9中启动的镜像同步完成。

    使用 metastat(1M) 命令查看镜像状态。


    # metastat mirror
    

  11. 如果将用来镜像无法卸载的文件系统的磁盘物理连接到多个节点(多端口连接),请启用用来镜像无法卸装的文件系统的磁盘的原始磁盘设备组的 localonly 特性。

    如果引导设备与多个节点连接,则必须启用 localonly 特性以防止意外地将节点与其引导设备隔开。

    1. 如果需要,可以使用 scdidadm -L 命令来显示原始磁盘设备组的完整设备 ID (DID) 伪驱动程序名称。

      在下面的示例中,原始磁盘设备组名称 dsk/d2 是输出的第三列(即完整的 DID 伪驱动程序名称)的一部分。


      # scdidadm -L
      ...
      1            phys-schost-3:/dev/rdsk/c1t1d0    /dev/did/rdsk/d2
      # scconf -c -D name=dsk/d2,localonly=true
      

      有关 localonly 特性的详细信息,请参阅 scconf_dg_rawdisk(1M) 手册页。

    2. 查看原始磁盘设备组的节点列表。

      输出类似于以下内容,其中 N 是 DID 号。


      # scconf -pvv | grep dsk/dN
      Device group name:                                 dsk/dN
      ...
        (dsk/dN) Device group node list:                 phys-schost-1, phys-schost-3
      ...

    3. 节点列表是否包含多个节点名称?

    4. 从原始磁盘设备组的节点列表中删除所有节点,其根磁盘已镜像的节点除外

      仅在节点列表中保留其根磁盘已镜像的那个节点。


      # scconf -r -D name=dsk/dN,nodelist=node
      
      -D name=dsk/dN

      给原始磁盘设备组指定群集范围内唯一的名称

      nodelist=node

      指定要从节点列表中删除的节点的名称

    5. 使用 scconf(1M) 命令来启用 localonly 特性。

      启用了 localonly 特性后,该原始磁盘设备组就由其节点列表中的节点专用。如果引导设备与多个节点连接,则启用该特性可以防止意外地将节点与其引导设备隔开。


      # scconf -c -D name=rawdisk-groupname,localonly=true
      
      -D name=rawdisk-groupname

      指定原始磁盘设备组的名称

  12. 是否打算镜像用户定义的文件系统?

示例 - 镜像无法卸载的文件系统

下面的示例显示了在节点 phys-schost-1 上创建镜像 d1来镜像驻留在 c0t0d0s1 上的 /usr 的过程。镜像 d1 由分区 c0t0d0s1 上的子镜像 d11 和分区 c2t2d0s1 上的子镜像 d21 组成。/usr/etc/vfstab 文件项被更新为使用镜像名称 d1。磁盘 c2t2d0 是一个多端口磁盘,所以启用了 localonly 特性。


(创建镜像)
# metainit -f d11 1 1 c0t0d0s1
d11: Concat/Stripe is setup
# metainit -f d21 1 1 c2t2d0s1
d21: Concat/Stripe is setup
# metainit d1 -m d11
d1: Mirror is setup
 
(编辑 /etc/vfstab 文件)
# vi /etc/vfstab
#device        device          mount           FS      fsck    mount   mount
#to mount      to fsck         point           type    pass    at boot options
#
/dev/md/dsk/d1 /dev/md/rdsk/d1 /usr            ufs     2       no      global
 
(重新引导节点)
# scswitch -S -h phys-schost-1
# shutdown -g0 -y -i6连接第二个子镜像)
# metattach d1 d21
d1: Submirror d21 is attached
 
(查看同步状态)
# metastat d1
d1: Mirror
      Submirror 0: d11
         State: Okay
      Submirror 1: d21
         State: Resyncing
      Resync in progress: 15 % done
...
 
(检验已镜像磁盘的原始磁盘设备组的 DID 名称)
# scdidadm -L
...
1         phys-schost-3:/dev/rdsk/c2t2d0     /dev/did/rdsk/d2
 
(显示镜像磁盘的原始磁盘设备组的节点列表)
# scconf -pvv | grep dsk/d2
Device group name:                                 dsk/d2
...
  (dsk/d2) Device group node list:                 phys-schost-1, phys-schost-3
...
 
(从原始磁盘设备组的节点列表中删除 phys-schost-3)
# scconf -r -D name=dsk/d2,nodelist=phys-schost-3
 
(启用已镜像磁盘的原始磁盘设备组的 localonly 特性)
# scconf -c -D name=dsk/d2,localonly=true

如何镜像用户定义的文件系统

使用此过程镜像用户定义的文件系统。 在此过程中,不需要重新引导节点。

  1. 成为群集中一个节点上的超级用户。

  2. 将用户定义的文件系统所驻留的盘片置于单盘片(单向)并置中。

    使用磁盘片的物理磁盘名称 (cNtXdYsZ)。


    # metainit -f submirror1 1 1 diskslice
    

  3. 创建第二个并置。


    # metainit -f submirror2 1 1 submirror-diskslice
    

  4. 创建具有一个子镜像的单向镜像。


    # metainit mirror -m submirror1
    


    注意:

    镜像的元设备名称在整个群集中必是唯一的。


  5. 对要镜像的每个用户定义的文件系统重复执行步骤 1步骤 4

  6. 在每个节点中,为已镜像的每个用户定义的文件系统编辑 /etc/vfstab 文件项。

    用镜像名称替换 device to mountdevice to fsck 列中的名称。


    # vi /etc/vfstab
    #device        device          mount           FS      fsck    mount   mount
    #to mount      to fsck         point           type    pass    at boot options
    #
    /dev/md/dsk/mirror /dev/md/rdsk/mirror /filesystem  ufs     2       no      global

  7. 将第二个子镜像连接到镜像中。

    这一连接操作会启动子镜像的同步。


    # metattach mirror submirror2
    

  8. 等待在步骤 7中启动的镜像同步完成。

    使用 metastat(1M) 命令查看镜像状态。


    # metastat mirror
    

  9. 如果将用来镜像用户定义的文件系统的磁盘物理连接到多个节点(多端口连接),则启用用来镜像用户定义的文件系统的磁盘的原始磁盘设备组的 localonly 特性。

    如果引导设备与多个节点连接,则必须启用 localonly 特性以防止意外地将节点与其引导设备隔开。

    1. 如果需要,可以使用 scdidadm -L 命令来显示原始磁盘设备组的完整设备 ID (DID) 伪驱动程序名称。

      在下面的示例中,原始磁盘设备组名称 dsk/d4 是输出的第三列(即完整的 DID 伪驱动程序名称)的一部分。


      # scdidadm -L
      ...
      1         phys-schost-3:/dev/rdsk/c1t1d0     /dev/did/rdsk/d2
      # scconf -c -D name=dsk/d2,localonly=true
      

      有关 localonly 特性的详细信息,请参阅 scconf_dg_rawdisk(1M) 手册页。

    2. 查看原始磁盘设备组的节点列表。

      输出类似于以下内容,其中 N 是 DID 号。


      # scconf -pvv | grep dsk/dN
      Device group name:                                 dsk/dN
      ...
        (dsk/dN) Device group node list:                 phys-schost-1, phys-schost-3
      ...

    3. 节点列表是否包含多个节点名称?

    4. 从原始磁盘设备组的节点列表中删除所有节点,其根磁盘已镜像的节点除外

      仅在节点列表中保留其根磁盘已镜像的那个节点。


      # scconf -r -D name=dsk/dN,nodelist=node
      
      -D name=dsk/dN

      给原始磁盘设备组指定群集范围内唯一的名称

      nodelist=node

      指定要从节点列表中删除的节点的名称

    5. 使用 scconf(1M) 命令来启用 localonly 特性。

      启用了 localonly 特性后,该原始磁盘设备组就由其节点列表中的节点专用。如果引导设备与多个节点连接,则启用该特性可以防止意外地将节点与其引导设备隔开。


      # scconf -c -D name=rawdisk-groupname,localonly=true
      
      -D name=rawdisk-groupname

      指定原始磁盘设备组的名称

  10. 创建磁盘集。

    转到"如何创建磁盘集"

示例 - 镜像用户定义的文件系统

下面的示例显示了创建镜像 d4 以镜像驻留在 c0t0d0s4 上的 /home 的过程。镜像 d4 由分区 c0t0d0s4 上的子镜像 d14 和分区 c2t2d0s4 上的子镜像 d24 组成。/home/etc/vfstab 文件项被更新为使用镜像名称 d4。磁盘 c2t2d0 是一个多端口磁盘,所以启用了 localonly 特性。


(创建镜像)
# metainit -f d14 1 1 c0t0d0s4
d14: Concat/Stripe is setup
# metainit -f d24 1 1 c2t2d0s4
d24: Concat/Stripe is setup
# metainit d4 -m d14
d4: Mirror is setup
 
(编辑 /etc/vfstab 文件)
# vi /etc/vfstab
#device        device          mount           FS      fsck    mount   mount
#to mount      to fsck         point           type    pass    at boot options
#
/dev/md/dsk/d4 /dev/md/rdsk/d4 /home           ufs     2       no      global
 
(连接第二个子镜像)
# metattach d4 d24
d4: Submirror d24 is attached
 
(查看同步状态)
# metastat d4
d4: Mirror
      Submirror 0: d14
         State: Okay
      Submirror 1: d24
         State: Resyncing
      Resync in progress: 15 % done
...
 
(检验已镜像磁盘的原始磁盘设备组的 DID 名称)
# scdidadm -L
...
1         phys-schost-3:/dev/rdsk/c2t2d0     /dev/did/rdsk/d2
 
(显示镜像磁盘的原始磁盘设备组的节点列表)
# scconf -pvv | grep dsk/d2
Device group name:                                 dsk/d2
...
  (dsk/d2) Device group node list:                 phys-schost-1, phys-schost-3
...
 
(从原始磁盘设备组的节点列表中删除 phys-schost-3)
# scconf -r -D name=dsk/d2,nodelist=phys-schost-3
 
(启用已镜像磁盘的原始磁盘设备组的 localonly 特性)
# scconf -c -D name=dsk/d2,localonly=true

如何创建磁盘集

为每个创建的磁盘集执行此过程。


注意:

如果已使用 SunPlex Manager 安装 Solstice DiskSuite,则可能已经存在一至三个磁盘集。有关由 SunPlex Manager 创建的元集的信息,请参阅"使用 SunPlex Manager 安装 Sun Cluster 软件"


  1. 确保您打算创建的磁盘集符合以下要求之一。

    • 如果正好用两个磁盘串来进行配置,则磁盘集必须正好与两个节点连接并且正好使用两个调解器主机,这两个主机必须是用于该磁盘集那两个主机。 有关如何设置调解器的详细信息,请参阅"调解器概述"

    • 如果用两个以上的磁盘串来进行配置,则确保对于任何两个磁盘串 S1 和 S2,这些串的磁盘数总和超出第三个串 S3 的磁盘数目。 如果用公式表示,则该要求为 count(S1) + count(S2) > count(S3)。

  2. 确保 root 是组 14 的一个成员。


    # vi /etc/group
    ...
    sysadmin::14:root
    ...

  3. 确保有本地元设备状态数据库的复本。

    有关说明,请参阅"如何创建元设备状态数据库复本"

  4. 成为将主控磁盘集的群集节点的超级用户。

  5. 创建磁盘集。

    该命令还将该磁盘集注册为 Sun Cluster 磁盘设备组。


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

    指定磁盘集名称

    -a

    添加(创建)磁盘集

    -h node1

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

    node2

    指定将主控磁盘集的辅助节点的名称

  6. 检验新磁盘集的状态。


    # metaset -s setname
    

  7. 将驱动器添加到磁盘集内。

    转到"向磁盘集添加驱动器"

示例 - 创建磁盘集

下面的命令创建两个磁盘集:dg-schost-1dg-schost-2;此处的节点 phys-schost-1phys-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

向磁盘集添加驱动器

将磁盘驱动器添加到磁盘集时,Solstice DiskSuite 按照以下方法对它进行重新分区,以便磁盘集的元设备状态数据库可以存放到该驱动器上。

如何向磁盘集添加驱动器
  1. 成为节点的超级用户。

  2. 确保已创建磁盘集。

    有关说明,请参阅"如何创建磁盘集"

  3. 列出设备 ID (DID) 映射。


    # scdidadm -L
    

    • 选择将主控或可能主控磁盘集的群集节点共享的驱动器。

    • 为磁盘集添加驱动器时,请使用完整的 DID 伪驱动程序名称。

    输出的第一列是 DID 实例编号,第二列是完整路径(物理路径),第三列是完整的 DID 伪驱动程序名称(伪路径)。 对于相同的 DID 实例编号,共享驱动器具有多个项。

    在下面的示例中,DID 实例编号为 2 的项指示一个由 phys-schost-1phys-schost-2 共享的驱动器,完整的 DID 名称为 /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
    ...

  4. 获取磁盘集的所有权。


    # metaset -s setname -t
    
    -s setname

    指定磁盘集名称

    -t

    获取磁盘集的所有权

  5. 将驱动器添加到磁盘集中。

    使用完整的 DID 伪驱动程序名称。


    # metaset -s setname -a DIDname
    
    -a

    将磁盘驱动器添加到磁盘集

    DIDname

    共享磁盘的设备 ID (DID) 名称


    注意:

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


  6. 检验磁盘集和驱动器的状态。


    # metaset -s setname
    

  7. 是否打算对驱动器进行重新分区以便在元设备中使用?

示例 - 向磁盘集添加驱动器

metaset 命令将磁盘驱动器 /dev/did/dsk/d1/dev/did/dsk/d2 添加到磁盘集 dg-schost-1


# metaset -s dg-schost-1 -a /dev/did/dsk/d1 /dev/did/dsk/d2

如何对磁盘集内的驱动器重新分区

使用 metaset(1M) 命令可以对磁盘集内的驱动器重新分区,以便每个驱动器都有一小部分保留在第 7 片中供 Solstice DiskSuite 软件使用。每个驱动器的剩余空间放在第 0 片中。 为了更有效地利用磁盘,请使用此过程来修改磁盘布局。如果为第 1 至 6 片分配了空间,则可在设置元设备时使用这些片。

  1. 成为群集节点的超级用户。

  2. 使用 format(1M) 命令来更改磁盘集中每个驱动器的磁盘分区。

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

    • 创建分区 7,该分区以柱面 0 为起点,其容量足以容纳一个状态数据库复本(大约 2 兆字节)。

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

    • 不允许第 7 片重叠磁盘中的任何其他片。

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

  3. 使用 md.tab 文件定义元设备。

    转到"如何创建 md.tab 文件"

如何创建 md.tab 文件

在群集中的每个节点上创建一个 /etc/lvm/md.tab 文件。使用 md.tab 文件来为您所创建的磁盘集定义元设备。


注意:

如果使用的是本地元设备,需确保本地元设备名称不同于用于构成磁盘集的设备 ID (DID) 名称。 例如,如果在磁盘集中使用了 DID 名称 /dev/did/dsk/d3,则不要将名称 /dev/md/dsk/d3 用于本地元设备。该要求不适用于共享元设备,共享元设备使用命名惯例 /dev/md/setname/{r}dsk/d#



提示:

为避免在群集环境中可能产生的本地元设备之间的混淆,请使用一种可以使每个本地元设备名称在群集中都唯一的命名方案。 例如,为节点 1 选择 d100-d199 之间的名称,为节点 2 使用 d200-d299 之间的名称,依次类推。


  1. 成为群集节点的超级用户。

  2. 列出创建 md.tab 文件时要引用的 DID 映射。

    md.tab 文件中使用完整 DID 伪驱动程序名称来代替较低级别的设备名称 (cNtXdY)。


    # scdidadm -L
    

    在下面的示例中,输出的第一列是 DID 实例编号,第二列是完整路径(物理路径),第三列是完整的 DID 伪驱动程序名称(伪路径)。


    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
    ...

  3. 创建一个 /etc/lvm/md.tab 文件并使用您首选的文本编辑器来手动编辑该文件。

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


    注意:

    如果磁盘上现有的一些数据将用于子镜像,则必须先备份这些数据,再设置元设备,之后还要将这些数据恢复到镜像上。


  4. 激活在 md.tab 文件中定义的元设备。

    转到"如何激活元设备"

示例 - md.tab 文件样例

下面的 md.tab 文件样例定义了名为 dg-schost-1 的磁盘集的元设备。md.tab 文件中各行的顺序并不重要。


dg-schost-1/d0 -t dg-schost-1/d1 dg-schost-1/d4
    dg-schost-1/d1 -m dg-schost-1/d2
        dg-schost-1/d2 1 1 /dev/did/rdsk/d1s4
        dg-schost-1/d3 1 1 /dev/did/rdsk/d55s4
    dg-schost-1/d4 -m dg-schost-1/d5
        dg-schost-1/d5 1 1 /dev/did/rdsk/d3s5
        dg-schost-1/d6 1 1 /dev/did/rdsk/d57s5

md.tab 文件样例的结构如下。

如何激活元设备

执行此过程来激活在 md.tab 文件中定义的元设备。

  1. 成为群集节点的超级用户。

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

  3. 确保您对将要执行命令的节点上的磁盘集具有所有权。

  4. 获取磁盘集的所有权。


    # metaset -s setname -t
    
    -s setname

    指定磁盘集名称

    -t

    获取磁盘集的所有权

  5. 激活该磁盘集的元设备,这些元设备是在 md.tab 文件中定义的。


    # metainit -s setname -a
    
    -a

    激活 md.tab 文件中的所有元设备

  6. 为每个主设备和日志设备连接第二个子镜像 (submirror2)。

    当激活 md.tab 文件中的元设备时,只连接了主设备和日志设备的第一个子镜像 (submirror1),所以必须手动连接 submirror2


    # metattach mirror submirror2
    

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

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

  8. 检查元设备的状态。


    # metastat -s setname
    

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

  9. 群集是否包含刚好用两个磁盘群组和两个节点配置的磁盘集?

示例 - 激活 md.tab 文件中的元设备

在下面的示例中,在 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

调解器概述

调解器或调解器主机是存储调解器数据的群集节点。 调解器数据提供其他调解器的位置信息,并包含一个提交计数,该数字与存储在数据库复本中的提交计数完全相同。 该提交计数用于确认调解器数据与数据库复本中的数据是否同步。

对于正好配置有两个磁盘串和两个群集节点的所有 Solstice DiskSuite 磁盘集来说,调解器是必需的。磁盘串由一个磁盘群组、其物理磁盘、群组到节点的电缆以及接口适配卡组成。通过使用调解器,Sun Cluster 软件能够确保在双串配置中的单串失败的情况下仍能显示最当前的数据。下列规则适用于使用调解器的双串配置。

这些规则不要求整个群集刚好有两个节点。 而只要求这些具有两个磁盘串的磁盘集必须正好与两个节点连接。 这些规则之下允许有 N+1 群集和许多其他拓扑。

如何添加调解器主机

在您的配置需要调解器时执行此过程。

  1. 成为一个节点的超级用户,该节点当前主控着您要为其添加调解器主机的磁盘集。

  2. 运行 metaset(1M) 命令,将每个与磁盘集连接的节点添加为该磁盘集的调解器调解器。


    # metaset -s setname -a -m mediator-host-list
    
    -s setname

    指定磁盘集名称

    -a

    添加到磁盘集

    -m mediator-host-list

    指定将作为磁盘集的调解器主机添加的节点的名称

    有关 metaset 命令中针对调解器的选项的详细信息,请参阅 mediator(7) 手册页。

  3. 检查调解器数据的状态。

    转到"如何检查调解器数据的状态"

示例 - 添加调解器主机

下面的示例将节点 phys-schost-1phys-schost-2 添加为磁盘集 dg-schost-1 的调解器主机。 这两个命令都从节点 phys-schost-1 运行。


# metaset -s dg-schost-1 -a -m phys-schost-1
# metaset -s dg-schost-1 -a -m phys-schost-2

如何检查调解器数据的状态

  1. 按照"如何添加调解器主机"中的说明添加调解器调解器。

  2. 运行 medstat 命令。


    # medstat -s setname
    
    -s setname

    指定磁盘集名称

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

  3. "Status" 字段中的值是否为 Bad

如何修正错误的调解器数据

执行此过程以修复错误的调解器数据。

  1. 按照"如何检查调解器数据的状态"这个过程中的说明,确定带有错误调解器数据的调解器主机。

  2. 成为拥有受影响的磁盘集的节点的超级用户。

  3. 从所有受影响的磁盘集中删除带有错误调解器数据的调解器主机。


    # metaset -s setname -d -m mediator-host-list
    
    -s setname

    指定磁盘集名称

    -d

    从磁盘集中删除

    -m mediator-host-list

    指定要作为该磁盘集的调解器主机删除的节点的名称

  4. 恢复调解器主机。


    # metaset -s setname -a -m mediator-host-list
    
    -a

    添加到磁盘集

    -m mediator-host-list

    指定将作为磁盘集的调解器主机添加的节点的名称

    有关 metaset 命令中针对调解器的选项的详细信息,请参阅 mediator(7) 手册页。

  5. 创建群集文件系统。

    转到"如何添加群集文件系统"