EXADATA升级—从11.2.3.1.0到11.2.3.3.0–(2)备份环境和升级LSI Disk Array Controller Firmware

1.配置NFS环境

为了能够保证升级出错以后,可以回退到升级前的状态。我们需要把整个Exadata的部分环境做一个备份。我们采用的备份方式是NFS方式。我们找到了一台能够ping通的局域网内网的Linux服务器,把这台服务器将作为NFS的服务器,并且这台服务器上事先已经挂载了1T的空间。

在服务端修改/etc/exports,加上下列内容

/media/_data/  10.100.82.1(rw)
/media/_data/  10.100.82.2(rw)

注意:这个IP地址是Exadata映射出来的IP,不是计算节点的物理IP,必须从服务器端/var/log/messages里面可以看到Exadata客户端发起的请求IP,把请求IP配置到/etc/exports才能配置成功。因为客户在不同网段之间访问设置了防火墙,所以还需要通过配置固定端口进行连通。在服务端修改/etc/sysconfig/nfs,增加如下端口。

MOUNTD_PORT="4002"
STATD_PORT="4003"
LOCKD_TCPPORT="4004"
LOCKD_UDPPORT="4004"

操作系统上的防火墙全部都要关闭。

service iptables off

检查NFS是否配置好。

rpcinfo –p    在服务器端执行,查看端口是否正确.
showmount –e  在服务器端执行能查看到nfs文件系统的信息.
showmount -e  服务端ip地址  在客户端执行  能从客户端查看到nfs文件系统的信息.

在exadata的两个计算节点上mount NFS文件系统。

mount -t nfs -o rw,intr,soft,proto=tcp,nolock 10.194.42.11:/media/_data /root/tar

2.备份现有环境

做完NFS的配置之后,我们就可以用来进行备份Exadata计算节点的操作系统,集群软件、数据库软件及数据库的备份,而我们的存储节点因为可以使用CELL BOOT USB Flash Drive来进行恢复,所以无须备份。

2.1备份计算节点操作系统
[root@gxx2db01 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VGExaDb-LVDbSys1
                       30G   14G   15G  49% /
/dev/sda1             502M   36M  441M   8% /boot
/dev/mapper/VGExaDb-LVDbOra1
                       99G   55G   39G  59% /u01
tmpfs                  81G   26M   81G   1% /dev/shm
/dev/mapper/datavg-lv_data
                      549G  355G  166G  69% /backup
dbfs-dbfs@dbfs:/      800G  4.9G  796G   1% /data
10.194.42.11:/media/_data
                      985G  199M  935G   1% /root/tar

可以看到当前目录已经挂载了1个T空间的NFS容量,我们的操作系统存在着两个LV,一个是/dev/mapper/VGExaDb-LVDbSys1和/dev/mapper/VGExaDb-LVDbOra1,而datavg-lv-data是我们自己划的用于数据库备份的。所以备份操作系统也就是备份/dev/mapper/VGExaDb-LVDbSys1和/dev/mapper/VGExaDb-LVDbOra1这两个LV,我们使用下面的备份方式。

[root@gxx2db01 ~]# lvcreate -L1G -s -n root_snap /dev/VGExaDb/LVDbSys1
  Logical volume "root_snap" created
[root@gxx2db01 ~]# e2label /dev/VGExaDb/root_snap DBSYS_SNAP
[root@gxx2db01 ~]# mkdir /root/mnt
[root@gxx2db01 ~]# mount /dev/VGExaDb/root_snap /root/mnt -t ext3

[root@gxx2db01 ~]# lvcreate -L5G -s -n u01_snap /dev/VGExaDb/LVDbOra1
  Logical volume "u01_snap" created
[root@gxx2db01 ~]# e2label /dev/VGExaDb/u01_snap DBORA_SNAP
[root@gxx2db01 ~]# mkdir -p /root/mnt/u01
[root@gxx2db01 ~]# mount /dev/VGExaDb/u01_snap /root/mnt/u01 -t ext3

[root@gxx2db01 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VGExaDb-LVDbSys1
                       30G   14G   15G  49% /
/dev/sda1             502M   36M  441M   8% /boot
/dev/mapper/VGExaDb-LVDbOra1
                       99G   55G   39G  59% /u01
tmpfs                  81G   26M   81G   1% /dev/shm
/dev/mapper/datavg-lv_data
                      549G  355G  166G  69% /backup
dbfs-dbfs@dbfs:/      800G  4.9G  796G   1% /data
10.194.42.11:/media/_data
                      985G  199M  935G   1% /root/tar
/dev/mapper/VGExaDb-root_snap
                       30G   14G   15G  49% /root/mnt
/dev/mapper/VGExaDb-u01_snap
                       99G   55G   39G  59% /root/mnt/u01

做完上述步骤之后,可以看到多了两个lv,对VGExaDb-LVDbSys1和VGExaDb-LVDbOra1做了一个备份并挂载成了文件系统。接下来我们就可以把我们备份的文件系统tar到NFS上面。

[root@gxx2db01 ~]# cd /root/mnt
[root@gxx2db01 ~]#  tar -pjcvf /root/tar/mybackup.tar.bz2 * /boot --exclude \
tar/mybackup.tar.bz2 --exclude  /root/tar > \
/tmp/backup_tar.stdout 2> /tmp/backup_tar.stderr

做完tar之后可以查看/tmp/backup_tar.stderr文件检查是否有错误。如果无误,我们就可以把刚刚建的文件系统挂载点进行卸载,创建的LV进行删除。

[root@gxx2db01 ~]# cd /
[root@gxx2db01 ~]# umount /root/mnt/u01
[root@gxx2db01 ~]# umount /root/mnt
[root@gxx2db01 ~]# /bin/rm -rf /root/mnt
[root@gxx2db01 ~]# lvremove /dev/VGExaDb/u01_snap
[root@gxx2db01 ~]# lvremove /dev/VGExaDb/root_snap

以上操作分别在两个节点进行。

2.2备份计算节点数据库

计算节点上运行了三套数据库实例,分别是gxypdb,orcl,jjscpd等,而gxypdb和orcl采用了RMAN备份,而jjscpd采用了exp备份,是放在计算节点的dbfs文件系统里面的。对于使用RMAN备份的数据库,我们采用下列脚本,把数据备份到了/backup/orcl和/backup/gxypdb下面。我们只需要把备份出的文件夹拷贝到NFS目录下即可完成对数据库的备份,而对于exp的备份,我们也只需要把dbfs文件系统里面的dmp文件copy到NFS目录下。

--->备份数据库
export ORACLE_SID=orcl2
source /home/oracle/.bash_profile
$ORACLE_HOME/bin/rman log=/backup/log/full_`date +%Y%m%d%H%M`.log <<EOF
connect target /
run
{
# Backup Database full
BACKUP
     SKIP INACCESSIBLE
     TAG hot_db_bk_level
     FORMAT '/backup/orcl/bk_s%s_p%p_t%T'
    DATABASE
    INCLUDE CURRENT CONTROLFILE;
}
run
{
# Backup Archived Logs

sql 'alter system archive log current';
change archivelog all crosscheck;
BACKUP
    FORMAT '/backup/orcl/ar_s%s_p%p_t%T'
    ARCHIVELOG ALL;

# Control file backup
BACKUP
    FORMAT '/backup/orcl/cf_s%s_p%p_t%T'
    CURRENT CONTROLFILE;
}
delete noprompt archivelog until time "sysdate - 5";
crosscheck backup;
delete force noprompt expired backup;
allocate channel for maintenance type disk;
delete force noprompt obsolete device type disk;
list backup summary;
exit;
EOF
--->拷贝备份集到NFS
[root@gxx2db01 ~]# cp  -rp /backup/orcl/ /root/tar
[root@gxx2db01 ~]# cp  -rp /backup/gxypdb/ /root/tar
[root@gxx2db01 ~]# cp –rp /data/*.dmp  /root/tar
2.3备份计算节点集群软件和数据库软件

备份计算节点集群软件和数据库软件,主要是为了防止安装QUARTERLY DATABASE PATCH FOR EXADATA (BP 23),也就是GI和DB的Patch出现不可预知的错误,方便我们能够进行回退。此操作最好是要先停止掉数据库软件和GI软件。

[oracle@gxx2db01 ~]$ srvctl stop instance –i orcl1 –d orcl
[oracle@gxx2db01 ~]$ srvctl stop instance –i orcl2 –d orcl
[oracle@gxx2db01 ~]$ srvctl stop instance –i gxypdb1 –d gxypdb
[oracle@gxx2db01 ~]$ srvctl stop instance –i gxypdb2 –d gxypdb
[oracle@gxx2db01 ~]$ srvctl stop instance –i jjscpd1 –d jjscpd
[oracle@gxx2db01 ~]$ srvctl stop instance –i jjscpd2 –d jjscpd
[root@gxx2db01 ~]# /u01/app/11.2.0.3/grid/bin/crsctl stop crs -f
[root@gxx2db01 ~]# cd /root/tar
[root@gxx2db01 ~]# tar -cvf oraInventory.tar /u01/app/oraInventory 
[root@gxx2db01 ~]# tar -cvf grid.tar /u01/app/11.2.0.3/grid 
[root@gxx2db01 ~]# tar -cvf oracle.tar /u01/app/oracle/product/11.2.0.3/dbhome_1
2.4备份交换机配置文件

任意登陆到一台ILOM的管理界面上,例如:gxx2db01-ilom https://10.100.84.118,通过点击Maintenance标签,再选择Backup/Restore的标签,选择Operation为Backup,而Method为Browser,选择完成之后在Passphrase输入密码,点击Run,即可以在浏览器中生成一个XML的备份文件。

image

3.Reset ILOM和重启Exadata

为了能够顺利的进行升级,升级前最好把整个Exadata重启一次,重启的顺序就是先进入到ILOM 管理界面Reset SP,然后停止CELLS节点的服务,重启所有CELLS,重启成功之后,在重启计算节点。客户的Exadata总共有5个ILOM的管理界面,分别是两台计算节点和三台存储CELLS节点的,需要通过网址访问,因为防火墙的关系,需要找网络管理员开放端口才可以访问。进入到管理界面选择Maintenance,然后选择Reset SP即可。然后要等一会,就可以重新连接上了。ILOM5台的管理地址如下:

gxx2db01-ilom		https://10.100.84.118
gxx2db02-ilom		https://10.100.84.119
gxx2cel01-ilom		https://10.100.84.126
gxx2cel02-ilom		https://10.100.84.127
gxx2cel03-ilom       https://10.100.84.128

对于存储节点,我们需要先停止掉cells的服务,到每一台cells服务器上运行下列命令:

cellcli -e alter cell shutdown services all

停止成功后检查一下cells的服务是否全部停止成功。

cellcli -e list cell attributes msstatus,cellsrvstatus,rsstatus

重启存储节点的主机

sync
reboot

等到存储节点重启完成之后,检查cells服务是否成功启动,成功启动则没有问题。此时可以重启计算节点,在前面做软件备份的时候停止了数据库和集群软件,如果没有停止,需要先考虑停止数据库,然后再停止集群软件,再进行计算节点的重启。

sync
reboot

4.检查信任关系

为了保证顺畅的升级,需要确保在计算节点能够和存储节点建立安全的信任关系,这里主要是通过SSH来实现的。首先在/tmp下建立一个all_group,配置上两个计算节点和三个存储节点的主机名。然后在建立一个cell_group,配置上三个存储节点的主机名,然后执行下列命令,如果不需要输入密码能够直接显示,则信任关系正常。

 [root@gxx2db01 tmp]# dcli -g all_group -l root date
gxx2db01: Sat Sep  6 12:14:41 CST 2014
gxx2db02: Sat Sep  6 12:14:40 CST 2014
gxx2cel01: Sat Sep  6 12:14:41 CST 2014
gxx2cel02: Sat Sep  6 12:14:41 CST 2014
gxx2cel03: Sat Sep  6 12:14:41 CST 2014
[root@gxx2db01 tmp]# dcli -g cell_group -l root 'hostname -i'
gxx2cel01: 10.100.84.104
gxx2cel02: 10.100.84.105
gxx2cel03: 10.100.84.106

如果信任关系有问题,需要使用下列命令,重建信任关系。

ssh-keygen -t rsa
dcli -g cell_group -l root –k

5.升级 LSI Disk Array Controller Firmware

安装LSI DISK Disk Array Controller Firmware可以使用滚动模式和非滚动模式,因为我们申请了停机的时间,所以这个操作使用的是非滚动模式。

1.把安装介质FW12120140.zip 上传到每个cells节点的/tmp目录下.

2.解压FW12120140.zip文件.

[root@gxx2db01 tmp]# unzip FW12120140.zip -d /tmp
[root@gxx2db01 tmp]# mkdir -p /tmp/firmware
[root@gxx2db01 tmp]# tar -pjxf  FW12120140.tbz -C /tmp/firmware

在/tmp/fireware下面应该存在一个这样的文件

12.12.0.0140_AF2108_FW_Image.rom 5ff5650dd92acd4e62530bf72aa9ea83

3.验证FW12120140.sh脚本

#!/bin/ksh
echo date > /tmp/manual_fw_update.log
logfile=/tmp/manual_fw_update.log
HWModel=`dmidecode --string system-product-name | tail -1 | sed -e 's/[ \t]\+$//g;s/ /_/g'`
silicon_ver_lsi_card="`lspci 2>/dev/null | grep 'RAID' | grep LSI | awk '{print $NF}' | sed -e 's/03)/B2/g;s/05)/B4/g;'`"
silicon_ver_lsi_card=`echo $silicon_ver_lsi_card | sed -e 's/B2/B4/g'`
lsi_card_firmware_file="SUNDiskControllerFirmware_${silicon_ver_lsi_card}"
echo $lsi_card_firmware_file
echo "`date '+%F %T'`: Now updating the disk controller firmware ..." | tee -a $logfile
echo "`date '+%F %T'`: Now disabling cache of the disk controller ..." | tee -a $logfile
sync
/opt/MegaRAID/MegaCli/MegaCli64 -AdpCacheFlush -aALL -NoLog | tee -a $logfile
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp WT -Lall -a0 -NoLog | tee -a $logfile
/opt/MegaRAID/MegaCli/MegaCli64 -AdpCacheFlush -aALL -NoLog | tee -a $logfile
/opt/MegaRAID/MegaCli/MegaCli64 -v | tee -a $logfile
/opt/MegaRAID/MegaCli/MegaCli64 -AdpFwFlash -f /tmp/firmware/12.12.0.0140_AF2108_FW_Image.rom  -NoVerChk -a0 -Silent -AppLogFile /tmp/manual_fw_update.log
if [ $? -ne 0 ]; then
   echo "`date '+%F %T'`: [ERROR] Failed to update the Disk Controller firmware. Will continue anyway ..." | tee -a $logfile
else
   echo "`date '+%F %T'`: [INFO] Disk controller firmware update command completed successfully." | tee -a $logfile
fi

给脚本赋予700的权限。

chmod 700 /tmp/FW12120140.sh

4.停止数据库和CRS

[oracle@gxx2db01 ~]$ srvctl stop instance –i orcl1 –d orcl
[oracle@gxx2db01 ~]$ srvctl stop instance –i orcl2 –d orcl
[oracle@gxx2db01 ~]$ srvctl stop instance –i gxypdb1 –d gxypdb
[oracle@gxx2db01 ~]$ srvctl stop instance –i gxypdb2 –d gxypdb
[oracle@gxx2db01 ~]$ srvctl stop instance –i jjscpd1 –d jjscpd
[oracle@gxx2db01 ~]$ srvctl stop instance –i jjscpd2 –d jjscpd
[root@gxx2db01 ~]# /u01/app/11.2.0.3/grid/bin/crsctl stop crs –f
[root@gxx2db01 ~]# /u01/app/11.2.0.3/grid/bin/crsctl check crs

5.停止所有存储节点的服务

[root@gxx2db01 ~]# dcli -l root -g cell_group "cellcli -e alter cell shutdown services all"

6.创建文件DISABLE_HARDWARE_FIRMWARE_CHECKS

[root@gxx2db01 ~]# #dcli -l root -g cell_group "touch /opt/oracle.cellos/DISABLE_HARDWARE_FIRMWARE_CHECKS"

7.禁用exachkcfg服务

[root@gxx2db01 ~]# #dcli -l root -g cell_group "chkconfig exachkcfg off"

8.在cells节点上执行FW12120140.sh脚本

[root@gxx2cel01 tmp]# /tmp/FW12120140.sh
SUNDiskControllerFirmware_B4
2014-09-06 11:15:31: Now updating the disk controller firmware ...
2014-09-06 11:15:31: Now disabling cache of the disk controller ...

Cache Flush is successfully done on adapter 0.

Exit Code: 0x00
Set Write Policy to WriteThrough on Adapter 0, VD 0 (target id: 0) success
Set Write Policy to WriteThrough on Adapter 0, VD 1 (target id: 1) success
Set Write Policy to WriteThrough on Adapter 0, VD 2 (target id: 2) success
Set Write Policy to WriteThrough on Adapter 0, VD 3 (target id: 3) success
Set Write Policy to WriteThrough on Adapter 0, VD 4 (target id: 4) success
Set Write Policy to WriteThrough on Adapter 0, VD 5 (target id: 5) success
Set Write Policy to WriteThrough on Adapter 0, VD 6 (target id: 6) success
Set Write Policy to WriteThrough on Adapter 0, VD 7 (target id: 7) success
Set Write Policy to WriteThrough on Adapter 0, VD 8 (target id: 8) success
Set Write Policy to WriteThrough on Adapter 0, VD 9 (target id: 9) success
Set Write Policy to WriteThrough on Adapter 0, VD 10 (target id: 10) success
Set Write Policy to WriteThrough on Adapter 0, VD 11 (target id: 11) success

Exit Code: 0x00
Cache Flush is successfully done on adapter 0.
Exit Code: 0x00

      MegaCLI SAS RAID Management Tool  Ver 8.02.21 Oct 21, 2011
    (c)Copyright 2011, LSI Corporation, All Rights Reserved.
Exit Code: 0x00
95%   Completed2014-09-06 11:16:09: [INFO] Disk controller firmware update command completed successfully.

9.脚本执行成功之后,需要重启,这里需要注意的一点是,需要重启两次。

[root@gxx2cel01 tmp]#sync
[root@gxx2cel01 tmp]#shutdown -fr now

10.重启完成之后,可以检查LSI MegaRaid Disk Controller Firmware的版本。

[root@gxx2cel01 ~]# /opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -a0 -NoLog  | grep  'FW
Package Build'
FW Package Build: 12.12.0-0079
FW Version         : 2.120.203-1440
Current Size of FW Cache       : 399 MB

11.升级成功之后,移除文件DISABLE_HARDWARE_FIRMWARE_CHECKS

[root@gxx2cel01 ~]# dcli -l root -g cell_group "rm -fr /opt/oracle.cellos/DISABLE_HARDWARE_FIRMWARE_CHECKS"

12.开启exachkcfg服务

[root@gxx2cel01 ~]# dcli -l root -g cell_group "chkconfig exachkcfg on"

13.查看cells服务状态

[root@gxx2cel01 ~]# dcli -l root -g cell_group "cellcli -e list cell attributes msstatus,cellsrvstatus,rsstatus"
   running         running         running

从第5步,开始重复上面的步骤在其他存储节点上运行。等所有节点都完成之后,并且验证是有效的LSI MegaRaid Disk Controller Firmware,重启整个存储节点的服务。

分享到: 更多