Solaris 10 U6 版本起就实现了ZFS 引导,并且支持多个系统盘(正确的说是ZFS Root Pool成员设备)的镜像配置(Mirror) 和磁盘的热插拔。

实际上,为了实现GRUB对系统的引导,solaris 10 使用传统UFS文件系统的磁盘分区方式,默认的将整个磁盘创建一个Solaris2 格式的分区,并使用盘片0作为ZFS 根存储池(root pool)的成员设备.

而且和其他操作系统级的LVM相比有一个很大的特色,就是ZFS 支持超过2个盘的镜像(mirror )配置,这一特色可以显著的降低系统盘损坏导致系统当机的概率,但是真的发生某个系统盘损坏的时候,我们还是应该及时的更换新的硬盘。

 

下面是 ZFS Root Pool 换盘操作的具体方法:

插上新盘后,如果换上的新盘连接的控制器号和SCSI接口通道号优先于好的系统盘,
如我要替换c1t0d0(SCSI 0:0),新盘接在c1t1d0(SCSI 0:1) ,好的系统盘是c2t0d0(SCSI 1:0),
则首先要进BIOS修改启动设备顺序,使SCSI 1:0 成为最有先的启动设备。

SPARC 平台下在ok 模式中使用 boot  命令,手动指定从好的系统盘启动,比如
boot disk1 //假设坏盘是disk0 

root 登入系统后

首先运行 devfsadm ,使系统识别到新加的硬盘。

新磁盘初始准备

ZFS Root pool (rpool) 换盘需要对新硬盘进行分区;

使用 format>fdisk 使用默认值,使用全盘容量创建一个Solaris分区;

使用 format>partition 使用盘片0 创建1个root 盘区。//(参见format>virfly 好的系统盘的盘片划分情况)

patrtion>lable 标记磁盘,使用默认值 //选项【0】

partition>name 命名分区表//名字任意

format>save 保存分区设置 ,然后退出format程序;

替换ZFS Root pool 中损坏的设备

zpool replace rpool c1t0d0s0 c1t1d0s0  

//c1t0d0 损坏的硬盘 c1t0d0 是新盘

安装引导环境#installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t0d0s0

SPARC 平台下使用installboot 命令来安装引导环境,如:
installboot -F zfs /usr/platform/uname -i /lib/fs/zfs/bootblk /dev/rdsk/c0t0d0s0 

 喜欢看图解教程的朋友请参见: ZFS Root Pool 换盘全程图解