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