XenServer 在啓動的時候,會根據提前準備好的腳本以及XAPI程序去檢查一系列的關鍵配置文件,確認這個關鍵的配置文件都處於正確的配置狀態,並讀取相應的參數和配置才能正常啓動。如果稍微有關鍵的配置文件出現損壞或者管理員手動修改了其中的一些配置文件,導致出現錯誤;那麼XenServer將自動進入維護模式。如果出現這種情況,那麼就需要XenServer本身的健康檢查工具或腳本來進行常規配置文件的檢查,並修復或者改正錯誤的配置文件參數。這個工具或者腳本跟會 根據XenServer裏面已經設計好的一個安全的健康系統模型來進行配置文件比對,該模型包括了XenServer在安裝好之後成功啓動的一個正確模型配置文件參考。
舉個例子來說,比如我們有時會遇到通過XenCenter連接XenServer出現問題,XenCenter 無法連接到XenServer,通過檢查發現XenServer的網絡處於活動狀態,其80端口和443端口以及22端口處於開放狀態。這種情況就是XenServer的其中某一關鍵配置文件處於異常狀態,導致XenServer的需要讀取該配置文件的服務讀取參數或配置錯誤,無法正常啓動。本例中XenCenter無法連接到XenServer,但是在22端口開放的情況下,我們需要通過SSH連接到XenServer進行故障的查看和排除。
SSH上去的第一步我們首先需要檢查XenServer的服務運行是否正常,一般來說XenCenter是和XAPI服務打交道的,XenCenter連接不上和XAPI有關係。通過查看服務可以發現XAPI服務沒有啓動或者說啓動錯誤,查看相應的Log日誌。知道是該服務讀取配置異常導致無法啓動。根據提示進行相應配置文件的修復,保證XAPI服務成功啓動。例如XAPI啓動會讀取state.db,如果是state.db出現問題,那麼我們只需要重置state.db即可恢復到初始化狀態,保證XAPI服務啓動。
重置state.db一般的操作是,cd到/var/xapi目錄下
對現有的state.db 進行修改,使用命令mv state.db state.db.bak,然後運行service xapi restart,會重新生成一個state.db。之後服務即可正常運行。但是這樣配置之後所有VM的配置都會丟失。所有在運維的時候要注意備份state.db等關鍵配置文件。在有備份的情況下我們恢復正常情況下的state.db,配置就回來了,不是嗎。
那麼XenServer都有那些關鍵的配置文件呢?
/boot/extlinux.conf
XenServer的引導程序配置文件,就和Linux的啓動文件是類似。這個啓動配置文件是基於SysLinux中EXT-based的文件系統內核啓動配置文件。這個配置文件裏面說明和定義了啓動內核的默認配置信息。其啓動的默認配置信息如下所示:
此外,着個配置文件還提供串行控制檯訪問或xeserial,以及安全內核模塊:
在最新的XenServer 7中,引導程序已在不使用extlinux,而是改爲GRUB2。
/etc/hosts
和Linux系統一樣,用於解析主機名的配置文件,在/etc/hosts下可以看到基本的配置信息。該文件裏面配置是提供給Dom0解析一下項目使用的:
localhost
localhost.localdomain
127.0.0.1
/etc/hostname
這個配置文件裏面的配置的信息資源用於提供給XAPI使用。比如XenCenter通過XAPI讀取該配置文件的主機名信息顯示在XenCenter的GUI界面中。
/etc/multipath.conf
這個配置文件主要用於存儲目的,在XenServer中連接存儲時如果外面考慮存儲的鏈路高可用,一般都採用多路徑的形式連接後端的共享存儲設備。XenServer支持DM和MP兩種多路徑技術,這個配置文件裏面定義相關存儲多路徑的配置,是XenServer存儲冗餘解決方案的重要配置文件。
一般來說我們在實施的時候可能會涉及到修稿該配置文件,因爲XenServer正常的兩種多路徑技術還得和後端的共享存儲進行聯動,即後端共享存儲也要支持DM-MP這類的多路徑技術才行。XenServer的該配置文件中默認定義對DM多路徑技術的支持,即我們經常在XenCenter中,通過主機進入維護模式在屬性中開啓的多路徑選項。而對於MPP的多路徑技術,需要在配置文件中手動進行修改。爲什麼會是這樣的情況呢,皆因現在的存儲一般情況下都是正常DM多路徑技術,MP多路徑技術只有少部分存儲支持。因此在遇到支持MP多路徑而不支持DM多路徑的存儲,就需要手動修該配置文件,啓用MP多路徑。
/etc/resolv.conf
該resolve.conf文件包含安裝期間指定爲XenServer的 DNS條目,或通過XenCenter或XAPI命令更改的DNS記錄信息。這個文件可以手動修改用於排除名稱解析問題。
/etc/iscsi/initiatorname.iscsi
Open-iSCSI的安裝配置文件,以方便使用基於iSCSI技術的連接存儲。在安裝期間,將在/etc/iscsi/initiatorname.iscsi爲每個XenServer主機生成一個唯一的iSCSI限定名稱(IQN)
我們在使用iSCSI來連接存儲的時候,就可以查看該配置文件找到XenServer主機的IQN,當然也可以使用XE命令進行查看。需要注意的是重新安裝XenServer該值是會變化的。
/etc/xensource/
涉及到的Xen的絕大部分“配置”文件,XAPI服務等核心進程的配置文件都存儲在這裏。這些大多數文件都在安裝中產生。
/etc/xensource/boot_time_cpus
該配置文件主要內容是在每次系統啓動時所讀取的包含的有關物理主機插槽和內核的信息。
# diff/etc/xensource/boot_time_cpus /proc/cpuinfo
該命令查看boot_time_cpus文件的內容。
這個信息是不只保存來提供給dom0使用,還會被更新到XAPI數據庫中。
/etc/xensource/bugtool/
bugtool目錄有幾個子目錄和XML文件,它定義了XenServer的內置bugtool的範圍、屬性和數據的輸出限制。這樣的文件規定了該工具最大輸出大小和其他所需的內核崩潰轉儲(或服務器狀態報告)訪問標準,以及如何利用和存儲在錯誤的條件下所需要的數據。
/etc/xensource/db.conf
這個配置文件是 XenServer數據庫配置信息,真正的命名稍長,是db.conf.rio,主要存儲的配置信息描述如下:
在哪裏去找XAPI數據庫
在讀取數據庫時使用的格式
有關會話使用及會話有效性的信息
/etc/xensource/installed-repos/
根安裝和升級以及補丁包等有關係的配置文件,裏面定義了安裝的系統版本以及系統包,補丁包等等內容,如果我們需要更新,也可以使用修改該配置文件的方法。
/etc/xensource/master.d/
這個目錄可以包含主機初始化過程中使用的一個或多個初始化級別的腳本。此外,一個示例性的初始化腳本是專門提供給XenServer Pool Master說使用的。在資源池中根據主機的運行級別運行相應腳本操作相應功能。現在這些腳本在XenServer 7上是全新重新編寫的。XenServer 7的Dom0是基於CentOS7開發定製版本。其在啓動是時候初始化程序是systemd模型。這種模式在執行如何init-level腳本時和之前的Linux版本有較大的區別。因此我們以前在XenServer6的環境下說編寫的啓動腳本或者優化腳本就已經不起作用了。
/etc/xensource/network.conf
這是XenServer的網絡配置文件,裏面描述了XenServer主機說使用的網絡類型及依稀參數。在該配置文件中有兩種選擇:bridge或openvswitch。其中bridge對應的是傳統的Linux網絡的bridge網絡堆棧,同時openvswitch對應開放虛擬交換機或OVS。該OVS是在XenServer6.0的時候被默認在該配置文件中設置爲默認配置的。包括最新的XenServer 7也是。但是OVS還需要開發,相比較bridge而言,openvswitch在使用網絡大吞吐上還存在瓶頸,當然這個結論目前僅限於XenServer,至於KVM的性能如何還需要測試才知道。
/etc/xensource/pool.conf
Pool文件用於主機確定自己是處於資源池環境(Master還是Slave)還是單獨的獨立運行環境。該文件擁有主要的兩個健值:Master 或 Slave。
一般來說,如果在切換Master的時候,我們就可以使用cat/etc/xensource/pool.conf來查看當前主機是處於Master還是Slave。查詢的結果如果是Slave,那麼結果還會顯示Master的信息,比如IP地址等。在沒有開啓HA的情況下,我們還可以手動修改該配置文件,手動進行Master還Slave的指定。
/etc/xensource/ptoken
該ptoken文件於SSL一起,被用作XenServer的資源池之間個成員服務器的安全通信。
/etc/xensource/scripts/
該腳本目錄包含一個或多個初始化腳本,很像master.d目錄。
/etc/xensouce/xapi-ssl.conf
這個文件主要是用來規定使用443端口傳輸和XenAPI通信的加密流量的認證、加密證書、私鑰等信息。同時還涉及加密類型,加密方法,以及在哪裏存儲XenServer的證書。
/etc/xensouce/xapi-ssl.pem
XAPI-ssl.pem是/etc/init.d/xapissl上安裝產生的私鑰。它引用XAPI-ssl.conf配置文件中的定義爲XenServer主機創建了獨特的保密增強(PEM)文件。
/etc/ntp.conf
是屬於比較重要的配置文件之一。我們都知道如果宿主機的實際和我們的環境時間如果產生較大的出入,是可能會影響到騎上說承載還虛擬機和其他業務系統的關聯於調度的。有時候我們通過命令調節XenServer的時間發現老是出現反彈,那麼我們可以採用修改NTP配置文件的方法,一勞永逸修好和同步宿主機的時間。
/var/xapi/
該目錄包含完整的XAPI數據庫,這是在主機進行安裝之後或者資源池創建之後,說進行的XAPI配置和管理信息。該目錄就包含了在文章初期我們所述的狀態數據庫例子,一般來說對於該目錄我們最好的辦法是不要修改裏面內容,因爲這裏面還配置文件大部分都是基於運行環境自動進行生成的,我們手動進行修改之後可能的問題就是數據的丟失,就比如刪除掉狀態數據庫,將會導致的是我們在XenCenter上看不見我們以前的虛擬機和共享存儲等信息了。但是也不用着急和心慌,因爲數據都還在,該啥樣還是啥樣,只是GUI界面說展示的信息沒有了而已,通過命令行我們還是可以查看到的。那麼在這種情況下需要恢復GUI的顯示,只有手動將這些關聯數據和信息進行恢復了。
/var/patch/ and /var/patch/applied/
這兩個目錄極其重要,因爲它們包含了補丁程序,補丁的列表,和維護XAPI必不可少的元數據。無論你是否是一臺獨立的XenServer主機還是XenServer資源池,XAPI必須要保證以下條件:
1.補丁已經被應用到獨立主機。
2.補丁已經被應用到所有主機池。
3.所有主機在修補了補丁後的動作,諸如重新啓動等均已完成。
在這兩個目錄中說包含的補丁程序每一個都有一個獨特的標識,即基於UUID的文件名的文件。同時此目錄是不能夠被刪除的,因爲XAPI會通過該目錄檢測XenServer的補丁情況,然後如果在聯網的情況下XAPI還會對比補丁列表以提醒或**新的更新。