ufsdump&ufsrestore安装Solaris x86出现故障的解决
由于mail server (192.168.22.70)性能不太稳定,我们决定要把22.70的操作系统迁移到新的硬件上来。
由于都是x86平台,所以我们选择了ufsdump&ufsrestore来进行恢复。
简要步骤如下:
1 在新的硬件平台上安装操作系统
这样是为了能够让新的硬件环境下获取到原系统的dump文件
2 ufsdump备份22.70上的数据
在22.70上将df -h看到的需要ufsdump独立文件系统,分别进行0级ufsdump,并将dump文件传到新的系统上去。
最好是通过NFS共享,
3 在新的系统上对22.70的数据文件系统进行恢复
直接在新的对应新的文件系统进行ufsrestore
4 在新的系统上对22.70的/文件系统进行恢复
对/文件系统的恢复,需要进入的x86的failsafe模式进行恢复。
# ufsrestore rf /path/dumpfile
完成ufsrestore之后,需要安装bootblk
# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t0d0s0
5 启动故障的处理
在恢复了/文件系统之后,由于将22.70上所有的硬件信息,物理地址,逻辑名链接等等恢复到新的硬件上来,造成了与新的硬件系统不对应,从而导致Solaris系统无法启动。
当Solaris从正常模式启动,系统会dump并重启。报错信息如下:
panic[cpu0]/thread=fffffffffbc3f1a0: cannot mount root path
这个错误的解决办法是在failsafe模式下使用format命令查看启动硬盘的物理路径,并且在/boot/solaris/bootenv.rc修改对应的bootpath
这时bootenv.rc文件的内容应该是:
setprop bootpath /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0:a
但是实际上新的硬件平台并没有这个对应的硬盘信息,那么使用format查看正确的硬盘信息
# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c1t0d0 <DEFAULT cyl 3913 alt 2 hd 255 sec 63>
/pci@0,0/pci15ad,1976@10/sd@0,0
更换bootpath上的硬盘路径为format的输出,并且在最后面加上:a表示第一个分区,即s0
setprop bootpath /pci@0,0/pci15ad,1976@10/sd@0,0:a
这样系统可以继续往下启动了,但是还是没有完全解决。
启动过程中,svc:/system/filesystem/usr:default起不来,系统进入maintenance模式。
这时/是作为read only模式挂接上去的,并且format找不到硬盘。devfsadm无法执行,因为/var/tmp还没有挂起来,path_to_inst文件也不对应。
所以不得已又得回到failsafe模式下去将/分区挂接起来,确保可以对/分区进行读写,并且能够看到硬盘信息。
在failsafe模式下执行以下操作
# mv /a/etc/path_to_inst /a/etc/path_to_inst.bkp
这样系统在启动时会自动根据硬件信息创建新的path_to_inst文件
# rm /a/dev/rdsk/*;rm /a/dev/dsk*
# cd /dev/rdsk/; tar cvf /a/dev/rdsk/rdsk.tar *
# cd /dev/dsk/; tar cvf /a/dev/dsk/dsk.tar *
这些链接文件直接删除重启应该和path_to_inst文件一样可以由系统自动生成,不过我的做法是将failsafe模式下的/dev/rdsk和/dev/dsk的文件进行了复制。
# cd /a/dev/dsk; tar xf dsk.tar
# cd /a/dev/rdsk; tar xf rdsk.tar
# ls -l
查看硬盘分区信息是否对应到了争取的硬盘物理路径
# reboot
重启之后,新的系统终于能够顺利启动了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
顶这种心得型的帖子。
收藏了。
做完了发现很简单,出现问题还是因为对x86平台的有些做法不熟悉。
需要提应大家的是/boot/solaris/bootenv.rc, 还有硬件设备树如何在系统下生成这些问题。
因为实在不知道x86下boot -r对应的做法是什么。
解决的过程中,这个帖子帮了不少忙
http://blogs.sun.com/scottp/entry/booting_and_the_boot_archive