全部博文(212)
分类:
2006-05-30 09:38:40
虽然硬盘故障不经常发生,但每次出现都是致命的,此时如何将影响降至最小,并尽快恢复系统运行就是系统维护人员最急于解决的问题。不久前笔者遭遇了一次硬盘故障,最终顺利地解决了这次危机,在此把恢复过程介绍给读者。
本文涉及的系统共有3台Compag Alpha 4000小型机,运行OSF 4.0E和Trucluster 1.5, 其中两台运行Oracle 7.3.4.5.0 OPS, 另一台运行Oracle 7.3.4.5.0 Standby数据库,发生故障的主机为后一台。
故障表现
发生故障的小型机表现为自动重启,查看/var/adm/messages发现本地盘有大量的I/O错误。经诊断确认是本地盘硬件错误,需更换新的硬盘。
如果采用重新安装OSF 4.0E、Trucluster 1.5、Oracle 7.3.4.5.0以及对应的补丁,再配置主机、网络、Trucluster等,顺利的话,至少需要2天的时间。考虑到Unix系统最近一次磁带备份后,操作系统并未做配置上的改变,于是决定用备份磁带以争取在最短的时间内恢复、减少业务影响, 下面是恢复步骤。
备份现有系统
该机文件系统是advfs(如果是ufs,则要用dump备份),备份系统按如下方式操作:
1. 以超级用户身份登录系统:
root_domain#root /
usr_domain#usr /usr
oracle_domain#oracle_fset /usr1
2. 切换系统进入单用户模式:
# shutdown now
3. “mount”所有盘:
# mount -a
4. 放进空磁带:
# vdump -0vf /dev/nrmt0h /
# vdump -0vf /dev/nrmt0h /usr
# vdump -0vf /dev/nrmt0h /usr1
5. 取出磁带,做好标记,重新启动系统:
# shutdown -r now
检查当前环境、备份license
license很关键,需要小心备份:
1.备份/var/adm/lmf/ldb文件;
2.查看现有文件系统:
#df -k
3. 查看filedomain:
# showfdmn root_domain
# showfdmn oracle_domain
# showfdmn usr_domain
4. 查看disklabel:
#disklabel -r rz8
插上新盘、进行分区
假设新盘为rz12,写入标签和引导标志:
#disklabel -rw -t advfs rz12 18g_disk
进行分区,要保证和原有系统分区一样,或者采用更大的分区:
#diskconfig
用备份磁带恢复
拔掉坏的硬盘,把新盘插在原来故障盘的位置。用Unix的操作系统光盘启动系统,进入命令模式:
#cd /dev
#./MAKEDEV rz8
# /sbin/mkfdmn /dev/rz8a root_domain
# /sbin/mkfset root_domain root
# /sbin/mkfdmn /dev/rz8d usr_domain
# /sbin/mkfset usr_domain usr
# /sbin/mkfdmn /dev/rz8e oracle_domain
# /sbin/mkfset oracle_domain oracle_fset
# cd /dev
假设tz6为磁带的Unix设备名,生成磁带设备名:
# ./MAKEDEV tz6
# cd /
放进备份磁带:
# mount -t advfs root_domain#root /mnt
# cd /mnt
# /sbin/vrestore -xvf /dev/nrmt0h
# cd /
# umount /mnt
# mount -t advfs usr_domain#usr /mnt
# cd /mnt
# /sbin/vrestore -xvf /dev/nrmt0h
# cd /
# umount /mnt
# mount -t advfs oracle_domain#oracle_fset /mnt
# cd /mnt
# /sbin/vrestore -xvf /dev/nrmt0h
# cd /
# umount /mnt
完成上述工作后,重启系统,然后用备份的“ldb”文件恢复license。至此,硬盘恢复最终完成。
结束语
要想让系统具有更高的可用性,需要在现有财力和可用性要求之间选择一个平衡点,对于本文的情况,如果读者业务系统本地盘有RAID控制器的话,建议做成RAID 1镜像本地盘,另外,除了制定完备的数据库备份策略外,还应定期做好Unix系统的备份工作。
转自: