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(镜像)卷(任务)

RAID-1 卷(任务列表)

创建 RAID-1 卷

如何从未使用的分片创建 RAID-1 卷

如何从文件系统创建 RAID-1 卷

SPARC: 如何从根 (/) 文件系统创建 RAID-1 卷

x86: 从根 (/) 文件系统创建 RAID-1 卷

x86: 如何使用 GRUB 从根 (/) 文件系统创建 RAID-1 卷

x86: 如何使用 DCA 从根 (/) 文件系统创建 RAID-1 卷

了解镜像根 (/) 文件系统时出现的引导时警告

使用子镜像

如何附加子镜像

如何分离子镜像

如何使子镜像脱机或联机

如何启用子镜像中的分片

维护 RAID-1 卷

如何查看镜像和子镜像的状态

如何更改 RAID-1 卷选项

如何扩展 RAID-1 卷

响应 RAID-1 卷的组件故障

如何替换子镜像中的分片

如何替换子镜像

删除 RAID-1 卷(取消镜像)

如何取消镜像文件系统

如何取消对无法取消挂载的文件系统的镜像

备份 RAID-1 卷上的数据

如何对 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 故障排除(任务)

A.  重要的 Solaris Volume Manager 文件

B.  Solaris Volume Manager 快速参考

C.  Solaris Volume Manager CIM/WBEM API

索引

创建 RAID–1 卷

如何从未使用的分片创建 RAID–1 卷

以下过程说明如何创建双向镜像。如果要创建三向镜像或四向镜像,请使用同一过程。

开始之前

请查看创建 Solaris Volume Manager 组件的先决条件创建和维护 RAID-1 卷

  1. 创建两个条带或串联。这些组件将成为子镜像。

    请参见如何创建 RAID-0(条带)卷如何创建 RAID-0(串联)卷

  2. 要创建镜像,请使用下列方法之一:
    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)⇒ "Create Volume"(创建卷),并按照屏幕说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令创建单向镜像:

      # metainit volume-name -m  submirror-name
      volume-name

      指定要创建的卷的名称

      -m

      指定创建镜像

      submirror-name

      指定将成为镜像中的第一个子镜像的组件的名称

      有关更多信息,请参见以下示例和 metainit(1M) 手册页。

  3. 要添加第二个子镜像,请使用下列方法之一:
    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择要修改的镜像。选择 "Action"(操作)⇒ "Properties"(属性),然后选择 "Submirrors"(子镜像)。请按照屏幕上的说明附加子镜像。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metattach 命令:

      # metattach volume-name submirror-name
      volume-name

      指定要向其添加子镜像的 RAID–1 卷的名称

      submirror-name

      指定将附加到该镜像的第二个子镜像的组件的名称

      有关更多信息,请参见以下示例和 metattach(1M) 手册页。

示例 11-1 创建双向镜像

# metainit d51 1 1 c0t0d0s2
d51: Concat/Stripe is setup
# metainit d52 1 1 c1t0d0s2
d52: Concat/Stripe is setup
# metainit d50 -m d51
d50: Mirror is setup
# metattach d50 d52
d50: Submirror d52 is attached

以下示例显示如何创建双向镜像 d50metainit 命令创建了两个子镜像(d51d52),均为 RAID–0 卷。metainit -m 命令从 d51 RAID–0 卷创建单向镜像。metattach 命令附加 d52,从而创建一个双向镜像并导致重新同步。在重新同步过程中,所附加的子镜像中的所有数据都会被其他子镜像覆盖。

示例 11-2 创建双向镜像而不进行重新同步

# metainit d51 1 1 c0t0d0s2
d51: Concat/Stripe is setup
# metainit d52 1 1 c1t0d0s2
d52: Concat/Stripe is setup
# metainit d50 -m d51 d52
metainit: d50: WARNING: This form of metainit is not recommended.
The submirrors may not have the same data.
Please see ERRORS in metainit(1M) for additional information.
d50: Mirror is setup

本示例说明如何创建双向镜像 d50metainit 命令创建了两个子镜像(d51d52),均为 RAID–0 卷。然后,运行 metainit -m 命令使用这两个子镜像创建镜像。使用 metainit 命令(而不是 metattach 命令)创建镜像时,将不会发生重新同步操作。因此,当 Solaris Volume Manager 假定镜像的两面相同且可以互换使用时,数据可能会损坏。

另请参见

要针对某个文件系统准备新创建的镜像,请参见《System Administration Guide: Devices and File Systems》中的第 15  章 "Creating and Mounting File Systems (Tasks)"。某些应用程序(例如数据库)不使用文件系统,而是使用原始设备。这些应用程序必须有自己访问原始设备的方法。

如何从文件系统创建 RAID–1 卷

使用此过程镜像现有文件系统。如果可以卸载文件系统,则无需重新引导就可以完成整个过程。对于无法卸载的文件系统(如 /usr/swap),必须重新引导系统才能完成该过程。

如果从构建在分片上的现有文件系统创建 RAID–1 卷,则主 RAID–0 卷(子镜像)中只能包含这一个分片。如果要镜像对系统非常关键的文件系统,则所有的子镜像都必须仅包含一个分片。

有关与镜像根 (/) 文件系统关联的过程,请参见SPARC: 如何从根 (/) 文件系统创建 RAID-1 卷x86: 如何使用 DCA 从根 (/) 文件系统创建 RAID-1 卷

在本过程所使用的示例中,现有分片为 c1t0d0s0。第二个分片(c1t1d0s0)可用于镜像的另一半。子镜像分别为 d1d2,镜像为 d0


注意

注意 - 请确保使用 metainit 命令创建单向镜像,然后使用 metattach 命令附加其他子镜像。不使用 metattach 命令时,不会执行重新同步操作。因此,当 Solaris Volume Manager 假定镜像的两面相同且可以互换使用时,数据可能会损坏。


开始之前

请查看创建 Solaris Volume Manager 组件的先决条件创建和维护 RAID-1 卷

  1. 确定要进行镜像的现有文件系统所在的分片。本示例使用分片 c1t0d0s0
  2. 通过以下方法之一,在上一步的分片上创建新的 RAID–0 卷:
    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)⇒ "Create Volume"(创建卷)。请按照屏幕上的说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:

      # metainit -f  volume-name number-of-stripes components-per-stripe component-name
      -f

      强制继续执行该命令。如果分片包含已挂载的文件系统,则必须使用此选项。

      volume-name

      指定要创建的卷的名称。有关命名卷的信息,请参见卷名称

      number-of-stripes

      指定要创建的条带数。

      components-per-stripe

      指定每个条带应包含的组件数。

      component-names

      指定所使用的组件的名称。本示例使用根分片 c0t0d0s0

  3. 在未使用的分片(本示例中为 c1t1d0s0)上创建另一个 RAID–0 卷(串联),将其用作第二个子镜像。第二个子镜像的大小必须大于或等于原来子镜像的大小。使用以下方法之一:
    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)-> "Create Volume"(创建卷),并按照屏幕上的说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:

      # metainit volume-name number-of-stripes components-per-stripe component-name

      注 - 有关各选项的相应说明,请参见步骤 2。


  4. 使用以下方法之一创建单向镜像:
    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)⇒ "Create Volume"(创建卷)。请按照屏幕上的说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:

      # metainit volume-name -m submirror-name
      volume-name

      指定要创建的卷的名称。

      -m

      指定创建镜像。

      submirror-name

      指定将成为镜像中的第一个子镜像的组件的名称。在本示例中,为根分片所在的 RAID–0 卷。

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


    注意

    注意 - 从现有文件系统创建镜像时,必须严格按照以下两个步骤进行操作以避免数据损坏。


  5. 编辑 /etc/vfstab 文件,以便文件系统挂载指令引用镜像,而不引用块设备。有关 /etc/vfstab 文件的更多信息,请参见《System Administration Guide: Devices and File Systems》中的"Overview of Mounting and Unmounting File Systems"

    例如,如果 /etc/vfstab file 包含以下用于文件系统的项:

    /dev/dsk/slice /dev/rdsk/slice /var ufs 2 yes -

    将此项更改为如下内容:

    /dev/md/dsk/mirror-name /dev/md/rdsk/mirror-name /var ufs 2 yes -
  6. 按照以下过程之一重新挂载新镜像的文件系统:
    • 如果要对可以卸载的文件系统进行镜像,请卸载该文件系统并重新挂载。

      # umount /filesystem
      # mount /filesystem
    • 如果要对无法卸载的文件系统进行镜像,请重新引导系统。

      # reboot
  7. 使用以下格式的 metattach 命令附加第二个子镜像。
    # metattach volume-name submirror-name
    volume-name

    指定要向其添加子镜像的 RAID–1 卷的名称

    submirror-name

    指定将附加到该镜像的第二个子镜像的组件的名称

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

示例 11-3 从可以卸载的文件系统创建双向镜像

# metainit -f d1 1 1 c1t0d0s0
d1: Concat/Stripe is setup
# metainit d2 1 1 c1t1d0s0
d2: Concat/Stripe is setup
# metainit d0 -m d1
d0: Mirror is setup
# umount /master
(Edit the /etc/vfstab file so that the file system references the mirror)
# mount /master
# metattach d0 d2
d0: Submirror d2 is attached

在本示例中,-f 选项强制创建第一个串联 d1,其中包含已挂载在 /dev/dsk/c1t0d0s0 上的文件系统 /master。第二个串联 d2/dev/dsk/c1t1d0s0 创建。此分片的大小必须大于或等于 d1 的大小。带有 -m 选项的 metainit 命令用于从 d1 创建单向镜像 d0

接下来,应在 /etc/vfstab 文件中更改该文件系统所对应的条目以便引用镜像。/etc/vfstab 文件中的以下行最初显示如下:

/dev/dsk/c1t0d0s0 /dev/rdsk/c1t0d0s0 /var ufs 2 yes -

应将条目更改为如下内容:

/dev/md/dsk/d0 /dev/md/rdsk/d0 /var ufs 2 yes -

最后,重新挂载文件系统,并将子镜像 d2 附加到镜像,从而导致镜像重新同步。系统确认了 RAID–0 和 RAID–1 卷均已设置,且子镜像 d2 已附加。

示例 11-4 从无法取消挂载的文件系统创建双向镜像

# metainit -f d12 1 1 c0t3d0s6
d12: Concat/Stripe is setup
# metainit d22 1 1 c1t0d0s6
d22: Concat/Stripe is setup
# metainit d2 -m d12
d2: Mirror is setup
(Edit the /etc/vfstab file so that /usr references the mirror)
# reboot
...
# metattach d2 d22
d2: Submirror d22 is attached

本示例使用 /usr 文件系统所在的分片创建双向镜像。-f 选项强制创建第一个串联 d12,其中包含已挂载在 /dev/dsk/c0t3d0s6 上的文件系统 /usr。第二个串联 d22/dev/dsk/c1t0d0s6 创建。此分片的大小必须大于或等于 d12 的大小。带有 -m 选项的 metainit 命令使用 /usr 文件系统所在的串联创建单向镜像 d2。接下来,必须编辑 /etc/vfstab 文件,以便将 /usr 所对应的条目更改为引用该镜像。

/etc/vfstab file 包含对应于 /usr 文件系统的以下条目:

/dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /usr ufs 1 yes -

将此项更改为如下内容:

/dev/md/dsk/d2 /dev/md/rdsk/d2 /usr ufs 1 yes -

重新引导后,将第二个子镜像 d22 附加到镜像,从而导致镜像重新同步。

示例 11-5 从 /swap 空间创建镜像

# metainit -f d11 1 1 c0t0d0s1
d11: Concat/Stripe is setup
# metainit d21 1 1 c1t0d0s1
d21: Concat/Stripe is setup
# metainit d1 -m d11
d1: Mirror is setup
(Edit the /etc/vfstab file so that swap references the mirror)
# reboot
...
# metattach d1 d21
d1: Submirror d21 is attached

在本示例中,-f 选项强制创建第一个串联 d11,其中包含已挂载在 /dev/dsk/c0t0d0s1 上的文件系统 swap。第二个串联 d21/dev/dsk/c1t0d0s1 创建。此分片的大小必须大于或等于 d11 的大小。带有 -m 选项的 metainit 命令使用 swap 所在的串联创建单向镜像 d1。接下来,如果 /etc/vfstab 文件中存在对应于 swap 的条目,则必须对该条目进行编辑以引用该镜像。

/etc/vfstab file 包含对应于 swap 空间的以下条目:

/dev/dsk/c0t0d0s1 - - swap - no -

将此项更改为如下内容:

/dev/md/dsk/d1 - - swap - no -

重新引导后,将第二个子镜像 d21 附加到镜像,从而导致镜像重新同步。

要在对 swap 空间进行镜像之后保存故障转储,请使用 dumpadm 命令将转储设备配置为卷。例如,如果交换设备名为 /dev/md/dsk/d2,请使用 dumpadm 命令将此设备设置为转储设备。

SPARC: 如何从根 (/) 文件系统创建 RAID–1 卷

在 SPARC 平台上镜像根 (/) 文件系统的过程与镜像任何其他无法卸载的文件系统的过程类似。此过程的不同之处在于通过运行 metaroot 命令替代手动编辑 /etc/vfstab 文件。镜像根 (/) 文件系统还需要将路径记录到备用引导设备。如果子镜像出现故障,此设备会重新引导系统。

在本过程所使用的示例中,现有分片为 c1t0d0s0。第二个分片(c1t1d0s0)可用于镜像的另一半。子镜像分别为 d1d2,镜像为 d0


注意

注意 - 请确保使用 metainit 命令创建单向镜像,然后使用 metattach 命令附加其他子镜像。不使用 metattach 命令时,不会执行重新同步操作。因此,当 Solaris Volume Manager 假定镜像的两面相同且可以互换使用时,数据可能会损坏。


开始之前

请查看创建 Solaris Volume Manager 组件的先决条件创建和维护 RAID-1 卷

  1. 确定要进行镜像的现有根 (/) 文件系统所在的分片。本示例使用分片 c1t0d0s0
  2. 通过以下方法之一,在上一步的分片上创建新的 RAID–0 卷。RAID–0 卷中只能包含这一个分片。
    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)⇒ "Create Volume"(创建卷)。请按照屏幕上的说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:

      # metainit -f  volume-name number-of-stripes components-per-stripe component-name
      -f

      强制继续执行该命令。如果分片包含已挂载的文件系统,则必须使用此选项。

      volume-name

      指定要创建的卷的名称。有关命名卷的信息,请参见卷名称

      number-of-stripes

      指定要创建的条带数。

      components-per-stripe

      指定每个条带应包含的组件数。

      component-names

      指定所使用的组件的名称。本示例使用根分片 c0t0d0s0

  3. 在未使用的分片(本示例中为 c1t1d0s0)上创建另一个 RAID–0 卷,将其用作第二个子镜像。第二个子镜像的大小必须等于或大于原来子镜像的大小。使用以下方法之一:
    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)-> "Create Volume"(创建卷),并按照屏幕上的说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:

      # metainit volume-name number-of-stripes components-per-stripe component-name

      注 - 有关各选项的相应说明,请参见步骤 2。


  4. 使用以下方法之一创建单向镜像:
    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)⇒ "Create Volume"(创建卷)。请按照屏幕上的说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:

      # metainit volume-name -m submirror-name
      volume-name

      指定要创建的卷的名称。

      -m

      指定创建镜像。

      submirror-name

      指定将成为镜像中的第一个子镜像的组件的名称。在本示例中,为根分片所在的 RAID–0 卷。

  5. 重新挂载新镜像的文件系统。运行 metaroot volume-name 命令,使用已创建的镜像的名称替换 volume-name。然后,重新引导系统。
    # metaroot volume-name
    # reboot

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

  6. 使用以下格式的 metattach 命令附加第二个子镜像。
    # metattach volume-name submirror-name
    volume-name

    指定要向其添加子镜像的 RAID–1 卷的名称

    submirror-name

    指定将附加到该镜像的第二个子镜像的组件的名称

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

  7. 记录备用的引导路径。
    1. 确定备用根设备的路径。针对作为第二个子镜像附加到根 (/) 文件系统镜像的分片使用 ls -l 命令。
      # ls -l /dev/dsk/c1t1d0s0
      lrwxrwxrwx 1  root root  55 Mar 5 12:54  /dev/rdsk/c1t1d0s0 -> \ 
      ../../devices/sbus@1,f8000000/esp@1,200000/sd@3,0:a
    2. 记录 /devices 目录后面的字符串:/sbus@1,f8000000/esp@1,200000/sd@3,0:a

      注 - 由于系统可能会不可用,因此还应将这些信息记录在系统以外的某个位置。有关从备用引导设备引导的详细信息,请参见从引导问题中恢复


    3. 编辑该字符串,将主名称(在本例中为 sd)更改为 disk,产生的结果为 /sbus@1,f8000000/esp@1,200000/disk@3,0:a。如果系统使用 IDE 总线,则最初的全路径可能如下所示:
      $ ls -l /dev/dsk/c1t1d0s0 
      lrwxrwxrwx 1 root root 38 Mar 13 15:03 /dev/dsk/c0t0d0s0 -> \
      ../../devices/pci@1f,0/ide@d/dad@0,0:a

      将主名称 dad 更改为 disk 之后,将变为 /pci@1f,0/ide@d/disk@0,0:a

    4. 使用 OpenBoot PROM nvalias 命令为辅助根 (/) 文件系统镜像定义“备份根”设备别名。例如:
      ok  nvalias backup_root /sbus@1,f8000000/esp@1,200000/disk@3,0:a
    5. 重新定义 boot-device 别名,使其按照主子镜像和辅助子镜像的使用顺序来进行引用,并存储该配置。
      ok printenv boot-device
      boot-device =         disk net
      ok setenv boot-device disk backup_root net
      boot-device =         disk backup_root net
      ok nvstore

    注 - 如果主子镜像出现故障,系统将自动引导到第二个子镜像。或者,如果手动引导而不是使用自动引导,则可输入以下内容:

    ok boot backup_root

示例 11-6 SPARC:从根 (/) 文件系统创建镜像

# metainit -f d1 1 1 c0t0d0s0
d1: Concat/Stripe is setup
# metainit d2 1 1 c0t1d0s0
d2: Concat/Stripe is setup
# metainit d0 -m d1
d0: Mirror is setup
# metaroot d0
# lockfs -fa
# reboot
...
# metattach d0 d2
d0: Submirror d2 is attached
# ls -l /dev/dsk/c0t1d0s0
lrwxrwxrwx   1 root     root          88 Feb  8 15:51 /dev/rdsk/c1t3d0s0 ->
../../devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a
# init 0
.
.
.
ok nvalias backup_root /pci@1f,0/pci@1,1/ide@3/disk@0,0:a
ok setenv boot-device disk backup_root net
ok nvstore

在本示例中,-f 选项强制创建第一个 RAID–0 卷 d1,其中包含已挂载在 /dev/dsk/c0t0d0s0 上的根 (/) 文件系统。第二个串联 d2/dev/dsk/c0t1d0s0 创建。此分片的大小必须大于或等于 d1 的大小。带有 -m 选项的 metainit 命令使用根 (/) 所在的串联创建单向镜像 d0

接下来,使用 metaroot 命令编辑 /etc/vfstab/etc/system 文件,以便可以通过卷上的根 (/) 文件系统来引导系统。重新引导之前,最好先运行 lockfs -fa 命令。有关更多信息,请参见 lockfs(1M) 手册页。

在重新引导系统之前,请勿附加第二个子镜像。在运行 metaroot 命令之后、附加第二个子镜像之前,必须重新引导系统。

重新引导后,将子镜像 d2 附加到镜像,从而导致镜像重新同步。系统确认了串联和镜像均已设置,且子镜像 d2 已附加。

针对根原始设备运行了 ls -l 命令以确定指向备用根设备的路径,以备以后通过该路径引导系统。

x86: 从根 (/) 文件系统创建 RAID–1 卷

从 Solaris 10 1/06 发行版开始,GRand Unified Bootloader (GRUB) 取代了基于 x86 的系统中用于引导过程和配置的 Device Configuration Assistant (DCA)。有关此功能的简要说明,请参阅《Oracle Solaris 管理:基本管理》中的第 15  章 "基于 GRUB 的引导(参考)"

本节中的过程描述了从根 (/) 文件系统创建 RAID–1 卷的步骤。如果系统正在运行 Solaris 10 1/06 OS 或后续发行版,请按照第一个过程(使用 GRUB)进行操作。否则,请执行第二个过程(使用 DCA)中的步骤。

在基于 x86 的系统上镜像根 (/) 文件系统的过程与在 SPARC 系统上镜像根的过程类似。但是,在基于 x86 的系统上,BIOS 和 fdisk 分区会将事情变得更为复杂。

在本过程所使用的示例中,现有分片为 c1t0d0s0。第二个分片(c1t1d0s0)可用于镜像的另一半。子镜像分别为 d1d2,镜像为 d0


注 - 在实现任何过程之前,请查看创建 Solaris Volume Manager 组件的先决条件创建和维护 RAID-1 卷


x86: 如何使用 GRUB 从根 (/) 文件系统创建 RAID–1 卷

  1. 验证是否可将 BIOS 引导设备的顺序配置为允许系统从镜像中的第二个磁盘进行引导。

    启动内核之前,系统由只读存储器 (Read-Only-Memory, ROM) 基本输入/输出系统 (Basic Input/Output System, BIOS) 控制,该系统是基于 x86 的系统上的固件接口。BIOS 类似于基于 SPARC 的系统上的引导 PROM。以下是一些 BIOS 任务:

    • 执行启动功能。

    • 检测可从其引导系统的正确设备。

    • 从该设备装入主引导记录,以允许系统自行引导。

    通常可以配置 BIOS 以选择要探测其引导记录的设备的顺序。此外,现在实现的大多数 BIOS 都允许将设备配置为自动向辅助子镜像进行故障转移。如果您系统的 BIOS 不具备此功能,则主子镜像出现故障时,需要在系统引导过程中访问 BIOS,以便将系统重新配置为从辅助根分片引导。有关如何配置 BIOS 中的设置的说明,请参阅 BIOS 的用户指南。

    设置根镜像之前,请检查系统中的 BIOS,验证是否可以从多个磁盘引导。某些设备的驱动程序被配置为只能看到系统上的一个磁盘。

  2. 验证 fdisk 分区是否已配置为支持根镜像。

    如果镜像根 (/) 文件系统时存在一个单独的 x86 引导分区,则会出现问题。由于该引导分区位于 Solaris fdisk 分区之外,因此无法通过 Solaris Volume Manager 对 x86 引导分区进行镜像。此外,由于 x86 引导分区仅存在一个副本,因此会出现单点故障。

    Solaris 10 1/06 软件和后续发行版的基于 GRUB 的安装程序将不再自动创建 x86 引导分区。但是,如果系统中已经存在 x86 引导分区,则缺省情况下安装程序将保留该分区。

    要确定系统是否有单独的 x86 引导分区,请检查 /etc/vfstab 文件。如果该文件包含类似于以下的条目,则存在 x86 引导分区:

    /dev/dsk/c2t1d0p0:boot  -       /boot   pcfs    -       no      -

    要使用 Solaris Volume Manager 镜像根 (/) 文件系统,文件系统必须使用单个 Solaris fdisk 分区。因此,如果系统中已存在 x86 引导分区,请使用 fdisk 命令删除此分区,然后重新安装 Solaris 软件。重新安装时,将不再重新创建引导分区。


    注 - Solaris Volume Manager 只能镜像 Solaris fdisk 分区内的分片。如果您有多个 fdisk 分区,则需要使用其他方法保护 Solaris fdisk 分区以外的数据。


  3. 使辅助子镜像可以使用主引导程序进行引导。
    1. 指定主引导程序。
      # fdisk -b /usr/lib/fs/ufs/mboot /dev/rdsk/c1t1d0p0

      会出现以下屏幕:

                   Total disk size is 31035 cylinders
                   Cylinder size is 1146 (512 byte) blocks
      
                                                     Cylinders
            Partition   Status    Type          Start   End   Length    %
            =========   ======    ============  =====   ===   ======   ===
                1        Active   Solaris           1  31034    31034    100
      
      
      SELECT ONE OF THE FOLLOWING:
         1. Create a partition
         2. Specify the active partition
         3. Delete a partition
         4. Change between Solaris and Solaris2 Partition IDs
         5. Exit (update disk configuration and exit)
         6. Cancel (exit without updating disk configuration)
      Enter Selection: 
    2. 从菜单中选择数字 5,然后按回车键。
  4. 使辅助磁盘可引导。
    # /sbin/installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t1d0s0

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

  5. 确定要进行镜像的现有根 (/) 文件系统所在的分片。

    本示例使用分片 c1t0d0s0

  6. 在上一步中的分片上创建新的 RAID–0 卷。

    RAID–0 卷中只能包含这一个分片。使用以下方法之一:

    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)⇒ "Create Volume"(创建卷)。请按照屏幕上的说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:

      # metainit -f volume-name number-of-stripes components-per-stripe component-name
      -f

      强制继续执行该命令。如果分片包含已挂载的文件系统,则必须使用此选项。

      volume-name

      指定要创建的卷的名称。有关命名卷的信息,请参见卷名称

      number-of-stripes

      指定要创建的条带数。

      components-per-stripe

      指定每个条带应包含的组件数。

      component-names

      指定所使用的组件的名称。本示例使用根分片 c0t0d0s0

  7. 在未使用的分片上创建第二个 RAID–0 卷(本示例中为 c1t1d0s0),将其用作第二个子镜像。

    注 - 第二个子镜像的大小必须等于或大于原来子镜像的大小。此外,用作第二个子镜像的分片必须带有分片标记 "root",且根分片必须为分片 0。

    有关配置分片标记字段的信息,请参见 format(1M) 手册页。


    使用以下任一方法:

    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)-> "Create Volume"(创建卷),并按照屏幕上的说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:

      # metainit volume-name number-of-stripes components-per-stripes component-names

      注 - 有关各选项的相应说明,请参见步骤 6。


  8. 使用以下方法之一创建单向镜像:
    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)⇒ "Create Volume"(创建卷)。请按照屏幕上的说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:

      # metainit volume-name -m submirror-name
      volume-name

      指定要创建的卷的名称。

      -m

      指定创建镜像。

      submirror-name

      指定将成为镜像中的第一个子镜像的组件的名称。在本示例中,为根分片所在的 RAID–0 卷。

  9. 重新挂载新镜像的文件系统,然后重新引导系统。
    # metaroot volume-name
    # reboot

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

  10. 附加第二个子镜像。
    # metattach volume-name submirror-name
    volume-name

    指定要向其添加子镜像的 RAID–1 卷的名称。

    submirror-name

    定将附加到该镜像的第二个子镜像的组件的名称。

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

  11. menu.lst 文件中定义备用引导路径。

    要使系统可从用来存放辅助子镜像的磁盘进行引导,请将系统配置为将该磁盘视为备用引导设备。在当前示例中,备用路径 c1t1d0s0 位于第二个磁盘的第一个 fdisk 分区的第一个分片中。因此,应编辑包含以下条目的 menu.lst

    title alternate boot
     root (hd1,0,a)
     kernel /boot/multiboot
     module /boot/x86.miniroot-safe

    注 - 要正确编辑 menu.lst 中的条目,您必须熟悉 GRUB 中的磁盘命名约定。有关详细信息,请参见《Oracle Solaris 管理:基本管理》中的"使用 GRUB 引导基于 x86 的系统(任务列表)"


    编辑完 menu.lst 文件之后,系统将设置为故障转移到第二个磁盘。如果主磁盘出现故障,则磁盘编号会更改,以便系统从辅助磁盘引导。


    注意

    注意 - 在某些情况下,BIOS 的磁盘自动重新编号功能可能会影响从不可用的主磁盘进行恢复。当磁盘重新编号功能强制系统从辅助磁盘引导时,主磁盘的引导归档文件将过时。如果该主磁盘稍后变为可用,则引导系统时磁盘编号功能将再次切换到使用缺省主磁盘引导系统。但是,此时主磁盘的引导归档文件仍处于过时状态。因此,系统可能无法引导。所以,在这种情况下,请确保从 GRUB 菜单中选择正确的项,以便从有效的引导归档文件引导系统。系统完成引导过程后,请执行常规的 metadevice 维护,这会对主磁盘和辅助磁盘均进行同步,并将有效的引导归档文件恢复到主磁盘。


x86: 如何使用 DCA 从根 (/) 文件系统创建 RAID–1 卷

  1. 验证是否可将 BIOS 引导设备的顺序配置为允许系统从镜像中的第二个磁盘进行引导。

    启动内核之前,系统由只读存储器 (Read-Only-Memory, ROM) 基本输入/输出系统 (Basic Input/Output System, BIOS) 控制,该系统是基于 x86 的系统上的固件接口。BIOS 类似于基于 SPARC 的系统上的引导 PROM。除了其他启动功能以外,BIOS 还负责查找要从其引导系统的正确设备,以及从允许系统自行引导的设备中装入主引导记录。通常可以配置 BIOS 以选择要探测其引导记录的设备的顺序。此外,现在实现的大多数 BIOS 都允许将设备配置为自动向辅助子镜像进行故障转移。如果系统不具备此功能,则主子镜像出现故障时,需要在系统引导过程中访问 BIOS,并将其重新配置为从辅助根分片进行引导。有关如何配置 BIOS 中的设置的说明,请参阅 BIOS 的用户指南。

    可以在系统中使用 DCA 验证是否可以从多个磁盘引导。某些设备的驱动程序被配置为只能看到系统上的一个磁盘。

  2. 验证 fdisk 分区是否已配置为支持根镜像。

    基于 x86 的系统的另一个功能是可使用 fdisk 分区。使用 Solaris OS 安装程序的缺省引导磁盘分区布局将创建一个 Solaris fdisk 分区和另一个大小大约为 10 MB、称为 x86 引导分区的小型 fdisk 分区。

    对根 (/) 文件系统进行镜像时,x86 引导分区会产生问题。x86 引导分区位于 Solaris fdisk 分区以外的位置。出于这个原因,x86 引导分区无法通过 Solaris Volume Manager 进行镜像。此外,由于 x86 引导分区仅存在一个副本,因此会出现单点故障。

    可以确定 Solaris OS 是否具有单独的 x86 引导分区。x86 引导分区会通过类似如下的条目挂载到 /etc/vfstab 文件中:

    /dev/dsk/c2t1d0p0:boot  -       /boot   pcfs    -       no      -

    如果不存在单独的 x86 引导分区,则 /etc/vfstab 文件中将不会显示此条目。

    要镜像根 (/) 文件系统,需要定制 fdisk 分区来删除 x86 引导分区,然后使用单个 Solaris fdisk 分区。如果要使用 Solaris Volume Manager 根镜像,请勿在系统安装过程中创建单独的 x86 引导分区。如果已安装系统并创建了单独的 x86 引导分区,请使用 fdisk 命令删除该 fdisk 分区并重新安装系统。安装时,请避免通过在安装过程中定制磁盘分区来创建单独的 x86 引导分区。


    注 - Solaris Volume Manager 只能镜像 Solaris fdisk 分区内的分片。如果您有多个 fdisk 分区,则需要使用其他方法保护 Solaris fdisk 分区以外的数据。


  3. 使辅助子镜像可以使用主引导程序进行引导。
    1. 使用 fdisk 命令指定主引导程序。
      # fdisk -b /usr/lib/fs/ufs/mboot /dev/rdsk/c1t1d0p0

      会出现以下屏幕:

                   Total disk size is 31035 cylinders
                   Cylinder size is 1146 (512 byte) blocks
      
                                                     Cylinders
            Partition   Status    Type          Start   End   Length    %
            =========   ======    ============  =====   ===   ======   ===
                1        Active   Solaris           1  31034    31034    100
      
      
      SELECT ONE OF THE FOLLOWING:
         1. Create a partition
         2. Specify the active partition
         3. Delete a partition
         4. Change between Solaris and Solaris2 Partition IDs
         5. Exit (update disk configuration and exit)
         6. Cancel (exit without updating disk configuration)
      Enter Selection: 
    2. 从菜单中选择数字 5,然后按回车键。
  4. 在辅助子镜像中安装引导块,以便可从该镜像引导系统。

    辅助子镜像所驻留的磁盘中的分片 8 是从此 fdisk 分区引导 Solaris OS 所必需的。此分片包含分区引导记录 (pboot)、磁盘的 Solaris VTOC 和 引导块。这些信息是特定于磁盘的信息,因此不能使用 Solaris Volume Manager 进行镜像。但是,必须确保这两个磁盘都是可引导的,以便可以在主磁盘出现故障时从辅助磁盘引导。使用 installboot 命令可将第二个磁盘设置为 Solaris 可引导磁盘。有关更多信息,请参见 installboot(1M) 手册页。

    必须将该磁盘的分片 2 指定为设备,且分片 2 必须构成整个磁盘。

    # installboot /usr/platform/i86pc/lib/fs/ufs/pboot \
    /usr/platform/i86pc/lib/fs/ufs/bootblk /dev/rdsk/c1t1d0s2
  5. 确定要进行镜像的现有根 (/) 文件系统所在的分片。本示例使用分片 c1t0d0s0
  6. 通过以下方法之一,在上一步的分片上创建新的 RAID–0 卷。RAID–0 卷中只能包含这一个分片。
    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)⇒ "Create Volume"(创建卷)。请按照屏幕上的说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:

      # metainit -f volume-name number-of-stripes components-per-stripe component-name
      -f

      强制继续执行该命令。如果分片包含已挂载的文件系统,则必须使用此选项。

      volume-name

      指定要创建的卷的名称。有关命名卷的信息,请参见卷名称

      number-of-stripes

      指定要创建的条带数。

      components-per-stripe

      指定每个条带应包含的组件数。

      component-names

      指定所使用的组件的名称。本示例使用根分片 c0t0d0s0

  7. 在未使用的分片(本示例中为 c1t1d0s0)上创建另一个 RAID–0 卷,将其用作第二个子镜像。第二个子镜像的大小必须等于或大于原来子镜像的大小。使用以下方法之一:

    注 - 用作第二个子镜像的分片必须带有分片标记 "root",且根分片必须为分片 0。有关配置分片标记字段的信息,请参见 format(1M) 手册页。


    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)-> "Create Volume"(创建卷),并按照屏幕上的说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:

      # metainit volume-name number-of-stripes components-per-stripes component-names

      注 - 有关各选项的相应说明,请参见步骤 6。


  8. 使用以下方法之一创建单向镜像:
    • 在 Solaris Management Console 中增强的存储工具中,打开 "Volumes"(卷)节点,然后选择 "Action"(操作)⇒ "Create Volume"(创建卷)。请按照屏幕上的说明进行操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:

      # metainit volume-name -m submirror-name
      volume-name

      指定要创建的卷的名称。

      -m

      指定创建镜像。

      submirror-name

      指定将成为镜像中的第一个子镜像的组件的名称。在本示例中,为根分片所在的 RAID–0 卷。

  9. 重新挂载新镜像的文件系统。运行 metaroot volume-name 命令,使用已创建的镜像的名称替换 volume-name。然后,重新引导系统。
    # metaroot volume-name
    # reboot

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

  10. 使用以下格式的 metattach 命令附加第二个子镜像。
    # metattach volume-name submirror-name
    volume-name

    指定要向其添加子镜像的 RAID–1 卷的名称。

    submirror-name

    定将附加到该镜像的第二个子镜像的组件的名称。

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

  11. 记录备用的引导路径。

    您需要配置系统,以便在主子镜像出现故障的情况下从辅助子镜像引导系统。要使系统可从用来存放辅助子镜像的磁盘进行引导,请将系统配置为将该磁盘视为备用引导设备。

    1. 确定备用引导设备的路径。针对作为第二个子镜像附加到根 (/) 文件系统镜像的分片使用 ls -l 命令。
      # ls -l /dev/dsk/c1t1d0s0
      lrwxrwxrwx 1  root root  55 Mar 5 12:54  /dev/rdsk/c1t1d0s0 -> ../.
      ./devices/eisa/eha@1000,0/cmdk@1,0:a
    2. 记录 /devices 目录后面的字符串:/eisa/eha@1000,0/cmdk@1,0:a。这是设备树路径。

      注 - 由于系统可能会不可用,因此应将这些信息记录在系统以外的某个位置。如果必须使用 DCA 引导系统,这样可使您更轻松地输入设备树路径信息。


    3. 使用 eeprom 命令定义备用引导路径。例如:
      # eeprom altbootpath=/eisa/eha@1000,0/cmdk@1,0:a

      如果主子镜像出现故障,则系统将尝试从辅助子镜像引导。如果可将 BIOS 配置为自动故障转移到第二个磁盘,则引导过程将是自动的。否则,需要进入 BIOS 并将其配置为从辅助磁盘引导。系统开始引导后,将尝试从 bootpath 设备引导。由于主引导磁盘是根镜像中的停用磁盘,因此系统随后会尝试从 altbootpath 设备引导。有关如何配置 BIOS 中的设置的说明,请参阅 BIOS 的用户指南。

      如果系统没有自动进行引导,则可以尝试使用 DCA 来选择辅助子镜像。在某些系统中,可以选择在引导过程中进入 DCA。如果此选项不可用,则需要从 x86 引导软盘引导,然后使用 DCA 来选择辅助子镜像。操作系统引导之后,请使用设置为备用引导路径的值(altbootpath 值)来更新 eeprom bootpath 值。然后,系统将自动引导。

      有关使用 eeprom 命令的更多信息,请参见 eeprom(1M) 手册页。

示例 11-7 x86:使用 DCA 从根 (/) 文件系统创建镜像

# metainit -f d1 1 1 c0t0d0s0
d1: Concat/Stripe is setup
# metainit d2 1 1 c0t1d0s0
d2: Concat/Stripe is setup
# metainit d0 -m d1
d0: Mirror is setup
# metaroot d0
# lockfs -fa
# reboot
...
# metattach d0 d2
d0: Submirror d2 is attached
# ls -l /dev/dsk/c0t1d0s0
lrwxrwxrwx   1 root     root          88 Feb  8 15:51 /dev/dsk/c1t3d0s0 ->
../../devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a,raw
# eeprom altbootpath=/pci@1f,0/pci@1,1/ide@3/dad@0,0:a,raw
# fdisk -b /usr/lib/fs/ufs/mboot /dev/dsk/c0t1d0p0
             Total disk size is 31035 cylinders
             Cylinder size is 1146 (512 byte) blocks

                                               Cylinders
      Partition   Status    Type          Start   End   Length    %
      =========   ======    ============  =====   ===   ======   ===
          1        Active   Solaris           1  31034    31034    100


SELECT ONE OF THE FOLLOWING:
   1. Create a partition
   2. Specify the active partition
   3. Delete a partition
   4. Change between Solaris and Solaris2 Partition IDs
   5. Exit (update disk configuration and exit)
   6. Cancel (exit without updating disk configuration)
Enter Selection: 5
# installboot /usr/platform/i86pc/lib/fs/ufs/pboot \
/usr/platform/i86pc/lib/fs/ufs/bootblk /dev/rdsk/c0t1d0s2

了解镜像根 (/) 文件系统时出现的引导时警告

镜像根 (/) 文件系统后,控制台中将会显示错误消息,这些错误消息将记录在 /etc/syslog.conf 文件中所定义的系统日志中。这些错误消息并不表示存在问题。针对当前未使用的每种设备类型,都会显示这些消息,因为不能强制装入未使用的模块。错误消息可能与以下内容类似:

Jul 13 10:17:42 ifr genunix: [ID 370176 kern.warning] WARNING: forceload of 
    misc/md_trans failed
Jul 13 10:17:42 ifr genunix: [ID 370176 kern.warning] WARNING: forceload of 
    misc/md_raid failed
Jul 13 10:17:42 ifr genunix: [ID 370176 kern.warning] WARNING: forceload of 
    misc/md_hotspares failed

您可以放心地忽略这些错误消息。