Chinaunix首页 | 论坛 | 博客
  • 博客访问: 568140
  • 博文数量: 44
  • 博客积分: 5017
  • 博客等级: 大校
  • 技术积分: 508
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-17 16:03
文章分类

全部博文(44)

文章存档

2011年(1)

2010年(1)

2009年(1)

2008年(5)

2007年(22)

2006年(14)

我的朋友

分类: LINUX

2007-10-18 16:55:13

问题描述:

   两台同型号的服务器(两台机器上运行HA,通过HA来监控他们的应用以及Oracle数据库)由于用户操作不当,造成一台服务器无法正常关机(能关闭内核,但不能关闭电源),尝试了在内核中加入电源管理的参数,仍然不能解决。更郁闷的是用户没有安装光盘,无法重装系统,那么唯一的办法就是把另外一台机器上的根分区移植到这台机器上。

解决方法:
 
   本想使用dd来拷贝根分区,但无奈硬盘空间不够,所以只有使用tar来备份了,tar的方法其实很简单,但像根分区下的一些/proc、/sys、/tmp、/dev这应该排除掉,其次oracle这些应用软件的安装目录也不需要打包(太大),因为tar好像最大只支持8GB的单个文件。当然tar文件存放的目录一定要排除掉。具体命令如下:

#tar zcvf /Bak/root-bak.tgz --exclude /proc --exclude /sys --exclude /tmp --exclude /dev --exclude /Bak --exclude /ora_data /


待tar命令完成后,将tar包拷贝至移动硬盘上。现在就可以转到另外一台机器来操作了,在执行恢复操作前,建议将这台机器上的Oracle等应用程序安装的目录以及一些重要的数据先备份。然后通过光盘引导至rescue模式,在这里需要注意的是,在进入rescue模式之前,一定要先将硬盘硬盘插上,否则进入rescue模式后系统不会自动添加USB驱动。其次在进入rescue模式的过程中,要选择“SKIP”跳过根分区的挂载。接下来的操作就是格式化根分区再将tar解开到根分区上。具体命令如下:


#mkfs.ext3 /dev/sda1

然后,挂在新的文件系统并还原操作系统。

#mkdir /newsystem
#mount /dev/sda1 /newsystem
#mkdir /bak
#mount /dev/sdb1 /bak
#tar zxvf /bak/root-bak.tgz -C /newsystem
#chroot /newsystem
#grub-install /dev/sda


开始我以为做到这一步查多算完工了,但是重新启动的时候报kernel panic的错误,提示不能挂载根分区,后来我将/etc/fstab、/etc/grub.conf文件中的LABEL全部该为实际的分区名称,并重做initrd:

# cp /boot/initrd-2.6.18-8.2smp.img /boot/initrd-2.6.18-8.2smp.img.bak
# mkinitrd /boot/initrd-2.6.18-8.2smp.img 2.6.18-8.2smp


最后重新启动OK,能正常进入系统,也能正常关机了。把备份的Oracle以及应用再恢复回去,并启动HA,一切OK!

BTW:BLOG好久没更新了,今天刚好是BLOG一周年,所以写篇文章来纪念一下,呵呵
阅读(2683) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~