验证是否可将 BIOS 引导设备的顺序配置为允许系统从镜像中的第二块磁盘引导。
启动内核之前,系统由只读存储器 (read-only-memory, ROM) 基本输入/输出系统 (Basic Input/Output System, BIOS) 控制,该系统是基于 x86 的系统上的固件接口。BIOS 与基于 SPARC 的系统上的引导 PROM 类似。以下是一些 BIOS 任务:
执行启动功能。
检测可从中引导系统的正确设备。
从该设备装入主引导记录,以允许系统自行引导。
通常可以将 BIOS 配置为选择要探测其引导记录的设备的顺序。此外,现在实现的大多数 BIOS 都允许将设备配置为自动向辅助子镜像进行故障转移。如果系统的 BIOS 没有此功能,则主子镜像失败时,需要在系统引导过程中访问 BIOS,以便将系统重新配置为从辅助根片引导。有关如何配置 BIOS 中的设置的说明,请查阅 BIOS 的用户指南。
设置根镜像之前,请检查系统上的 BIOS,验证是否可以从多块磁盘引导。某些设备驱动程序配置为只能看到系统上的一个磁盘。
验证 fdisk 分区是否配置为支持根镜像。
如果对根 (/) 文件系统进行镜像时存在单独的 x86 引导分区,则会出现问题。因为 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 分区以外的数据。
使辅助子镜像可以使用主引导程序引导。
指定主引导程序。
# 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: |
从菜单中选择数字 5,然后按回车键。
使辅助磁盘可引导。
# /sbin/installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t1d0s0 |
有关 installgrub 的更多信息,请参阅 installgrub(1M) 手册页。
确定包含要进行镜像的现有根 (/) 文件系统的片。
本示例使用 c1t0d0s0 片。
在上一步中的片上创建一个新的 RAID-0 卷。
RAID-0 卷中只能包含一个片。请使用以下方法之一:
从 Solaris Management Console 中增强的存储工具中,打开“卷”节点,然后选择“操作”⇒“创建卷”。请按照屏幕上的说明操作。有关更多信息,请参见联机帮助。
使用以下格式的 metainit 命令:
# metainit -f volume-name number-of-stripes components-per-stripe component-name |
强制继续执行该命令。如果片中包含已挂载的文件系统,则必须使用此选项。
指定要创建的卷的名称。有关对卷进行命名的信息,请参见卷名称。
指定要创建的条带的数目。
指定每个条带应包含的组件的数目。
指定所使用的组件的名称。本示例使用根片 c0t0d0s0。
在未使用的片(在本示例中为 c1t1d0s0)上创建另一个 RAID-0 卷,将其用作第二个子镜像。
辅助子镜像不得小于原来的子镜像的大小。另外,用作第二个子镜像的片还必须带有片标记 "root",并且根片必须是片 0。
有关配置片标记字段的信息,请参见 format(1M) 手册页。
请使用以下任一方法:
从 Solaris Management Console 中增强的存储工具中,打开“卷”节点,然后选择“操作”->“创建卷”并按照屏幕上的说明操作。有关更多信息,请参见联机帮助。
使用以下格式的 metainit 命令:
# metainit volume-name number-of-stripes components-per-stripes component-names |
有关这些选项的说明,请参见步骤 6。
使用以下方法之一创建单向镜像:
重新挂载刚进行镜像的文件系统,然后重新引导系统。
# metaroot volume-name # reboot |
有关更多信息,请参见 metaroot(1M) 手册页。
# metattach volume-name submirror-name |
指定要向其中添加子镜像的 RAID-1 卷的名称。
指定将成为附加到该镜像的第二个子镜像的组件的名称。
有关更多信息,请参见 metattach(1M) 手册页。
在 menu.lst 文件中定义替代引导路径。
要使系统可从用来存放辅助子镜像的磁盘引导,请将系统配置为将该磁盘视为备用引导设备。在当前示例中,替代路径 c1t1d0s0 位于第二块磁盘上第一个 fdisk 分区的第一片。因此,可以编辑 menu.lst 中的以下项:
title alternate boot root (hd1,0,a) kernel /boot/multiboot module /boot/x86.miniroot-safe |
要正确编辑 menu.lst 中的各项,必须熟悉 GRUB 中的磁盘命名约定。有关详细信息,请参见《系统管理指南:基本管理》中的第 11 章 “基于 GRUB 的引导(任务)”。
完成编辑 menu.lst 文件之后,系统会设置为向第二块磁盘进行故障转移。如果主磁盘出现故障,则磁盘编号会更改,以便系统从辅助磁盘引导。
在某些情况下,BIOS 的自动磁盘重新编号功能可能会对从不可用的主磁盘进行恢复造成影响。当磁盘重新编号功能强制系统从辅助磁盘引导时,主磁盘的引导归档会过时。如果该主磁盘以后变为可用,则在引导系统时,磁盘重新编号功能会再次切换到从缺省的主磁盘进行系统引导。但是,在这个阶段,主磁盘的引导归档仍然是过时的。因此,系统可能根本无法引导。所以在这种情况下,请确保从 GRUB 菜单中选择正确的项,以便从有效的根归档中引导系统。系统完成引导过程之后,请执行常规的 metadevice 维护,这会对主磁盘和辅助磁盘均进行同步,并将有效的引导归档恢复到主磁盘。