本文以Exadata X8 HC 1/4 rack爲例,介紹整個Exadata刷機的步驟。
我理解刷機最關鍵的就兩大步驟:第一步是全部機器刷OS,第二步是使用OEDA一鍵刷機。至於其它全部工做都是在爲這兩步作準備。本着對之後刷機能夠快速參考,梳理細節步驟以下:html
使用適配本身電腦版本的OEDA,根據實際刷機需求進行配置,最終會生成一系列配置文件(主要有customer-rack-InstallationTemplate.html、customer-rack-preconf_xxx.csv、customer-rack.xml等)。linux
注:這一環節須要同時摸清楚現場狀況,肯定網絡規劃(包含Admin、Client、Private網絡IP規劃)、確承認用的DNS、NTP服務器,這些信息在OEDA配置時都會用到。
同時建議準備好配置PXE服務器的環境(可使用跳起色,也可使用本身準備的虛擬機,後面有具體PXE服務搭建步驟)。shell
1)OS介質(包含DB節點和CELL節點的OS介質)
2)根據上步OEDA的配置結果,從生成的customer-rack-InstallationTemplate.html文件中的Appendix B部分,下載列表中全部介質(一般包含GI、DB、對應補丁以及AHF)數據庫
注:這一環節能夠梳理出各機器對應的MAC地址,並整理好下載的介質、preconf.csv、customer-rack.xml等配置文件,後面步驟都會用到。服務器
--梳理本次刷機環境的各機器名及其eth0對應的MAC(在ILOM下查看eth0的MAC地址命令:show /SYS/MB/NET0): dbm08dbadm02 00:10:e0:e9:55:fa dbm08dbadm01 00:10:e0:e6:cb:6a dbm08celadm03 00:10:e0:e9:63:80 dbm08celadm02 00:10:e0:e8:d9:32 dbm08celadm01 00:10:e0:e9:62:c0
注:這裏的dbm08就是rack的名字,是自定義的,由於這裏使用rack顯示很差,因此使用本次真實的rack名稱代替。網絡
4.1 安裝配置tftp:
安裝tftp:
tftp server是基於xinetd的服務,須要安裝xinetd、tftp、tftp-serveroracle
# yum -y install xinetd tftp tftp-server
配置tftp:app
# vi /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } # vi /usr/lib/systemd/system/tftp.service [Service] ExecStart=/usr/sbin/in.tftpd -s /tftpboot 建立目錄/tftpboot: # mkdir /tftpboot 啓動tftp: # systemctl daemon-reload # systemctl start tftp 查看tftp: # systemctl status tftp 設置開機啓動: # systemctl enable tftp
安裝syslinux:運維
# mkdir /tftpboot/pxelinux.cfg # yum -y install syslinux # rpm -ql syslinux | grep pxelinux.0 /usr/share/syslinux/gpxelinux.0 /usr/share/syslinux/pxelinux.0 # cp /usr/share/syslinux/pxelinux.0 /tftpboot/ # ls /tftpboot/ pxelinux.0 pxelinux.cfg #
測試ftp:dom
#cd /tmp #tftp 192.168.18.250 tftp> get pxelinux.0 tftp> quit # # ls pxelinux.0 pxelinux.0 # ##注意selinux要關閉
4.2 安裝配置DHCP
編輯配置文件:vi /etc/dhcp/dhcpd.conf
set vendorclass = option vendor-class-identifier; option pxe-system-type code 93 = unsigned integer 16; set pxetype = option pxe-system-type; ddns-update-style none; allow booting; allow bootp; subnet 192.168.18.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option routers 192.168.18.250; option domain-name "customerbj.com"; option domain-name-servers 192.168.18.250; range dynamic-bootp 192.168.18.121 192.168.18.140; default-lease-time 21600; max-lease-time 43200; # Enable UEFI Netboot if substring(vendorclass, 0, 9)="PXEClient" { if pxetype=00:06 or pxetype=00:07 { filename "efi/BOOTX64.efi"; } else { filename "pxelinux.0"; } } next-server 192.168.18.250; host dbm08dbadm02 { hardware ethernet 00:10:e0:e9:55:fa; fixed-address 192.168.18.2; } host dbm08dbadm01 { hardware ethernet 00:10:e0:e6:cb:6a; fixed-address 192.168.18.1; } host dbm08celadm03 { hardware ethernet 00:10:e0:e9:63:80; fixed-address 192.168.18.5; } host dbm08celadm02 { hardware ethernet 00:10:e0:e8:d9:32; fixed-address 192.168.18.4; } host dbm08celadm01 { hardware ethernet 00:10:e0:e9:62:c0; fixed-address 192.168.18.3; } host vm-pxe { hardware ethernet 00:10:e0:79:8b:b5; fixed-address 192.168.18.250; next-server 192.168.18.250; } }
Note:這裏遇到一個問題,先記錄下留做後續思考:就是起初next-server部分,fixed-address對應的IP地址配置錯誤沒發現,但最終也沒影響到OS安裝?是由於DHCP這部分沒用嗎?
啓動DHCP服務並設置開機自啓:
啓動dhcp: # systemctl start dhcpd 查看dhcp狀態: # systemctl status dhcpd 檢查dhcp是否開機啓動: # systemctl list-unit-files |grep dhcp 設置開機啓動dhcp: # systemctl enable dhcpd
4.3 安裝配置http服務
Linux7對應的設置爲:
# vi /etc/httpd/conf.d/pxe.conf Alias /tftpboot /tftpboot <Directory /tftpboot> Options indexes FollowSymLinks Allow from all Require all granted </Directory>
測試http服務正常:
# vi /tftpboot/http.txt 「http test」 # wget http://127.0.0.1/tftpboot/http.txt # curl http://127.0.0.1/tftpboot/http.txt --有正確返回無報錯表示配置沒問題。 # systemctl start httpd # systemctl stop httpd # systemctl status httpd
5.1 系統介質準備:
[root@x52-103218 tftpboot]# unzip V1004139-01.zip [root@x52-103218 tftpboot]# unzip V1004140-01.zip
5.2 準備.EFI文件:
解壓OS鏡像文件:
掛載鏡像文件,提取efi相關文件:
# mount -o loop /tftpboot/compute_20.1.3.0.0_LINUX.X64***.iso /20isodb # ls /20isodb/EFI/BOOT BOOTX64.efi grub.cfg grubx64.efi mmx64.efi TRANS.TBL 複製三個*.efi到/tftpboot/efi目錄下:(這幾個文件cell與db是相同的) # mkdir /tftpboot/efi # cp /20isodb/EFI/BOOT/*.efi /tftpboot/efi # cp /20isodb/cellbits/commonos.tbz /tmp # tar -xvf /tmp/commonos.tbz 解壓後會有shim-x64-15-2.0.7.el7.x86_64.rpm文件: # rpm2cpio shim-x64-15-2.0.7.el7.x86_64.rpm| cpio -idmv ./boot/efi/EFI/BOOT/BOOTX64.EFI ./boot/efi/EFI/BOOT/fbx64.efi ./boot/efi/EFI/redhat/BOOT.CSV ./boot/efi/EFI/redhat/BOOTX64.CSV ./boot/efi/EFI/redhat/mmx64.efi ./boot/efi/EFI/redhat/shim.efi ./boot/efi/EFI/redhat/shimx64.efi ./etc/yum/protected.d/shim-x64.conf 10051 blocks # cp ./boot/efi/EFI/redhat/shim.efi /tftpboot/efi # cp ./boot/efi/EFI/redhat/shimx64.efi /tftpboot/efi # ls /tftpboot/efi/ BOOTX64.efi grubx64.efi mmx64.efi shim.efi shimx64.efi 查看文件權限: rwx------. 1 root root 1203584 Nov 8 08:56 shim.efi 須要修改成755: #chmod 755 shim.efi #cd /tmp # wget http://192.168.18.250/tftpboot/efi/shim.efi 可以成功wget代表配置正確。 BOOTX64.efi grubx64.efi mmx64.efi shim.efi shimx64.efi
上面這幾個都是efi引導文件,須要在dhcpd.conf文件中進行配置:filename "efi/BOOTX64.efi"; 實際這裏須要測試確認是否適配,好比本次刷機X8-2使用的是BOOTX64.efi,聽說有的系統可能須要使用shim.efi或shimx64.efi才能夠,目前我尚未實際遇到。
5.3 配置啓動文件:
計算節點的啓動引導文件:vi /tftpboot/efi/db
set default 0 set timeout=10 menuentry 'Exadata Compute Node' { echo "Loading efi/vmlinuz" linuxefi efi/vmlinux-iso-20.1.3.0.0-201023-compute stit dhcp pxe boot-from=uefi factory reboot-on-success notests=diskgroup iso_uri=http://192.168.18.250/tftpboot/compute_20.1.3.0.0_LINUX.X64_201023-1.x86_64.iso preconf=http://192.168.18.250/tftpboot/preconf.csv console=ttyS0,115200n8 echo "Loading efi/initrd.img" initrdefi efi/initrd-iso-20.1.3.0.0-201023-compute.img echo "Booting installation kernel" }
存儲節點的啓動引導文件:vi /tftpboot/efi/cell
set default 0 set timeout=10 menuentry 'Exadata Storage Cell' { echo "Loading efi/vmlinuz" linuxefi efi/vmlinux-iso-20.1.3.0.0-201023-cell stit dhcp pxe boot-from=uefi factory reboot-on-success notests=diskgroup iso_uri=http://192.168.18.250/tftpboot/cell_20.1.3.0.0_LINUX.X64_201023-1.x86_64.iso preconf=http://192.168.18.250/tftpboot/preconf.csv console=ttyS0,115200n8 echo "Loading efi/initrd.img" initrdefi efi/initrd-iso-20.1.3.0.0-201023-cell.img echo "Booting installation kernel" }
要確保上述路徑和文件名均正確:
把鏡像軟件解壓出的initrd-iso* 和vmlinux-iso*文件複製到/tftpboot/efi目錄下: # mv initrd-iso* vmlinux-iso* /tftpboot/efi/ 把*.iso和*.iso.md5放到/tftpboot目錄下: # cp *.iso *.iso.md5 /tftpboot 把OEDA工具生成的網絡配置文件preconf.csv放到/tftpboot目錄下: # cat /tftpboot/preconf.csv 在preconf.csv文件中須要把各個主機NET0的MAC加入到Management後面 請確保preconf.csv文件裏面已經添加了eth0對應的mac地址,在安裝系統過程當中會將IP配置信息設置到對應的主機上.
配置文件:這裏的格式要求爲:grub.cfg-01-MAC地址(要小寫,且中間使用中劃線替代冒號),例以下面這樣:
dbm08: cp db grub.cfg-01-00-10-e0-e9-55-fa cp db grub.cfg-01-00-10-e0-e6-cb-6a cp cell grub.cfg-01-00-10-e0-e9-63-80 cp cell grub.cfg-01-00-10-e0-e8-d9-32 cp cell grub.cfg-01-00-10-e0-e9-62-c0
5.4 開始安裝系統:
登陸到各節點的ILOM,設置並開始安裝系統:
dbm08: 192.168.18.6~10,以第一臺爲例:
# ssh 192.168.18.6 設置下次開機啓動設備爲PXE: -> set /HOST boot_device=pxe Set 'boot_device' to 'pxe' -> show /HOST boot_device /HOST Properties: boot_device = pxe 重啓系統: -> reset /System Are you sure you want to reset /System (y/n)? y Performing hard reset on /System 登陸控制檯查看安裝信息: -> start /SP/console Are you sure you want to start /SP/console (y/n)? y Serial console started. To stop, type ESC ( 進入控制檯查看: … 顯示整個安裝過程
可使用imageinfo來查看全部節點的系統信息:
特別注意安裝版本和激活日期,確認reimage成功,通常存儲節點的安裝就緒時間要短於計算節點,耐心等待。
6.1 上傳介質及配置文件
把OEDA軟件(服務器版本)及相關介質傳送到第一臺數據庫主機上:
# mkdir -p /u01/soft/onecommand cd /u01/soft/onecommand scp 192.168.18.250:/u01/media/p30640393_201300_Linux-x86-64.zip ./ unzip p30640393_201300_Linux-x86-64.zip cd linux-x64/WorkDir/ scp 192.168.18.250:/u01/media/p* ./ scp 192.168.18.250:/u01/media/ahf_setup ./ scp 192.168.18.250:/u01/media/V98206* ./ 上傳OEDA生成的customer-rack.xml文件: # scp 192.168.18.250:/u01/media/customer* /u01/soft/onecommand/linux-x64
6.2 運行reclaimdisks.sh:
這步實際會釋放pvs/vgs/lvs相對應的剩餘空間,本次就釋放3T+,以前也遇到過有些環境會直接提示不適用,那就不用操做。
查看當前的分區信息: # /opt/oracle.SupportTools/reclaimdisks.sh -check 在一鍵部署前須要先在全部數據庫節點上運行reclaimdisks.sh: # /opt/oracle.SupportTools/reclaimdisks.sh -free -reclaim
6.3 執行一鍵部署
列出全部步驟:
# cd /u01/soft/onecommand/linux-x64/ # ./install.sh -cf customer-rack.xml -l Initializing 1. Validate Configuration File 2. Setup Required Files 3. Create Users 4. Setup Cell Connectivity 5. Verify Infiniband 6. Calibrate Cells 7. Create Cell Disks 8. Create Grid Disks 9. Install Cluster Software 10. Initialize Cluster Software 11. Install Database Software 12. Relink Database with RDS 13. Create ASM Diskgroups 14. Create Databases 15. Create Pluggable Databases 16. Apply Security Fixes 17. Install Autonomous Health Framework 18. Create Installation Summary 19. Resecure Machine
能夠一步一步執行:
# nohup /u01/soft/onecommand/linux-x64/install.sh -cf customer-rack.xml -s 1 & Initializing Executing Validate Configuration File /////
能夠指定步驟依次執行:
# nohup /u01/soft/onecommand/linux-x64/install.sh -cf customer-rack.xml -r 2-18 &
注:不一樣版本步驟總數和內容有細微差異,記住最後一步的Resecure Machine建議不要執行,執行完成後則整個刷機過程完畢。
日誌在/u01/soft/onecommand/linux-x64/log目錄下,每一步都有對應的日誌文件。
可使用-u來回退某一步操做,如:
# /u01/soft/onecommand/linux-x64/install.sh -cf customer-rack.xml -u 2
最後刷機完成,留意"Create Installation Summary"步驟的輸出信息,能夠將一些信息下載下來備用,好比EXAchk的巡檢信息,相關帳號密碼信息等。特別強調的是,EXAchk的巡檢信息最好仍是確認下,看是否有比較嚴重的問題須要解決的。
7.1 環境變量配置
發現當前並不會自動配置環境變量,須要手工配置。
以節點1爲例:
grid用戶: export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/19.0.0.0/grid export ORACLE_SID=+ASM1 export PATH=$ORACLE_HOME/bin:$PATH oracle用戶: export GRID_HOME=/u01/app/19.0.0.0/grid export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1 export ORACLE_SID=cdb1db11 export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH
節點2對應ORACLE_SID修改匹配便可。
7.2 新建符合要求的測試庫
刷機的庫有時並不符合實際使用要求,若須要創建新庫,一般建議使用圖形dbca建庫,可最大程度避免出錯。這裏經過VNC鏈接到跳起色,假設是「:2」,參考命令以下:
xhost + ssh 192.168.18.1 su - oracle export DISPLAY=192.168.18.250:2 dbca
這些就都是基礎DBA的運維操做,通常也不會有啥問題。