新聞中心
批量檢查和修復windows虛擬機的方法
作者:燕杰 李京龍 蔡冠偉 2018-10-11 11:07:28
云計算
虛擬化 我們內(nèi)部有一個規(guī)模不大的私有云,承載內(nèi)部應用和測試系統(tǒng),目前運行了超過1000臺虛擬機。采用技術(shù)方案為KVM虛擬化+Sheepdog分布式塊存儲。

臨夏網(wǎng)站建設公司創(chuàng)新互聯(lián)建站,臨夏網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為臨夏近千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設要多少錢,請找那個售后服務好的臨夏做網(wǎng)站的公司定做!
01 - 系統(tǒng)概況
我們內(nèi)部有一個規(guī)模不大的私有云,承載內(nèi)部應用和測試系統(tǒng),目前運行了超過1000臺虛擬機。采用技術(shù)方案為KVM虛擬化+Sheepdog分布式塊存儲:
(1)運行虛擬機的計算節(jié)點為CentOS 6.5,虛擬化技術(shù)采用KVM,虛擬機管理采用開源OpenNebula方案(選擇OpenNebula主要是歷史沿襲,日常管理需求簡單,基本夠用)
(2)虛擬機的鏡像,運行在后端分布式塊存儲系統(tǒng)上,此系統(tǒng)是基于開源的Sheepdog架構(gòu)。
02 - 存在的問題與解決思路
2.1 - 存在問題
由于虛擬機鏡像都承載在分布式塊存儲系統(tǒng)中,虛擬機的所有存儲IO都會經(jīng)過分布式存儲系統(tǒng)。在此情況下,一旦分布式塊存儲系統(tǒng)異常(如承載網(wǎng)絡較大規(guī)模故障、存儲系統(tǒng)集群機制異常等),承載虛擬機的計算節(jié)點與存儲系統(tǒng)之間的存儲IO出現(xiàn)阻塞,進而虛擬機的存儲IO也出現(xiàn)阻塞,虛擬機操作系統(tǒng)(特別是Windows操作系統(tǒng)的虛擬機)會出現(xiàn)異常,如Windows系統(tǒng)藍屏、系統(tǒng)自檢、進入檢查模式等各種情況。即便存儲系統(tǒng)后續(xù)恢復正常,這些虛擬機很可能依然處于異常狀態(tài)。
虛擬機異常,一般有很多常規(guī)辦法來發(fā)現(xiàn),如:
(1) ping檢查。但虛擬機所屬應用維護人員可能會禁止ping,或在安全組上做限制。
(2)部署zabbix、nagios等監(jiān)控系統(tǒng)的agent進行異常監(jiān)控。但虛擬機所屬應用維護人員可能會關閉或卸載agent。
(3)通過計算節(jié)點的qemu-kvm的一些工具來判斷虛擬機文件系統(tǒng)是否可以寫入。但這個方式涉及“侵入”虛擬機,屬于嚴厲禁止的操作。
可以看出上述方法有兩個問題:
(1)如果虛擬機歸屬不同使用人,每個使用人有不同運維風格,習慣或管理要求(如禁止ping或關閉agent客戶端),使用常規(guī)方法來判斷出問題的虛擬機會有疏漏)
(2)無法判斷虛擬機(特別是Windows虛擬機)的具體異常情況,如藍屏、系統(tǒng)自測等。
因此,最穩(wěn)妥的方式是VNC工具連接到各個虛擬機,檢查虛擬機屏幕信息判斷其狀態(tài),再根據(jù)狀態(tài)一個個修復(VNC雖然可以看到虛擬機屏幕,但是虛擬機都是有登陸賬號和登陸密碼的,檢查人員并沒有這些賬號密碼,因此不會“侵入”虛擬機)。但是修復過程非常繁瑣,核查和修訂的步驟主要如下:
核查操作:
(1)登陸到某臺計算節(jié)點,VNC某臺虛擬機,通過VNC界面查看其狀態(tài)(藍屏、自檢等)。虛擬機數(shù)量多的情況下,需要多人分工進行開展,通過表格進行記錄。
(2)匯總各個檢查人員的檢查結(jié)果表格。
修復操作:
(3)按照表格進行多人分工,各自負責部分虛擬機的修復,如下述4-6步驟。
(4)嘗試人動重啟虛擬機。
(5)如果依舊藍屏或其他異常,則需要手動掛載Win PE系統(tǒng)嘗試修復。需要手動將Win PE的iso文件拷貝至計算節(jié)點,手動修改虛擬機配置文件使其掛載Win PE的iso文件,重啟虛擬機進行Win PE模式然后手動進行修復。
(6)修復完畢重啟,如果系統(tǒng)依舊無法登錄,且虛擬機使用人建議重裝操作系統(tǒng),則需要將虛擬機重置重裝。
可以看出,整個過程都是手工對每臺虛擬機分別操作,耗時長,效率低。
2.2 - 解決思路
上述手工操作步驟中,VNC配置、虛擬機匯總信息表格、虛擬機配置、Win PE iso鏡像,都是文件形式,都可以通過腳本進行批量生成、修改,具備自動化的基礎。
將上述手工操作步驟腳本化,形成如下批量核查和修復的腳本工具:
(1)能夠自動生成待核查的虛擬機信息excel表格
(2) 能夠批量VNC截圖虛擬機的屏幕狀態(tài),人工識別和判斷虛擬機屏幕的狀態(tài)。
(3)對于需要修復,并能一鍵掛載Win PE鏡像到虛擬機上進行引導修復或重裝操作。
03- 批量核查和修復虛擬機的具體方法
3.1 - 工具實現(xiàn)框架
在生產(chǎn)環(huán)境里,我們已經(jīng)用了Saltstack作為配置工具,基于Saltstack的批量操作與配置能力,我們在統(tǒng)一腳本服務器上,制作了對應的shell腳本和python腳本來實現(xiàn)具體功能,并用Linux的Diaglog進行簡單匯總展示。如下圖:
3.2 - 一鍵導出虛擬機
根據(jù)集群影響范圍及虛擬機數(shù)量,按照IP地址順序,導出所有可能存在問題的虛擬機到excel,導出來后可以進行過濾與編輯,快速進行多人分工核查。
在我們生成環(huán)境,同一網(wǎng)段對應的是同一個業(yè)務系統(tǒng),因此我們一般根據(jù)虛擬機數(shù)量和業(yè)務系統(tǒng)(網(wǎng)段)進行分工。
3.3 - 虛擬機批量VNC截屏按鍵檢查
根據(jù)3.2步驟過濾出的虛擬機IP地址信息,獲取虛擬機所在物理機及VNC端口號,使用VNCdotool工具調(diào)用虛擬機VNC接口進行按鍵測試,并進行虛擬機屏幕截圖。
根據(jù)虛擬機IP地址信息,生成一個已經(jīng)設定好模板的checklist表格(csv格式),便于記錄和匯總后面步驟中人工判斷的信息。表格主要字段為: IP、主機名、虛擬機ID、業(yè)務系統(tǒng)聯(lián)系人、***次檢查結(jié)果,引導修復后狀態(tài),重裝后狀態(tài)。
將截圖信息和表格一并打包下載到本地。
具體步驟如下:
(1)使用《8 虛擬機批量VNC截屏按鍵檢查》,上傳記錄了虛擬機主機名或者IP地址的vmlist.txt文件
(2)上傳vmlist.txt文件后,腳本會讀取文件里的主機名或者IP,自動進行VNC登陸和截圖,并會壓縮成一個以時間日期為名稱的壓縮文件,可將截圖的壓縮文件保存到本地。
(3)解壓壓縮文件,進入目錄查看虛擬機VNC截圖的目前的運行情況,人工檢查虛擬機屏幕截圖,并在checklist表格里記錄檢查信息(重點是將藍屏、自檢、無法進入系統(tǒng)的虛擬機過濾出來)。因為截圖已經(jīng)匹配做好,且做好命名,這個時候人工檢查工作量就相對小。
3.4 - 虛擬機一鍵修復引導
(1)如果虛擬機異常,則嘗試進行虛擬機修復。
(2)執(zhí)行工具輸入需要修復IP或主機名,腳本將自動從鏡像庫將Win PE文件傳輸?shù)接嬎愎?jié)點對應目錄下,修改虛擬機配置文件來掛載Win PE(Win PE已進行修改,能夠自動進入Win PE并打開NTboot修復工具),然后重啟虛擬機以使虛擬機配置生效。
(3)虛擬機啟動后,將自動調(diào)用NTboot工具進行磁盤修復。此時需要手工進行選擇操作和觀察修復結(jié)果。
3.5 一鍵重裝虛擬機系統(tǒng)
如果需要重裝虛擬機,執(zhí)行工具輸入需要重裝IP或主機名。腳本將自動:
(1)進入計算節(jié)點關閉虛擬機。
(2)進入分布式塊存儲系統(tǒng)節(jié)點備份虛擬機鏡像,記錄鏡像ID,然后卸載鏡像。
(3)在分布式塊存儲系統(tǒng)節(jié)點中,通過基礎鏡像(Windows初始化后的狀態(tài))克隆出一個跟原有鏡像ID一樣的鏡像,作為新的虛擬機鏡像。
(4)重新掛載新的虛擬機鏡像,實現(xiàn)重裝。
04 -可探討和優(yōu)化的問題
上述的Windows虛擬機檢查和修復方法,是我們在一次實際故障后根據(jù)故障處理過程總結(jié)出來的操作方法和腳本工具,由于同類故障遇到的很少,且我們?nèi)粘V饕鯨inux維護,對Windows了解不深,可能存在很多疏漏或可優(yōu)化的地方,大家如有問題或意見,可以留言討論。
(1)從根源上來說,還是要保證分布式塊存儲系統(tǒng)及對應網(wǎng)絡的穩(wěn)定性,這個是此故障場景的根源問題。
(2)從我們遇到的故障現(xiàn)象看,分布式塊存儲系統(tǒng)異常時,Windows虛擬機容易異常,但Linux則相對較少,但我們不知具體原因是什么(例如Linux對磁盤IO讀寫、文件系統(tǒng)小讀寫有更好的優(yōu)化)。不知Windows是否有什么需要特別優(yōu)化的配置?如有經(jīng)驗歡迎留言分享。
(3)在我們環(huán)境里,虛擬機歸屬其它團隊,他們可能禁止ping或監(jiān)控agent運行,這個時候如何更好判斷虛擬機的“死活”?如有經(jīng)驗歡迎留言分享。
(4)目前還有一些環(huán)節(jié)是需要人工參與判斷,例如看虛擬機屏幕判斷是否有藍屏、是否進入自檢。這部分可以結(jié)合簡單的圖像識別技術(shù)進行實現(xiàn),自動化程度會更高。
(5)因為此工具的使用并非高頻場景(如果高頻,老板鐵定要爆炒我們了),所以目前還停留在腳本階段,暫未納入到我們的運維平臺中,后續(xù)我們也會進一步優(yōu)化和改進。
網(wǎng)頁名稱:批量檢查和修復Windows虛擬機的方法
網(wǎng)站URL:http://m.fisionsoft.com.cn/article/cojchsg.html


咨詢
建站咨詢
