镜像是一种许多公司和家庭用户使用的不需中断的备份技术。 当存在镜像时, 它的意思是说 磁盘B 简单地复制 磁盘A。 或者, 也可能是 磁盘C+D 复制 磁盘A+B。 无论磁盘如何配置, 共同的特征, 都是磁盘或卷的信息会被复制。 随后,在无需中断服务或访问的情况下, 可以很容易地复原和备份这些信息, 甚至把它们存储到其他更安全的地方。
要开始做这件事, 首先要确保系统中有两个同样大的磁盘驱动器, 下面的例子假定使用直接访问方式 (Direct Access, da(4)) SCSI 的磁盘。
首先需要把 FreeBSD 安装到第一块磁盘上, 并建立两个分区。 第一个分区将成为交换区, 其尺寸应该是两倍的 RAM 尺寸, 而余下的空间, 则作为根 (/) 文件系统来使用。 当然, 也可以为其他挂接点划分不同的分区; 但是, 这将使难度提高一个量级, 因为您将不得不手工修改 bsdlabel(8) 和 fdisk(8) 的设置。
重新启动系统, 并等待其完全初始化完。 当这个过程完成之后, 以 root 用户的身份登录。
创建 /dev/mirror/gm 设备, 并将其连接到 /dev/da1:
# gmirror label -vnb round-robin gm0 /dev/da1
系统应会给出下列回应:
Metadata value stored on /dev/da1. Done.
初始化 GEOM, 这将加载 /boot/kernel/geom_mirror.ko 内核模块:
# gmirror load
注意: 这个命令应该会在 /dev/mirror 目录中创建 gm0 设备节点。
安装通用的 fdisk 标签以及引导区代码, 到刚刚创建的 gm0 设备上:
# fdisk -vBI /dev/mirror/gm0
接下来安装通用的 bsdlabel 信息:
# bsdlabel -wB /dev/mirror/gm0s1
注意: 如果存在多个区段 (slice) 或分区 (partition), 则需要修改一部分上面命令的参数。 它们必须与另一个盘上对应的区段和分区匹配。
使用 newfs(8) 工具来, 在 gm0s1a 设备节点上创建默认的文件系统:
# newfs -U /dev/mirror/gm0s1a
这将让系统输出很多信息和一系列数字。 不必为此担心, 只需看看是否有错误提示就可以了, 如果没问题, 接下来把它挂到 /mnt 挂接点上面:
# mount /dev/mirror/gm0s1a /mnt
现在需要把所有引导盘上的数据迁移到新的文件系统上了。 下面的例子使用了 dump(8) 和 restore(8) 这两个命令; 不过, 用 dd(1) 在这里也可以达到完全一样的目的。
# dump -L -0 -f- / |(cd /mnt && restore -r -v -f-)
这个操作必须在所有文件系统上都作一遍。 您可以将前述命令中的文件系统, 改为所希望的文件系统的位置。
接下来应该编辑复制出来的 /mnt/etc/fstab 文件, 并删去或注释掉交换文件 [1]。 修改其他文件系统对应的信息, 以便让它们使用新盘。 参考下面的例子:
# Device Mountpoint FStype Options Dump Pass# #/dev/da0s2b none swap sw 0 0 /dev/mirror/gm0s1a / ufs rw 1 1
接下来需要建一个 boot.conf 文件, 在当前和新盘的根分区上各放一份。 这个文件将 “帮助” 系统的 BIOS 从正确的驱动器上引导:
# echo "1:da(1,a)/boot/loader" > /boot.config
# echo "1:da(1,a)/boot/loader" > /mnt/boot.config
注意: 在所有的分区上都放这些是为了保证系统能够正确引导。 如果由于某种原因系统无法从新的根分区读数据, 则还有一根救命稻草。
接下来, 在 /boot/loader.conf 中加入一些新的设置:
# echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf
这将让 loader(8) 在系统初始化过程中自动加载 geom_mirror.ko 模块。
最后重新启动系统:
# shutdown -r now
如果一切顺利, 系统将从 gm0s1a 设备启动, 并给出 login 提示等待用户登录。 如果发生错误, 请查阅接下来的故障排除环节。 我们接着将 da0 磁盘也加入 gm0 设备:
# gmirror configure -a gm0 # gmirror insert gm0 /dev/da0
此处 -a
告诉 gmirror(8)
采用自动同步, 或换言之: 自动地将磁盘的写操作做镜像处理。 联机手册中详细解释了如何重建,
以及替换磁盘, 只不过它用 data 表示这里的 gm0。
如果系统引导时出现类似下面的提示:
ffs_mountroot: can't find rootvp Root mount failed: 6 mountroot>
这种情况应使用电源或复位按钮重启机器。 在引导菜单中, 选择第六 (6) 个选项。 这将让系统进入 loader(8) 提示符。 在此处手工加载内核模块:
OK? load geom_mirror.ko OK? boot
如果这样做能解决问题, 则说明由于某种原因模块没有被正确加载。 可以通过在内核配置文件中加入:
options GEOM_MIRROR
然后重新编译和安装内核来解决这个问题。
[1] |
需要注意的是, 在 fstab 注释掉交换文件, 通常会需要您以其他方式重建交换空间。 请参见 第 11.14 节 以了解进一步的细节。 |
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<[email protected]>.
关于本文档的问题请发信联系 <[email protected]>.