Oracle® Solaris Cluster 系统管理指南

退出打印视图

更新时间: 2015 年 10 月
 
 

恢复损坏的磁盘组

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

这些过程适用于 Solaris Volume Manager 元集和多属主 Solaris Volume Manager 元集。

如何保存 Solaris Volume Manager 软件配置

从头开始恢复磁盘集可能非常耗时,而且容易出错。一种更好的替代方法是使用 metastat 命令定期备份副本,或使用 Oracle Explorer (SUNWexplo) 创建备份。然后,可以使用保存的配置来重新创建磁盘集。应该将当前配置保存到文件中(使用 prtvtocmetastat 命令),然后重新创建磁盘集及其组件。请参见如何重新创建 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) 在拥有磁盘集的节点上运行,它会检索 prtvtocmetaset —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