用SDS制作磁盘镜像
Solaris逻辑卷面管理(SVM),一般是指Solstice Disksuite(SDS)软件,它可以把磁盘系统做成RAID 0, 1, 0+1或5。工作站最感兴趣的方式是RAID 1:为磁盘错误准备好了一个包含启动文件系统的磁盘镜像。
SVM是Solaris 9系统环境的一部分。在Solaris 8平台上,你可以在第二章光盘的“EA”目录下找到SDS软件。而在Solaris 7或者2.6系统环境中,服务器版,你可以查找一下光盘“Easy Access Server”。
我们假定一个工作站有两块内部的磁盘,c0t0d0和c0t1d0。这两块盘都以相同的方式被正确的分区:分区0被分配给/(root),分区1被分配给交换区(swap),一个比较小的分区7被分配用来记录复制数据库(State Replica Databases)。分区2被定义成一个备份区(参见“分区”一章)。
把第一块盘的分区信息复制到第二块盘,可以用如下的命令:
# prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
记录复制数据库是一个包含了镜像信息纪录的小文件。镜像中的每个磁盘都必须知道有三个记录复制数据库文件:
# metadb -a -f -c 3 c0t0d0s3 c0t1d0s3
下一步,在第一块磁盘上创建第一个子镜像,它包含了启动文件系统:
# metainit -f d50 1 1 c0t0d0s0
然后在第二块磁盘上创建第二个子镜像:
# metainit d52 1 1 c0t1d0s0
使用第一个子镜像创建镜像的第一个部分:
# metainit d54 -m d50
用metaroot修改/etc/vfstab和/etc/system,让系统可以从元设备(metadevice)d54上启动:
# metaroot d54
重新启动系统,然后将添加第二个子镜像d54。这就强制了“镜像同步”,将第一块盘的内容复制到了第二块盘。这将在一小段时间内影响系统的性能。
# metattach d54 d52
为了避免在从第二块盘上紧急启动时发生错误信息,交换分区必须做成相同样式的镜像。否则,交换分区在损坏的磁盘上,/etc/vfstab仍然会定位到c0t0d0s1。
现在系统已经可以从第一块盘(boot disk),也可以从第二块盘(boot disk1)上启动了。
如果有一块磁盘损坏,Solstice DiskSuite会停止启动程序。这是因为如果要在一次错误以后成功地启动系统,纪录复制数据库的大部分必须依然“幸存”。在我们的两块镜像盘上仅仅需要六个复制中的三个依然存活。
超过两块盘的服务需要有第三块盘来用记录复制数据库来配置。两块盘的工作站必须手动地修复,下面的例子描述了这个过程:
·记录数据库复制在c0t0d0s7和c0t1d0s7上配置,c0t0d0盘发生故障。
·启动程序被Solstice DiskSuite停止,并转换进入到单用户模式。
·现在记录数据库复制希望发生错误的盘没有被配置:
metadb -d -f c0t0d0s7
·在下一次重启之后,对重置的磁盘进行分区,使它和仍然活动的磁盘的分区一致。
·做完这些之后,在重置的硬盘上创建记录数据库复制文件:
metadb -a -c 3 c0t0d0s7
·在下次的重启之后,镜像又可以重新同步了。
注意:
如果你有一个两块盘的系统,在一块盘上创建三个记录数据库复制,在另一块上面创建四个。在理论上有50%的机会可以在一次错误后重新启动系统而不需要手动地去使用元数据。
如果你能接受在2盘系统下发生错误后无人职守的重启,在两块盘上创建相同数量的记录数据库复制并且创建/etc/system条目:
set md:mirrored_root_flag=1
关于这方面内容更多的讨论可以在Sun的蓝皮书“Configuring Boot Disks With Solaris[tm] Volume Manager Software"()上找到。
在后续中我会将贴出更详细的过程。(自己实验自己贴)
阅读(584) | 评论(0) | 转发(0) |