本文以Exadata X8 HC 1/4 rack為例,介紹整個Exadata刷機的步驟。
我理解刷機最關鍵的就兩大步驟:第一步是所有機器刷OS,第二步是使用OEDA一鍵刷機。至於其它所有工作都是在為這兩步做准備。本着對以后刷機可以快速參考,梳理細節步驟如下:
- 1.使用最新版的OEDA進行配置
- 2.下載刷機所需介質
- 3.修改preconf.csv配置文件
- 4.PXE環境部署所需服務
- 5.使用PXE快速安裝所有節點系統
- 6.使用OEDA進行一鍵刷機
- 7.不算重要的收尾工作
1.使用最新版的OEDA進行配置
根據888828.1文檔下載最新版的OEDA,建議同時下載自己電腦版本和服務器版本。使用適配自己電腦版本的OEDA,根據實際刷機需求進行配置,最終會生成一系列配置文件(主要有customer-rack-InstallationTemplate.html、customer-rack-preconf_xxx.csv、customer-rack.xml等)。
注:這一環節需要同時摸清楚現場情況,確定網絡規划(包含Admin、Client、Private網絡IP規划)、確認可用的DNS、NTP服務器,這些信息在OEDA配置時都會用到。
同時建議准備好配置PXE服務器的環境(可以使用跳轉機,也可以使用自己准備的虛擬機,后面有具體PXE服務搭建步驟)。
2.下載刷機所需介質
此步需要下載所有刷機用到的介質:1)OS介質(包含DB節點和CELL節點的OS介質)
2)根據上步OEDA的配置結果,從生成的customer-rack-InstallationTemplate.html文件中的Appendix B部分,下載列表中所有介質(通常包含GI、DB、對應補丁以及AHF)
3.修改preconf.csv配置文件
根據OEDA的配置結果,從生成的customer-rack-preconf_xxx.csv,為了簡潔直接cp一份preconf.csv文件,然后修改該文件,加入MAC地址信息(第7列兩個逗號之間,注意順序一定要對應正確)。注:這一環節可以梳理出各機器對應的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.PXE環境部署所需服務
主要需要部署並配置tftp、dhcp、http服務。4.1 安裝配置tftp:
安裝tftp:
tftp server是基於xinetd的服務,需要安裝xinetd、tftp、tftp-server
# yum -y install xinetd tftp tftp-server
配置tftp:
# 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:
#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.使用PXE快速安裝所有節點系統
使用PXE快速安裝所有DB節點和CELL節點的操作系統。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.使用OEDA進行一鍵刷機
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.不算重要的收尾工作
其實到上面的步驟,整個刷機過程就算結束了。 這里只是為了方便使用,通常會順手根據需求配置對應環境變量,可能還會使用dbca創建新的符合實際要求的數據庫。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的運維操作,一般也不會有啥問題。