如何重做Exadata镜像(reimage)

http://www.dbaleet.org/how_to_reimage

 

Image的版本通常就是指Exadata软件的版本, 而reimage 在Exadata中就是对其重做镜像的意思,通俗的说就是重灌系统。在Exadata上我们用imageinfo来查看当前Exadata image的版本,用imagehistory来查看历史版本。例如:

 

#imageinfo
dm01db01: 
dm01db01: Kernel version: 2.6.18-238.12.2.0.2.el5 #1 SMP Tue Jun 28 05:21:19 EDT 2011 x86_64
dm01db01: Image version: 11.2.2.4.2.111221
dm01db01: Image activated: 2012-04-13 12:38:51 +0800
dm01db01: Image status: success
dm01db01: System partition on device: /dev/mapper/VGExaDb-LVDbSys1
dm01db01:

 

以上是在db01节点上运行的结果,能得到这些信息:当前操作系统kernel的版本, image版本(即Exadata版本), 此image激活的时间, image的状态,以及操作系统分区的位置。当然可以使用imageinfo -all来查看更多的信息。

 

#imagehistory
dm01db01: Version                              : 11.2.2.2.2.110311
dm01db01: Image activation date                : 2011-05-13 10:44:39 -0700
dm01db01: Imaging mode                         : fresh
dm01db01: Imaging status                       : success
dm01db01: 
dm01db01: Version                              : 11.2.2.4.2.111221
dm01db01: Image activation date                : 2012-04-13 12:38:51 +0800
dm01db01: Imaging mode                         : patch
dm01db01: Imaging status                       : success
dm01db01:

 

以上是在同一个节点运行的imagehistory信息,这部分信息是按照时间先后排序的。从上面可以看到初始出厂的image版本为11.2.2.2.2.110311,出厂灌制image的时间为2011-05-13, 而当前的image版本为11.2.2.4.2.111221,当前image激活的时间为2012-04-13,image的激活模式是patch,状态为成功,也就表示这个exadata节点是通过打补丁的方式来升级到这个版本的。如果是reimage对应的信息imagehistory则类似如下这种:

 

#imagehistory
dm01db01: Version                              : 11.2.2.4.2.111221
dm01db01: Image activation date                : 2012-04-13 12:38:51 +0800
dm01db01: Imaging mode                         : fresh
dm01db01: Imaging status                       : success
dm01db01:

 

 

如果是通过reimage来安装的,在imagehistory中只会显示一个条目,并且状态是fresh,代表新安装。

那么reimage一般用在哪些场合呢?比如一台出厂比较早的Exadata,到用户准备安装的时候可能相隔比较长的时间,而这期间Exadata已经发布了好几个版本了。通常情况下,Oracle总是安装当前最新的Exadata版本(客户特殊要求除外),因为最新的版本可能解决了一些已知的bug。与其通过打补丁的方式升级还不如通过reimage的方式重装,因为补丁可能花费更多时间。另外一种情况就是用户早期买来Exadata做测试,测试完一段时间以后准备正式上生产了,而exadata上的所有测试信息不需要了,需要安装最新的版本,那么也可以使用reimage来重做。reimage相比patch的一个最大好处就是reimage完成以后的系统是最新并且是干净的,跟新出厂的设置一样,并且已经修改到指定ip了,可以直接运行onecommand,而不需要手工回收db节点上的solaris操作系统的空间了(默认出场双系统,一般选择Linux就把solaris空间回收)。整个reimage的步骤如下:

1. 准备preconf.csv文件,此文件是用户根据自己的实际情况配置ip然后通过configurator生成的一个ip地址文件。然后运| grep eth0, 把获取到的mac地址填入到这个文件指行/opt/oracle.SupportTools/firstconf/etch_macs.sh 定的位置,并将这个文件上传到db01节点的/tmp目录。

2. 在edelivery中下载最新的Exadata介质。DB节点和cell节点是不一样的,例如DB 11.2.3.1对应的文件是V33262-01.zip, cell 11.2.3.1对应的文件是V33269-01.zip。将这两个文件上传到DB节点的/opt/oracle.SupportTool /下,然后通过zip解压得到cellImageMaker_11.2.3.1.1_LINUX.X64_120607-1.x86_64.tar和computeImageMaker_11.2.3.1.1_LINUX.X64_120607-1.x86_64.tar,然后分别解开这两个tar包,会得到两个目录dl360和dl180, 这两个目录分别代表db节点和存储节点的介质。第一代Exadata是和HP合作的,db节点使用的是 HP ProLiant DL360系列的主机,cell节点使用的是 HP ProLiant DL180的主机,虽然后续的Exadata都是Sun主机,但是这两个目录的名字一直没有变。

3. 将一个大小为8GB的usb插入到DB01的usb口,然后在kvm中可以看到usb的识别信息,或者通过dmesg也可以看到。

4. 进入到dl360或者dl180目录,运行makeImageMedia.sh 这个脚本。如果要制作db的镜像,则进入dl360目录,要做cell的镜像则进入dl180目录:具体推荐的命令行如下:

db节点:

[root@dm01db01 dl360]# ./makeImageMedia.sh  -reboot-on-success -updfrm -stit  -dualboot no -preconf  /tmp/preconf.csv

cell节点:

[root@dm01db01 dl180]# ./makeImageMedia.sh  -reboot-on-success -updfrm -stit -preconf /tmp/preconf.csv

注意db节点需要加上dualboot=no这个参数,否则做出来的image不会回收solaris操作系统所占系统分区的空间。cell节点因为只有linux,所以不需要这个选项。并且dl180下的makeImageMedia.sh制作出来的image只能用于对cell节点进行reimage,用dl360下的下的makeImageMedia.sh制作出来的image只能用于对db节点进行reimage,不可混用。

5. 这个脚本开始运行以后,会提示是否继续,选择y,然后会提示输入usb的名称,查看一下usb的具体名称,例如/dev/sdb1,然后回车,完成以后会给出提示,这样镜像就制作完毕了。

6. 用制作好包含镜像的usb插入到db节点或者cell节点的usb口,重启其操作系统,在开机启动的时候选择使用usb启动,选择r(r表示reimage)然后回车,系统就开始自动reimage了, reimage完成以后操作系统会自动重启,重启完毕后可以使用imagehistory来查看是否成功。一般一个db节点需要30分钟,一个cell节点45分钟左右。

最后, android用户肯定表示此法太easy了,不够geek,一点技术含量也没有,跟我android刷机比简直弱爆了。

什么,竟敢黑我大安卓用户???!!!

(闪)

以上


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *