◆章 昆 王蓓蓓
(中國電子科技集團第二十八研究所 江蘇 210007)
由于空管系統(tǒng)的專業(yè)性和特殊性,需要每天二十四小時不間斷穩(wěn)定可靠地運行,才能為保障空中交通安全提供實時的自動化處理。由于Linux操作系統(tǒng)的穩(wěn)定性、安全性方面的優(yōu)勢,空管系統(tǒng)一般選其作為系統(tǒng)運行平臺,但是同時也對現(xiàn)場維護人員提出了很高的技術(shù)要求。一臺主機的常規(guī)安裝配置過程不僅包括操作系統(tǒng)的安裝,還需要進行空管系統(tǒng)相關(guān)的數(shù)據(jù)庫、專業(yè)軟件、各類驅(qū)動等進行安裝配置。如果在現(xiàn)場出現(xiàn)系統(tǒng)異常,需要恢復(fù)系統(tǒng)時,即使是有經(jīng)驗的人員,短時間內(nèi)也很難全部恢復(fù)正常,因此需要給現(xiàn)場提供一個快速恢復(fù)系統(tǒng)的方法。
下面介紹基于Red Hat Enterprise Linux(以下簡稱RHEL)運行的空管自動化系統(tǒng)的幾個操作系統(tǒng)恢復(fù)方案,并進行對比分析,給出推薦使用場合。
Clonezilla是目前比較通用的系統(tǒng)克隆工具,它支持對多種操作系統(tǒng)和文件系統(tǒng)的備份和恢復(fù);其用法類似于Norton Ghost,可以對整個硬盤進行克隆,也可以克隆單個分區(qū)。使用者不需要有l(wèi)inux操作系統(tǒng)的基礎(chǔ),只要正確按照操作步驟做,就可以完成備份和恢復(fù)的過程。這種操作比較適合規(guī)模很小的機場終端和通航終端。
(1)制作Clonezilla引導(dǎo)和備份恢復(fù)介質(zhì)
由于空管系統(tǒng)涉及的專業(yè)軟件比較多,文件比較大,一般的光盤無法裝下。所以目前采用U盤來制作引導(dǎo)盤和備份恢復(fù)盤。將Clonezilla鏡像文件通過工具(例如UltraISO)寫入U盤,制作成可引導(dǎo)的安裝U盤。
(2)制作備份鏡像
首先保證系統(tǒng)已經(jīng)安裝調(diào)試完畢,不再有更新文件時,就可以準備制作備份盤。
根據(jù)Clonezilla軟件的提示,完成從硬盤備份到U盤的過程,最終會在U盤上生成一個備份目錄,里面包括各類鏡像文件。
(3)恢復(fù)步驟
如果系統(tǒng)出現(xiàn)故障無法恢復(fù)時,需要把備份鏡像恢復(fù)到主機上。
將U盤插入主機的USB口,加電后選擇從USB設(shè)備引導(dǎo)。
根據(jù)Clonezilla軟件的提示,可以完成從U盤備份鏡像目錄恢復(fù)到硬盤的過程。
恢復(fù)完成并重啟后,系統(tǒng)即恢復(fù)成備份前的狀態(tài)。
由于目的硬盤必須大于或等于原來的硬盤大小,所以注意不能在不同機型的主機或者小于原硬盤大小的同類主機上進行恢復(fù)。
對于小型機場空管系統(tǒng)及通航系統(tǒng)來說,由于系統(tǒng)設(shè)備數(shù)量少,并不配備專門的技術(shù)維護人員,而其他兼職的人員對于Linux系統(tǒng)并不熟悉,此時利用Clonezilla軟件來恢復(fù)系統(tǒng)是一個快速方便的做法,不需要進行其他命令操作,只要在操作過程中選擇正確,恢復(fù)系統(tǒng)方便快捷。
中型機場的規(guī)模有了擴大,空管系統(tǒng)涉及的設(shè)備量也有了很大的增加。根據(jù)工作角色不同,系統(tǒng)一般由不同配置和性能的主機來構(gòu)成,包括各種型號服務(wù)器和工作站。如果使用Clonzilla方式進行安裝恢復(fù)則需要多個不同類型的安裝介質(zhì),才能適應(yīng)不同的硬件設(shè)備。這樣給現(xiàn)場工作帶來不少麻煩,介質(zhì)管理起來也不方便。
Kickstart是 RHEL系統(tǒng)提供的一個安裝過程自動化方法,Kickstart文件包含所有安裝程序會交互的配置,比如系統(tǒng)中使用的時區(qū)、如何對驅(qū)動器進行分區(qū)、或者應(yīng)該安裝哪些軟件包,甚至最后還可以根據(jù)需要執(zhí)行腳本來完成一些定制內(nèi)容。如果安裝開始時有一個準備好的 Kickstart 文件,那么就可以進行自動安裝,而不需要用戶的介入。這對節(jié)約現(xiàn)場技術(shù)維護時長特別有用,而且同一個安裝介質(zhì)可以安裝不同類型的主機,簡化了現(xiàn)場管理。
Kickstart 文件本身是一個純文本文件,可以從頭編寫,也可以在之前已經(jīng)安裝完成的主機上復(fù)制一個,已經(jīng)手動安裝完成的主機上會生成/root/anaconda-ks.cfg文件,可以在這個基礎(chǔ)上再根據(jù)需要進行定制修改[1]。
ks.cfg文件一般包括三個部分:
(1)Command 部分
這部分主要包括給出各種必須提供的信息項,比如時區(qū)、語言、超級用戶密碼、安裝位置、硬盤分區(qū)等等,這樣安裝的過程中就不再需要交互輸入。
……
harddrive --dir=/ --partition=/dev/sdb4
keyboard 'us'
rootpw iscrypted$1$x6qdKATY$qK1gPYf.UfSSByHbnCAKB.
timezone GMT --isUtc
lang zh_CN.UTF-8
cdrom
graphical
bootloader --location=mbr --driveorder=sda --boot-drive=sda
clearpart --all --initlabel
part /boot --fstype="ext4" --size=2048 --ondisk=sda
part / --fstype="ext4" --size=150000 --ondisk=sda
part swap --fstype="swap" --size=8192 --ondisk=sda
part /home --fstype="xfs" --grow --size=1 --ondisk=sda
part /datapool --fstype="xfs" --grow --size=1 --ondisk=sdb
……
(2)%packages 部分
這部分是提供需要安裝的系統(tǒng)軟件包,可以根據(jù)空管系統(tǒng)對軟件的需求進行定制。
%packages
@base
@core
……
%end
(3)%pre 和 %post 部分
%post部分是實現(xiàn)空管系統(tǒng)定制安裝的關(guān)鍵部分,空管系統(tǒng)軟件安裝或者配置都是在這個部分完成的。
%post
……
INSTDIR=./atc-soft
if [ -d $INSTDIR ]; then
( cd $INSTDIR ; ./install_atc)
fi
……
%end
其中install_atc腳本是實現(xiàn)空管軟件無人值守安裝的關(guān)鍵,通過編寫install_atc腳本可以將空管軟件包含的數(shù)據(jù)庫、軟件、驅(qū)動和必要配置等等都一次性安裝到硬盤上,極大減輕了現(xiàn)場技術(shù)人員的負擔。
將RHEL系統(tǒng)鏡像文件通過工具(例如UltraISO)寫入U盤,制作成可引導(dǎo)的安裝U盤。
指定引導(dǎo)介質(zhì)使用生成的ks.cfg。
把ks.cfg復(fù)制到已經(jīng)制作好的可引導(dǎo)U盤上,然后修改安裝條目的 append 行來指定ks.cfg的路徑,使得安裝過程中能夠自動載入Kickstart文件。
append initrd=initrd.img inst.stage2=hd:/dev/sdb4
ks=hd:sdb4:/ks.cfg quiet
將空管軟件所需的數(shù)據(jù)庫、軟件、驅(qū)動、配置和腳本都復(fù)制到該U盤上的固定目錄(atc-soft)下,使得安裝腳本install_atc能夠正確識別。
上述步驟都完成后,下面對于使用者來說就非常簡單了,需要做的事情就是將U盤插在主機上,開機后選擇從U盤進行引導(dǎo),下面的工作就不再需要人工干預(yù)。而且在操作系統(tǒng)安裝完成的同時,空管系統(tǒng)相關(guān)軟件也完成了安裝。采用這種技術(shù)還有一個優(yōu)勢在于,如果操作系統(tǒng)需要增加新的軟件包或刪除某些軟件包,直接修改ks.cfg文件就可以;如果空管軟件后期有升級,也可以將最新的空管軟件更新到 U盤指定的目錄下,這樣安裝 U盤能夠和最新的運行平臺保持一致。
對于中型空管系統(tǒng),現(xiàn)場技術(shù)維護人員有一定的Linux基礎(chǔ),可以進行操作系統(tǒng)的基本操作,也可以將最新空管軟件更新到安裝U盤上。利用本地自動安裝技術(shù),可以減少技術(shù)員對系統(tǒng)的配置,節(jié)約恢復(fù)時間。
在大型的空管系統(tǒng)中,主機數(shù)量大、種類多,安裝配置各種主機是個更加繁重的工作,即使使用Kickstart無人值守安裝,有時也不能適應(yīng)同時配置多臺主機的場景。這時,網(wǎng)絡(luò)安裝技術(shù)可以解決此類問題。Kickstart無人值守網(wǎng)絡(luò)安裝就是基于 PXE技術(shù),同時配合NFS、DHCP、TFTP來實現(xiàn)的網(wǎng)絡(luò)安裝技術(shù)。
PXE(Pre-boot Execution Environment,預(yù)啟動執(zhí)行環(huán)境)是由Intel設(shè)計的協(xié)議,它可以使計算機通過網(wǎng)絡(luò)啟動,該協(xié)議分為client和server兩端??蛻魴C通過支持PXE的網(wǎng)卡向網(wǎng)絡(luò)中發(fā)送請求、DHCP信息的廣播請求、IP地址等信息,DHCP服務(wù)器給客戶端提供IP地址和其他信息(TFTP服務(wù)器、啟動文件等),之后請求并下載安裝需要的文件。
在這個實現(xiàn)里,最復(fù)雜的就是安裝服務(wù)器的配置,其中涉及的步驟和文件比較多,但是一旦配置完成,該服務(wù)器可以對系統(tǒng)里所有機型提供安裝服務(wù),后期使用成本很低。
為了使用和管理方便,一般將網(wǎng)絡(luò)安裝需要的NFS、DHCP和TFTP服務(wù)都配置在同一臺安裝服務(wù)器上。下面是具體步驟(涉及的配置文件也需事先準備好,并放入空管軟件目錄atc-soft下,下面$INSTDIR即代指atc-soft目錄):
(1)配置安裝網(wǎng)卡。
在安裝服務(wù)器上指定一個網(wǎng)卡用來提供安裝服務(wù),配置IP地址(例如199.28.4.99)。
(2)配置NFS服務(wù)器,用于存放系統(tǒng)安裝時所需要的文件。
(3)安裝nfs和rpcbind 軟件包:
/bin/yum -y install nfs*
/bin/yum -y install nfs-utils*
/bin/yum -y install rpcbind
(4)設(shè)置NFS配置文件:
/bin/cp $INSTDIR/exports /etc/
(5)啟動NFS 服務(wù):
/bin/systemctl restart rpcbind.service
/bin/systemctl restart nfs-server.service
/bin/systemctl enable rpcbind.service
/bin/systemctl enable nfs-server.service
(6)配置DHCP服務(wù)器,用于給客戶端提供IP地址及其他信息。
(7)安裝dhcp軟件包:/bin/yum -y install dhcp。
(8)修改DHCP服務(wù)的配置文件:
/bin/cp $INSTDIR/dhcpd.conf /etc/dhcp/
(9)啟動DHCP服務(wù):
/bin/systemctl restart dhcpd.service
/bin/systemctl enable dhcpd.service
(1)安裝tftp軟件:
/bin/yum -y install tftp
/bin/yum -y install tftp-server
/bin/yum -y install xinetd
/bin/cp $INSTDIR/tftp /etc/xinetd.d/
(2)啟動tftp服務(wù):
/bin/systemctl restart xinetd.service
/bin/systemctl enable xinetd.service
(3)配置TFTP系統(tǒng)啟動文件:
/bin/yum -y install syslinux
/bin/cp $INSTDIR/pxelinux.0 /var/lib/tftpboot
/bin/cp $INSTDIR/boot.msg /var/lib/tftpboot
/bin/cp $INSTDIR/splash.png /var/lib/tftpboot
/bin/cp $INSTDIR/boot.msg /var/lib/tftpboot
/bin/cp $INSTDIR/vmlinuz /var/lib/tftpboot
/bin/cp $INSTDIR/initrd.img /var/lib/tftpboot
/bin/cp $INSTDIR/vesamenu.c32 /var/lib/tftpboot
/bin/mkdir -p /var/lib/tftpboot/pxelinux.cfg
/bin/cp $INSTDIR/default /var/lib/tftpboot/pxelinux.cfg/
(4)配置Kickstart自動應(yīng)答安裝文件
把ks.cfg復(fù)制一份到/var/ftp/pub目錄下,內(nèi)容和使用U盤進行kickstart安裝的過程類似,只是其中的介質(zhì)路徑不再使用U盤(ks.cfg里為cdrom),而是需要修改成下面內(nèi)容,IP地址是安裝服務(wù)器的提供安裝服務(wù)的網(wǎng)卡地址:
nfs --server=199.28.4.99 --dir=/home/iso
上述步驟完成后,重啟主機,安裝服務(wù)器配置完成。為了簡化現(xiàn)場維護人員的工作,這些步驟也可以放在一個腳本installOS.sh里面,在配置時只需要運行這個腳本,上面的步驟可以自動順序執(zhí)行,所需花的時間一般在幾十秒。
在啟動需要安裝的主機時,根據(jù)主機型號的不同進入網(wǎng)卡引導(dǎo)的方式也略有區(qū)別,一旦進入 PXE引導(dǎo)過程后,主機將通過MAC地址自行尋找網(wǎng)絡(luò)上的DHCP服務(wù)器,見圖1。
圖1 主機通過MAC地址自行尋找網(wǎng)絡(luò)上的DHCP服務(wù)器
正確分配到IP地址后,就進入操作系統(tǒng)安裝界面,如圖2。
圖2 操作系統(tǒng)安裝界面
此時便開始安裝系統(tǒng),中間不需要人工干預(yù)。
對于大型空管系統(tǒng)如區(qū)域管制自動化系統(tǒng),其設(shè)備量非常大,設(shè)備種類也非常多,使用網(wǎng)絡(luò)安裝方式,不但減少了人工的操作,而且還保證了系統(tǒng)的一致性,保證了運行的安全可靠性。
現(xiàn)將上述三種方式總結(jié)對比如表1。
表1 三種方式對比
空管系統(tǒng)屬于實時、安全和使命重大的系統(tǒng),需要根據(jù)實際情況進行快速的系統(tǒng)安裝和恢復(fù)。本文根據(jù)管制系統(tǒng)規(guī)模的大小、維護人員技術(shù)水平的高低,對系統(tǒng)快速恢復(fù)技術(shù)進行了研究和實現(xiàn),以上技術(shù)已在現(xiàn)有多個空管系統(tǒng)中得到了應(yīng)用,并取得了很好的效果。