JavaScript is required to for searching.
跳过导航链接
退出打印视图
Solaris Volume Manager 管理指南     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  Solaris Volume Manager 入门

2.  存储管理概念

3.  Solaris Volume Manager 概述

4.  Solaris Volume Manager for Sun Cluster(概述)

5.  配置和使用 Solaris Volume Manager(方案)

6.  状态数据库(概述)

7.  状态数据库(任务)

8.  RAID-0(条带和串联)卷(概述)

9.  RAID-0(条带和串联)卷(任务)

10.  RAID-1(镜像)卷(概述)

11.  RAID-1(镜像)卷(任务)

12.  软分区(概述)

13.  软分区(任务)

14.  RAID-5 卷(概述)

15.  RAID-5 卷(任务)

16.  热备用池(概述)

17.  热备用池(任务)

18.  磁盘集(概述)

19.  磁盘集(任务)

20.  维护 Solaris Volume Manager(任务)

21.  Solaris Volume Manager 的最佳做法

22.  自上而下创建卷(概述)

23.  自上而下创建卷(任务)

24.  监视和错误报告(任务)

25.  Solaris Volume Manager 故障排除(任务)

Solaris Volume Manager 故障排除(任务列表)

系统故障排除概览

系统故障排除先决条件

Solaris Volume Manager 故障排除的一般原则

一般故障排除方法

替换磁盘

如何替换故障磁盘

从磁盘移动问题中恢复

磁盘移动和设备 ID 概述

解决未命名设备错误消息

升级到 Solaris 10 发行版之后设备 ID 的改变

从引导问题中恢复

引导问题的背景信息

如何从不正确的 /etc/vfstab 项恢复

恢复根 (/) RAID-1(镜像)卷

如何从引导设备故障中恢复

从状态数据库副本故障中恢复

如何从不足的状态数据库副本中恢复

从软分区问题中恢复

如何恢复软分区的配置数据

从另一个系统恢复存储

如何从本地磁盘集恢复存储

从已知磁盘集恢复存储

如何打印有关可导入的磁盘集的报告

如何将磁盘集从一个系统导入到另一个系统

从磁盘集问题中恢复

无法获取磁盘集所有权时应执行的操作

如何清除磁盘集

使用 ufsdump 命令对已挂载的文件系统执行备份

如何对 RAID-1 卷上的已挂载文件系统执行备份

执行系统恢复

如何使用 Solaris Volume Manager 配置来恢复系统

A.  重要的 Solaris Volume Manager 文件

B.  Solaris Volume Manager 快速参考

C.  Solaris Volume Manager CIM/WBEM API

索引

从引导问题中恢复

由于 Solaris Volume Manager 允许您镜像根 (/)、swap/usr 目录,因此在引导系统时可能会出现特殊问题。这些问题可能由硬件故障引起,也可能由操作错误引起。本节中的过程针对此类潜在问题提供了解决方案。

下表列出了这些问题,并提供了指向相应解决方案的链接。

表 25-1 Solaris Volume Manager 的常见引导问题

出现引导问题的原因
参考
/etc/vfstab 文件包含错误的信息。
未定义足够的状态数据库副本。
引导设备(磁盘)出现故障。

引导问题的背景信息

如何从不正确的 /etc/vfstab 项恢复

如果在 /etc/vfstab 文件中创建了错误的条目(例如,在镜像根 (/) 文件系统时),则系统最初看起来引导正确,但随后会出现故障。要解决此问题,需要在单用户模式下编辑 /etc/vfstab 文件。

从错误的 /etc/vfstab 文件条目中恢复的概括性步骤如下所示:

  1. 将系统引导到单用户模式

  2. 针对镜像卷运行 fsck 命令

  3. 重新挂载文件系统并启用读写选项

  4. 可选:针对根 (/) 镜像运行 metaroot 命令

  5. 验证 /etc/vfstab 文件是否正确引用了与该文件系统条目对应的卷

  6. 重新引导系统

恢复根 (/) RAID–1(镜像)卷

在以下示例中,根 (/) 文件系统使用双向镜像 d0 进行镜像。/etc/vfstab 文件中的根 (/) 条目由于某种原因又恢复为文件系统的原始分片。但是,/etc/system 文件中的信息仍显示将从镜像 d0 引导。最可能的原因就是,没有使用 metaroot 命令来维护 /etc/system/etc/vfstab 文件。另外一个原因可能是,/etc/vfstab 文件的旧副本被复制回当前的 /etc/vfstab 文件中。

不正确的 /etc/vfstab 文件与以下内容类似:

#device        device          mount          FS      fsck   mount    mount
#to mount      to fsck         point          type    pass   at boot  options
#
/dev/dsk/c0t3d0s0 /dev/rdsk/c0t3d0s0  /       ufs      1     no       -
/dev/dsk/c0t3d0s1 -                   -       swap     -     no       -
/dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6  /usr    ufs      2     no       -
#
/proc             -                  /proc    proc     -     no       -
swap              -                  /tmp     tmpfs    -     yes      -

由于这些错误,在系统引导时,将自动进入单用户模式:

ok boot
...
configuring network interfaces: hme0.
Hostname: host1
mount: /dev/dsk/c0t3d0s0 is not this fstype.
setmnt: Cannot open /etc/mnttab for writing

INIT: Cannot create /var/adm/utmp or /var/adm/utmpx

INIT: failed write of utmpx entry:"  "

INIT: failed write of utmpx entry:"  "

INIT: SINGLE USER MODE

Type Ctrl-d to proceed with normal startup,
(or give root password for system maintenance): <root-password>

此时,根 (/) 和 /usr 文件系统都以只读模式挂载。请执行以下步骤:

  1. 在根 (/) 镜像上运行 fsck 命令。

    注 - 请小心谨慎,务必对根 (/) 镜像使用正确的卷。


    # fsck /dev/md/rdsk/d0
    ** /dev/md/rdsk/d0
    ** Currently Mounted on /
    ** Phase 1 - Check Blocks and Sizes
    ** Phase 2 - Check Pathnames
    ** Phase 3 - Check Connectivity
    ** Phase 4 - Check Reference Counts
    ** Phase 5 - Check Cyl groups
    2274 files, 11815 used, 10302 free (158 frags, 1268 blocks,
    0.7% fragmentation)
  2. 重新以读/写方式挂载根 (/) 文件系统,以便于编辑 /etc/vfstab 文件。
    # mount -o rw,remount /dev/md/dsk/d0 /
    mount: warning: cannot lock temp file </etc/.mnt.lock>
  3. 运行 metaroot 命令。
    # metaroot d0

    此命令将编辑 /etc/system/etc/vfstab 文件,以指定根 (/) 文件系统当前位于卷 d0 上。

  4. 验证 /etc/vfstab 文件是否包含正确的卷条目。

    /etc/vfstab 文件中的根 (/) 条目应显示为以下内容,文件系统条目才能正确引用 RAID–1 卷:

    #device           device              mount    FS      fsck   mount   mount
    #to mount         to fsck             point    type    pass   at boot options
    #
    /dev/md/dsk/d0    /dev/md/rdsk/d0     /        ufs     1      no      -
    /dev/dsk/c0t3d0s1 -                   -        swap    -      no      -
    /dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6  /usr     ufs     2      no      -
    #
    /proc             -                  /proc     proc    -      no      -
    swap              -                  /tmp      tmpfs   -      yes     -
  5. 重新引导系统。

    系统将恢复到正常的运行状态。

如何从引导设备故障中恢复

如果您有一个根 (/) 镜像,那么,当引导设备出现故障时,您需要设置备用引导设备。

本任务中的概括性步骤如下所示:

最初,当引导设备出现故障时,您将看到类似于以下内容的消息。在不同的体系结构中,此消息可能会有所不同。

Rebooting with command:
Boot device: /iommu/sbus/dma@f,81000/esp@f,80000/sd@3,0   
The selected SCSI device is not responding
Can't open boot device
...

看到此消息时,请记下该设备。然后,请执行以下步骤:

  1. 从其他根 (/) 子镜像引导。

    由于本示例中的六个状态数据库副本中只有两个出错,因此仍可以引导系统。如果不是这种情况,则需要在单用户模式下删除不可访问的状态数据库副本。此过程在如何从不足的状态数据库副本中恢复中介绍。

    在为根 (/) 文件系统创建镜像时,应在执行过程中记录备用引导设备。在本示例中,disk2 是备用引导设备。

    ok boot disk2
    SunOS Release 5.9 Version s81_51 64-bit
    Copyright 1983-2001 Sun Microsystems, Inc.  All rights reserved.
    Hostname: demo
    ...
    demo console login: root
    Password: <root-password>
    Dec 16 12:22:09 host1 login: ROOT LOGIN /dev/console
    Last login: Wed Dec 12 10:55:16 on console
    Sun Microsystems Inc.   SunOS 5.9       s81_51  May 2002
    ...
  2. 使用 metadb 命令确定已出现故障的状态数据库副本的个数。
    # metadb
           flags         first blk    block count
        M     p          unknown      unknown      /dev/dsk/c0t3d0s3
        M     p          unknown      unknown      /dev/dsk/c0t3d0s3
        a m  p  luo      16           1034         /dev/dsk/c0t2d0s3
        a    p  luo      1050         1034         /dev/dsk/c0t2d0s3
        a    p  luo      16           1034         /dev/dsk/c0t1d0s3
        a    p  luo      1050         1034         /dev/dsk/c0t1d0s3

    在本示例中,系统无法再检测到故障磁盘上的分片 /dev/dsk/c0t3d0s3 上的状态数据库副本。

  3. 使用 metastat 命令确定一半的根 (/)、swap/usr 镜像已出现故障。
    # metastat
    d0: Mirror
        Submirror 0: d10
          State: Needs maintenance
        Submirror 1: d20
          State: Okay
    ...
     
    d10: Submirror of d0
        State: Needs maintenance
        Invoke: "metareplace d0 /dev/dsk/c0t3d0s0 <new device>"
        Size: 47628 blocks
        Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        /dev/dsk/c0t3d0s0          0     No    Maintenance 
     
    d20: Submirror of d0
        State: Okay
        Size: 47628 blocks
        Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        /dev/dsk/c0t2d0s0          0     No    Okay  
     
    d1: Mirror
        Submirror 0: d11
          State: Needs maintenance
        Submirror 1: d21
          State: Okay
    ...
     
    d11: Submirror of d1
        State: Needs maintenance
        Invoke: "metareplace d1 /dev/dsk/c0t3d0s1 <new device>"
        Size: 69660 blocks
        Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        /dev/dsk/c0t3d0s1          0     No    Maintenance 
     
    d21: Submirror of d1
        State: Okay
        Size: 69660 blocks
        Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        /dev/dsk/c0t2d0s1          0     No    Okay        
     
    d2: Mirror
        Submirror 0: d12
          State: Needs maintenance
        Submirror 1: d22
          State: Okay
    ...
     
    d12: Submirror of d2
        State: Needs maintenance
        Invoke: "metareplace d2 /dev/dsk/c0t3d0s6 <new device>"
        Size: 286740 blocks
        Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        /dev/dsk/c0t3d0s6          0     No    Maintenance 
     
     
    d22: Submirror of d2
        State: Okay
        Size: 286740 blocks
        Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        /dev/dsk/c0t2d0s6          0     No    Okay  

    在本示例中,metastat 命令显示以下子镜像需要维护:

    • 子镜像 d10、设备 c0t3d0s0

    • 子镜像 d11、设备 c0t3d0s1

    • 子镜像 d12、设备 c0t3d0s6

  4. 停止系统,然后替换磁盘。使用 format 命令或 fmthard 命令按照磁盘出现故障之前的状态对磁盘进行分区。

    提示 - 如果新磁盘与现有磁盘(在本示例中为镜像完整的一面)相同,请快速格式化新磁盘。为此,可使用 prtvtoc /dev/rdsk/c0t2d0s2 | fmthard -s - /dev/rdsk/c0t3d0s2 命令(在本示例中为 c0t3d0)。


    # halt
    ...
    Halted
    ...
    ok boot
    ...
    # format /dev/rdsk/c0t3d0s0
  5. 重新引导系统。

    请注意,必须从另一半根 (/) 镜像重新引导。在创建镜像时,您应该已经记录了备用引导设备。

    # halt
    ...
    ok boot disk2
  6. 要删除出现故障的状态数据库副本重新添加它们,请使用 metadb 命令。
    # metadb
           flags         first blk    block count
        M     p          unknown      unknown      /dev/dsk/c0t3d0s3
        M     p          unknown      unknown      /dev/dsk/c0t3d0s3
        a m  p  luo      16           1034         /dev/dsk/c0t2d0s3
        a    p  luo      1050         1034         /dev/dsk/c0t2d0s3
        a    p  luo      16           1034         /dev/dsk/c0t1d0s3
        a    p  luo      1050         1034         /dev/dsk/c0t1d0s3
    # metadb -d c0t3d0s3
    # metadb -c 2 -a c0t3d0s3
    # metadb
           flags         first blk    block count
         a m  p  luo     16           1034         /dev/dsk/c0t2d0s3
         a    p  luo     1050         1034         /dev/dsk/c0t2d0s3
         a    p  luo     16           1034         /dev/dsk/c0t1d0s3
         a    p  luo     1050         1034         /dev/dsk/c0t1d0s3
         a        u      16           1034         /dev/dsk/c0t3d0s3
         a        u      1050         1034         /dev/dsk/c0t3d0s3
  7. 使用 metareplace 命令重新启用子镜像。
    # metareplace -e d0 c0t3d0s0
    Device /dev/dsk/c0t3d0s0 is enabled
     
    # metareplace -e d1 c0t3d0s1
    Device /dev/dsk/c0t3d0s1 is enabled
     
    # metareplace -e d2 c0t3d0s6
    Device /dev/dsk/c0t3d0s6 is enabled

    一段时间之后,重新同步将完成。现在您可以恢复为从原始设备引导。