跳过导航链接
退出打印视图
| Oracle Solaris Cluster 系统管理指南 Oracle Solaris Cluster 3.3 3/13 (简体中文)

搜索范围:

- 本文档
- 整个文档库

## 故障排除

本节包含故障排除过程，您可以使用该过程进行测试。

### 在全局群集外部运行应用程序

### 如何从在非群集模式下引导的节点中获取 Solaris Volume Manager 元集

使用此过程可出于测试目的在全局群集外部运行一个应用程序。

1. 确定 Solaris Volume Manager 元集中是否使用了法定设备，并确定该法定设备是否使用了 SCSI2 或 SCSI3 预留空间。

       phys-schost# clquorum show

   1. 如果法定设备位于 Solaris Volume Manager 元集中，请添加一个新的法定设备，这个新的法定设备不属于稍后要在非群集模式下获取的元集的一部分。

          phys-schost# clquorum add did

   2. 删除旧的法定设备。

          phys-schost# clqorum remove did

   3. 如果法定设备使用 SCSI2 预留空间，请从旧的法定设备中清理 SCSI2 预留空间，并确认没有留下任何 SCSI2 预留空间。

      以下命令可查找持久组保留仿真 (PGRE) 密钥。如果磁盘上没有密钥，将显示 errno=22 消息。

          # /usr/cluster/lib/sc/pgre -c pgre_inkeys -d /dev/did/rdsk/dids2

      找到密钥后，将清理 PGRE 密钥。

          # /usr/cluster/lib/sc/pgre -c pgre_scrub -d /dev/did/rdsk/dids2

      | 注意 - 如果从磁盘中清理活动法定设备密钥，群集将在下次重新配置时出现紧急情况，并显示 Lost operational quorum 消息。

2. 清空要在非群集模式下引导的全局群集节点。

       phys-schost# clresourcegroup evacuate -n targetnode

3. 使任一或多个资源组脱机，这些资源组包含 HAStorage 或 HAStoragePlus 资源并包含受您稍后要在非群集模式下获取的元集影响的设备或文件系统。

       phys-schost# clresourcegroup offline resourcegroupname

4. 禁用已使其脱机的资源组中的所有资源。

       phys-schost# clresource disable resourcename

5. 取消管理资源组。

       phys-schost# clresourcegroup unmanage resourcegroupname

6. 使对应的设备组脱机。

       phys-schost# cldevicegroup offline devicegroupname

7. 禁用设备组。

       phys-schost# cldevicegroup disable devicegroupname

8. 将被动节点引导至非群集模式。

       phys-schost# reboot -x

9. 在继续之前，检验被动节点上的引导过程是否已完成。

       phys-schost# svcs -x

10. 确定元集中的磁盘上是否存在任何 SCSI3 预留空间。在元集中的所有磁盘上运行以下命令。

        phys-schost# /usr/cluster/lib/sc/scsi -c inkeys -d /dev/did/rdsk/dids2

11. 如果磁盘上存在任何 SCSI3 预留空间，请清理预留空间。

        phys-schost# /usr/cluster/lib/sc/scsi -c scrub -d /dev/did/rdsk/dids2

12. 获取已清空的节点上的元集。

        phys-schost# metaset -s name -C take -f

13. 挂载包含元集上定义的设备的文件系统。

        phys-schost# mount device mountpoint

14. 启动应用程序并执行所需的测试。完成测试后，停止应用程序。
15. 重新引导节点并等待，直到引导过程结束。

        phys-schost# reboot

16. 使设备组联机。

        phys-schost# cldevicegroup online -e devicegroupname

17. 启动资源组。

        phys-schost# clresourcegroup online -eM resourcegroupname

### 恢复损坏的磁盘组

如果磁盘集损坏，或者群集中的节点无法获得磁盘集的所有权，请使用此过程。如果清除该状态的尝试失败，可使用此过程作为修复磁盘集的最后措施。

这些过程适用于 Solaris Volume Manager 元集和多所有者 Solaris Volume Manager 元集。

### 如何保存 Solaris Volume Manager 软件配置

从头开始恢复磁盘集可能非常耗时，而且容易出错。一种更好的替代方法是使用 `metastat` 命令定期备份副本，或使用 Oracle Explorer (SUNWexplo) 创建备份。然后，可以使用保存的配置来重新创建磁盘集。应该将当前配置保存到文件中（使用 `prtvtoc` 和 `metastat` 命令），然后重新创建磁盘集及其组件。请参见如何重新创建 Solaris Volume Manager 软件配置。

1. 保存磁盘集中每个磁盘的分区表。

       # /usr/sbin/prtvtoc /dev/global/rdsk/diskname > /etc/lvm/diskname.vtoc

2. 保存 Solaris Volume Manager 软件配置。

       # /bin/cp /etc/lvm/md.tab /etc/lvm/md.tab_ORIGINAL

       # /usr/sbin/metastat -p -s setname >> /etc/lvm/md.tab

   注 - 其他配置文件，例如 `/etc/vfstab` 文件，可能引用 Solaris Volume Manager 软件。此过程假设重新构建了完全等同的 Solaris Volume Manager 软件配置，因此挂载信息相同。如果 Oracle Explorer (SUNWexplo) 在拥有磁盘集的节点上运行，它会检索 `prtvtoc` 和 `metaset —p` 信息。

### 如何清除损坏的磁盘集

从一个或所有节点清除磁盘集会删除配置。要从一个节点清除磁盘集，该节点不能具有该磁盘集的所有权。

1. 在所有节点上运行清除命令。

       # /usr/sbin/metaset -s setname -P

   运行此命令会从数据库副本以及 Oracle Solaris Cluster 系统信息库中删除磁盘集信息。`-P` 和 `-C` 选项允许在无需完全重建 Solaris Volume Manager 环境的情况下清除磁盘集。

   注 - 如果在节点引导至非群集模式的情况下清除多所有者磁盘集，则可能需要从 dcs 配置文件中删除相关信息。

       # /usr/cluster/lib/sc/dcs_config -c remove -s setname

   有关更多信息，请参见 `dcs_config`(1M) 手册页。

2. 如果只想删除数据库副本中的磁盘集信息，请使用以下命令。

       # /usr/sbin/metaset -s setname -C purge

   通常应使用 `-P` 选项而不是 `-C` 选项。使用 `-C` 选项可能导致重新创建磁盘集时发生问题，因为 Oracle Solaris Cluster 软件仍会识别该磁盘集。

   1. 如果在 `metaset` 命令中使用 `-C` 选项，请首先创建磁盘集，查看是否发生问题。
   2. 如果存在问题，请从 dcs 配置文件中删除相关信息。

          # /usr/cluster/lib/sc/dcs_config -c remove -s setname

      如果 purge 选项失败，请确认您已经安装了最新的内核和元设备更新，然后联系 My Oracle Support。

### 如何重新创建 Solaris Volume Manager 软件配置

只有在发生完全丢失 Solaris Volume Manager 软件配置的情况下才应使用此过程。这些步骤假设您已经保存了当前的 Solaris Volume Manager 配置及其组件，并清除了损坏的磁盘集。

注 - 只应在双节点群集中使用中介。

1. 创建新磁盘集。

       # /usr/sbin/metaset -s setname -a -h nodename1 nodename2

   如果该磁盘集是多所有者磁盘集，请使用以下命令创建新磁盘集。

        /usr/sbin/metaset -s setname -aM -h nodename1 nodename2

2. 在创建了磁盘集的同一主机上，根据需要添加中介主机（仅限双节点）。

        /usr/sbin/metaset -s setname -a -m nodename1 nodename2

3. 从该主机将相同磁盘添加回磁盘集。

        /usr/sbin/metaset -s setname -a /dev/did/rdsk/diskname /dev/did/rdsk/diskname

4. 如果清除了磁盘集并要重新创建该磁盘集，卷目录 (Volume Table of Contents, VTOC) 应该保留在磁盘上，使您可以跳过此步骤。但是，如果正在重新创建要恢复的磁盘集，应根据 `/etc/lvm/diskname.vtoc` 文件中保存的配置格式化磁盘。例如：

       # /usr/sbin/fmthard -s /etc/lvm/d4.vtoc /dev/global/rdsk/d4s2

       # /usr/sbin/fmthard -s /etc/lvm/d8.vtoc /dev/global/rdsk/d8s2

   您可以在任何节点上运行此命令。

5. 在现有 `/etc/lvm/md.tab` 文件中检查每个元设备的语法。

       # /usr/sbin/metainit -s setname -n -a metadevice

6. 根据保存的配置创建每个元设备。

       # /usr/sbin/metainit -s setname -a metadevice

7. 如果元设备上存在文件系统，请运行 `fsck` 命令。

       # /usr/sbin/fsck -n /dev/md/setname/rdsk/metadevice

   如果 `fsck` 命令仅显示几个错误，例如超级块计数，则表明设备很可能已经正确重建。然后您可以运行不带 `-n` 选项的 `fsck` 命令。如果出现多个错误，请检验您是否正确重建了元设备。如果是，则查看 `fsck` 错误，确定是否能够恢复文件系统。如果不能，您应该从备份中恢复数据。

8. 将所有群集节点上的所有其他元集串联到 `/etc/lvm/md.tab` 文件，然后串联本地磁盘集。

       # /usr/sbin/metastat -p >> /etc/lvm/md.tab

版权所有 © 2013, Oracle 和/或其附属公司。 保留所有权利。 法律声明 |