对 SPARC 平台上的根 (/) 文件系统进行镜像的过程与对无法取消挂载的其他任何文件系统进行镜像的过程相似,区别在于前者运行 metaroot 命令,而不是手动编辑 /etc/vfstab 文件。对根 (/) 文件系统进行镜像还需要记录备用引导设备的路径。如果子镜像失败,此设备会重新引导系统。
在本过程使用的示例中,现有的片是 c1t0d0s0。第二个片 c1t1d0s0 适用于镜像的另一半。子镜像分别是 d1 和 d2,镜像是 d0。
请确保使用 metainit 命令创建单向镜像,然后使用 metattach 命令附加其他子镜像。如果不使用 metattach 命令,则不会执行重新同步操作。因此,当 Solaris Volume Manager 假定镜像的两面相同并且可以互换使用时,数据可能会损坏。
请查看创建 Solaris Volume Manager 组件的先决条件和创建和维护 RAID-1 卷。
确定包含要进行镜像的现有根 (/) 文件系统的片。本示例使用片 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 卷,将其用作第二个子镜像。辅助子镜像不得小于原来的子镜像的大小。请使用以下方法之一:
从 Solaris Management Console 中增强的存储工具中,打开“卷”节点,然后选择“操作”->“创建卷”并按照屏幕上的说明操作。有关更多信息,请参见联机帮助。
使用以下格式的 metainit 命令:
# metainit volume-name number-of-stripes components-per-stripe component-name |
有关这些选项的说明,请参见步骤 2。
使用以下方法之一创建单向镜像:
重新挂载刚进行镜像的文件系统。运行 metaroot volume-name 命令,将 volume-name 替换为已创建的镜像的名称。然后重新引导系统。
# metaroot volume-name # reboot |
有关更多信息,请参见 metaroot(1M) 手册页。
# metattach volume-name submirror-name |
指定要向其中添加子镜像的 RAID-1 卷的名称
指定将成为附加到该镜像的第二个子镜像的组件的名称
有关更多信息,请参见 metattach(1M) 手册页。
记录替代引导路径。
确定备用根设备的路径。针对附加作为根 (/) 文件系统镜像的第二个子镜像的片,使用 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 |
记录 /devices 目录后面的字符串:/sbus@1,f8000000/esp@1,200000/sd@3,0:a。
由于系统可能不可用,因此还应当将这些信息记录在系统以外的某个位置。有关从备用引导设备引导的详细信息,请参见从引导问题中恢复。
编辑该字符串,将主名称(在本示例中为 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
使用 OpenBootTM PROM nvalias 命令为辅助根 (/) 文件系统镜像定义“备份根”设备别名。例如:
ok nvalias backup_root /sbus@1,f8000000/esp@1,200000/disk@3,0:a |
重新定义 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 |
# 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 命令,以确定备用根设备的路径,以备系统以后通过该路径进行引导。