吳金興
摘? 要: 目前介紹在云計(jì)算平臺上人工恢復(fù)虛擬磁盤數(shù)據(jù)的技術(shù)文獻(xiàn)比較少,讓很多企業(yè)用戶因缺乏自行處理能力而需采購數(shù)據(jù)恢復(fù)服務(wù),做不到即時(shí)挽救數(shù)據(jù)和節(jié)約費(fèi)用。在云計(jì)算平臺上通過一常見的典型虛擬磁盤故障實(shí)例,研究對虛擬磁盤的三種操作方法,并結(jié)合系統(tǒng)運(yùn)維和數(shù)據(jù)恢復(fù)的技術(shù)成功安全地恢復(fù)用戶數(shù)據(jù)。總結(jié)了這些方法在企業(yè)生產(chǎn)環(huán)境中的應(yīng)用注意事項(xiàng)。
關(guān)鍵詞: 云計(jì)算; 虛擬磁盤; 數(shù)據(jù)恢復(fù); 方法
中圖分類號:TP309.3? ? ? ? ? 文獻(xiàn)標(biāo)志碼:A? ? ?文章編號:1006-8228(2019)06-37-04
Abstract: At present, there are few of technical documents on manual recovery of the virtual disk data on cloud computing platform, so many enterprise users need to purchase data recovery service because of lack of self-processing ability, and can't immediately save the data and save cost. In this paper, through a typical example of virtual disk failure on cloud computing platform, three methods of operating virtual disk are studied, and combined with the technologies of system operation and maintenance and data recovery, the user data is recovered successfully and safely. The points should pay attention to in the application of these methods in the enterprise production environment are summarized.
Key words: cloud computing; virtual disk; data recovery; method
0 引言
云計(jì)算[1]是繼上世紀(jì)八十年代大型計(jì)算機(jī)到客戶端-服務(wù)器的大轉(zhuǎn)變之后的又一種巨變。云計(jì)算是分布式計(jì)算、并行計(jì)算、效用計(jì)算、存儲、虛擬化、負(fù)載均衡、熱備份冗余等傳統(tǒng)計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)發(fā)展融合的產(chǎn)物。OpenStack作為影響力最大的開源云計(jì)算平臺,當(dāng)它在國內(nèi)被推廣應(yīng)用后,基于它彌生出了許多公有云和私有云的產(chǎn)品,這些產(chǎn)品給用戶或者企業(yè)帶來非常便利的場景應(yīng)用和生產(chǎn)環(huán)境應(yīng)用。但是,這也導(dǎo)致用戶數(shù)據(jù)或者企業(yè)數(shù)據(jù)被集中存儲在數(shù)據(jù)中心,而且是基于虛擬化技術(shù)存儲的。
信息數(shù)據(jù)是非常重要的,常用辦法是定時(shí)備份。雖然云計(jì)算的多主機(jī)集群技術(shù)可解決虛擬實(shí)例(VM)在單主機(jī)上運(yùn)行的故障問題。但是當(dāng)VM系統(tǒng)出現(xiàn)宕機(jī)時(shí),可能會因VM的虛擬磁盤文件太大、系統(tǒng)業(yè)務(wù)需要不能停機(jī)或者缺乏備份工具等等客觀因素,導(dǎo)致VM的數(shù)據(jù)做不到秒級的備份,備份數(shù)據(jù)存在時(shí)效性問題或缺失性問題,這情況下只能通過人工技術(shù)手段進(jìn)行數(shù)據(jù)恢復(fù)了。
在云計(jì)算平臺(下簡稱云平臺)方面,缺乏對虛擬實(shí)例進(jìn)行數(shù)據(jù)恢復(fù)的文獻(xiàn)供企業(yè)的運(yùn)維人員參考,使其難以做到快速自行解決問題和節(jié)約維護(hù)成本。
1 解決思路
在數(shù)據(jù)恢復(fù)開始階段,通常對于傳統(tǒng)硬件磁盤的處理有兩種方法:一是把故障磁盤拆卸并換掛到恢復(fù)工作的計(jì)算機(jī)系統(tǒng);二是通過軟件工具鏡像磁盤[2],把鏡像文件復(fù)制到恢復(fù)工作的計(jì)算機(jī)系統(tǒng)。然后運(yùn)用數(shù)據(jù)恢復(fù)軟件對磁盤或者磁盤鏡像文件具體分析,再用不同的數(shù)據(jù)恢復(fù)技術(shù)方案處理。云平臺的實(shí)例也包含vCPU,虛擬內(nèi)存,虛擬磁盤等。因此,對于虛擬磁盤的數(shù)據(jù)恢復(fù),我們也是可以借鑒傳統(tǒng)方式進(jìn)行的方法。
在云平臺上,無論實(shí)例的存儲類型是本地存儲還是共享存儲,它的啟動(dòng)磁盤在平臺的UI界面上都是無法卸載的,這就導(dǎo)致無法將此磁盤換載到另一個(gè)實(shí)例中進(jìn)行識別讀取數(shù)據(jù)了。那么應(yīng)該如何對這些虛擬磁盤進(jìn)行操作,下面將通過一個(gè)日常運(yùn)維中最為常見的典型磁盤故障案例進(jìn)行舉例。
2 實(shí)驗(yàn)研究
2.1 案例環(huán)境介紹
我司于2014年上線了基于OpenStack平臺二次開發(fā)的私有云產(chǎn)品,采用KVM虛擬化技術(shù),虛擬機(jī)實(shí)例是通過用libvirt XML[3]配置文件進(jìn)行定義的,虛擬磁盤文件存放在云平臺的實(shí)例運(yùn)行主機(jī)的本地存儲路徑中。虛擬機(jī)實(shí)例從windows XP 操作系統(tǒng)虛擬化模板創(chuàng)建,虛擬磁盤文件格式為Qcow2[4],其中啟動(dòng)磁盤大小為20GB,另設(shè)置一個(gè)虛擬磁盤為10GB,文件系統(tǒng)都是NTFS。云計(jì)算節(jié)點(diǎn)主機(jī)的操作系統(tǒng)為Centos 6.5 linux。故障虛擬機(jī)實(shí)例ID為i-21(instance-00000021),平臺中的實(shí)例名稱為nocvm5,系統(tǒng)故障為“error loading operating system”,屬于磁盤級別的故障,如圖1所示,用戶把數(shù)據(jù)文件保存在操作系統(tǒng)默認(rèn)的“桌面”和“我的文檔”。用于恢復(fù)數(shù)據(jù)的虛擬機(jī)實(shí)例ID為i-3f(instance-0000003f),平臺的實(shí)例名稱為nocvm26,與nocvm5運(yùn)行在同一計(jì)算節(jié)點(diǎn)主機(jī)。案例需求是恢復(fù)虛擬機(jī)nocvm5的“桌面”和“我的文檔”的用戶數(shù)據(jù)文件。
2.2 數(shù)據(jù)恢復(fù)操作的操作過程和方法
2.2.1 方法一:磁盤換掛讀取
使用遠(yuǎn)程終端工具登錄nocvm5和nocvm26同在的計(jì)算節(jié)點(diǎn)主機(jī)centos系統(tǒng),將實(shí)例nocvm5的啟動(dòng)磁盤掛載到實(shí)例nocvm26中識別讀取,然后進(jìn)行數(shù)據(jù)恢復(fù)操作。
步驟1 在云平臺中關(guān)閉實(shí)例nocvm5和nocvm26,在主機(jī)系統(tǒng)上進(jìn)入“/etc/libvirt/qemu”路徑,備份虛擬化實(shí)例[5]的XML文件,操作過程見圖2(b)的步驟1。在生產(chǎn)環(huán)境中,強(qiáng)烈建議對修改的操作,先備份后謹(jǐn)慎操作。
步驟2 查看instance-00000021.xml文件,把文件中disk模塊的source file值(即實(shí)例的虛擬磁盤文件具體路徑)記錄下來,hd_0.img文件為啟動(dòng)盤,hd_1.img文件為第2磁盤。編輯3f.xml文件,修改后的內(nèi)容見圖2(a),圖中矩形區(qū)域?yàn)樵黾觾?nèi)容,source file的值為磁盤文件路徑;dev的值為磁盤數(shù)的設(shè)備編號,從vda開始不能重復(fù),此處vdc是第三個(gè)磁盤;若添加其他磁盤,復(fù)制此段代碼并修改source file和dev的值即可。主機(jī)命令操作見圖2(b)的步驟2。
步驟3 在主機(jī)系統(tǒng)上取消定義[6]虛擬機(jī)實(shí)例nocvm26,然后用修改后的3f.xml定義虛擬機(jī)實(shí)例nocvm26,見圖2(b)的步驟3。
步驟4 前3個(gè)步驟是磁盤換掛過程,此處開始為數(shù)據(jù)恢復(fù)的操作步驟。首先在云平臺中啟動(dòng)虛擬機(jī)實(shí)例nocvm26,然后遠(yuǎn)程連接其XP系統(tǒng),在“我的電腦”中會出現(xiàn)“本地磁盤E”,即新掛載的故障磁盤。但是,它的文件系統(tǒng)NTFS格式丟失了,運(yùn)行E盤時(shí)會錯(cuò)誤提示磁盤未格式化,這也就是由其引導(dǎo)的操作系統(tǒng)無法啟動(dòng)的問題所在。注意事項(xiàng),千萬不能格式化故障磁盤!
步驟5 運(yùn)行準(zhǔn)備好的winhex軟件[7-8]進(jìn)行數(shù)據(jù)恢復(fù)。在winhex程序菜單中依次選擇“Tools”→“open disk ..”→“Physical Media”→“HD2”打開Hard disk 2(即E盤),仔細(xì)分析磁盤扇區(qū)數(shù)據(jù)并發(fā)現(xiàn)有被修改過的痕跡,boot sector的數(shù)據(jù)被重寫為FF,如圖3(a)。再次打開Hard disk 0(即當(dāng)前nocvm26的C盤),查看其正常的boot sector,如圖3(b)。此案例的修復(fù)辦法有兩種:一是使用NTFS的boot sector備份數(shù)據(jù)[9]來修復(fù);二是因disk2和disk0是相同虛擬鏡像模板創(chuàng)建的,所以NTFS的boot sector數(shù)據(jù)是一樣的,可用此來修復(fù)。本案例因disk2被破壞,所以用了第二種解決辦法,復(fù)制disk0的000007E00至000007FFF扇區(qū)數(shù)據(jù)后在disk2的000007E00處開始寫入,寫入結(jié)果如圖3(c)所示,然后點(diǎn)擊“保存”。刷新“我的電腦”并打開E盤,此時(shí)E盤的系統(tǒng)文件已可識別,如圖3(d),但不建議用戶繼續(xù)使用。將用戶的數(shù)據(jù)文件存儲到安全的位置,完成后退出所有程序,關(guān)閉系統(tǒng)。
步驟6 在主機(jī)系統(tǒng)上取消定義實(shí)例nocvm26,使用instance-0000003f.xmlbak文件重定義實(shí)例nocvm26,見圖2(b)的步驟6。
2.2.2 方法二:磁盤文件格式轉(zhuǎn)換
因磁盤文件格式是Qcow2,數(shù)據(jù)恢復(fù)工具不能直接讀取hd_0.img里面的數(shù)據(jù)。因此需要將Qcow2文件格式轉(zhuǎn)換成Raw格式[4]后,再把Raw鏡像文件轉(zhuǎn)移到數(shù)據(jù)恢復(fù)工作的計(jì)算機(jī)系統(tǒng)上,用數(shù)據(jù)恢復(fù)軟件打開Raw鏡像文件,數(shù)據(jù)恢復(fù)過程參考方法一。
在主機(jī)上磁盤格式轉(zhuǎn)換的命令,如下:
此方法缺點(diǎn)明顯,磁盤轉(zhuǎn)換的時(shí)間與磁盤大小成正比,特別是磁盤越大,轉(zhuǎn)換所需時(shí)間越長,文件轉(zhuǎn)移的時(shí)間越長,總恢復(fù)時(shí)間就更多。而且在轉(zhuǎn)換過程中會占用主機(jī)系統(tǒng)一定的運(yùn)行資源。此方法在生產(chǎn)環(huán)境中不可取,測試環(huán)境可以實(shí)驗(yàn)。
2.2.3 方法三:利用win PE啟動(dòng)的ISO光盤鏡像
在互聯(lián)網(wǎng)下載一個(gè)免費(fèi)win PE系統(tǒng)的ISO光盤鏡像文件,它集成了磁盤管理工具和數(shù)據(jù)恢復(fù)等系統(tǒng)維護(hù)軟件。然后利用云計(jì)算平臺可以上傳光盤鏡像的功能,將win PE的ISO文件上傳到平臺,設(shè)置虛擬實(shí)例nocvm5一個(gè)光驅(qū),然后選擇引導(dǎo)以光盤鏡像啟動(dòng)虛擬機(jī),如圖4(a)至(b)所示。啟動(dòng)nocvm5并進(jìn)入win PE 系統(tǒng)后,根據(jù)具體故障情況分析,數(shù)據(jù)恢復(fù)過程參考方法一。注意,必須將恢復(fù)后的數(shù)據(jù)文件轉(zhuǎn)移到其他網(wǎng)絡(luò)存儲介質(zhì)上。在虛擬環(huán)境下,win PE系統(tǒng)可能會因顯卡驅(qū)動(dòng)程序不兼容而導(dǎo)致桌面顯示不正常,請更換兼容虛擬化的win PE光盤鏡像。
3 討論
綜上所述,方法三的技術(shù)要求比較低,是最安全的。方法一的底層操作技術(shù),在運(yùn)維時(shí)會經(jīng)常使用到,建議靈活去應(yīng)用;而且對于技術(shù)資深者而言,方法一優(yōu)于方法三。方法二,如果云計(jì)算平臺啟用了加密技術(shù),導(dǎo)出的磁盤文件可能經(jīng)過加密處理,脫離了此平臺后會無法進(jìn)行解密而且效率低,建議熟知格式轉(zhuǎn)換方法即可??傊?,在生產(chǎn)環(huán)境中,應(yīng)當(dāng)謹(jǐn)慎地根據(jù)實(shí)際環(huán)境條件選擇最佳的方法。
4 結(jié)束語
上述的方法對基于OpenStack云計(jì)算平臺和KVM虛擬化技術(shù)的云產(chǎn)品是通用可行的,其他虛擬化平臺可以借鑒此方法,萬變不離其宗,根據(jù)平臺特性和配置環(huán)境去研究分析與具體處理。另外,上述案例中是對Windows系統(tǒng)的虛擬磁盤恢復(fù),與其他操作系統(tǒng)的磁盤恢復(fù)過程不一樣。從云平臺運(yùn)維技術(shù)到數(shù)據(jù)恢復(fù)技術(shù)的貫穿,取決于掌握技術(shù)知識面的程度,作為系統(tǒng)運(yùn)維人員應(yīng)該努力去學(xué)習(xí)和積累,希望此文能夠幫助更多的同行和計(jì)算機(jī)愛好者。
參考文獻(xiàn)(References):
[1] 藍(lán)天狂海.云計(jì)算.百度百科.https://baike.baidu.com/item/%E4%BA%91%E8%AE%A1%E7%AE%97/9969353?fr=aladdin,2018-12-24.
[2] 馬林.數(shù)據(jù)重現(xiàn)-文件系統(tǒng)原理精解與數(shù)據(jù)恢復(fù)最佳實(shí)踐[M].清華大學(xué)出版,2009.4(1):417-431
[3] Libvirt XML Format. https://libvirt.org/formatdomain.html#elementsDisks
[4] Mark McLoughlin.The QCOW2 Image Format.https://people.gnome.org/~markmc/qcow-image-format.html,2008-9-11.
[5] shanliangliuxing.openstack中虛擬機(jī)實(shí)例的備份與恢復(fù).https://blog.csdn.net/shanliangliuxing/article/details/8271935,2012-12-18.
[6] 上善若水75.Ubuntu12.10下搭建基于KVM-QEMU的虛擬機(jī)環(huán)境(九).https://blog.csdn.net/hbsong75/article/details/9247111,2013-07-04.
[7] 莫顧爾在.winhex比較詳細(xì)的圖文使用教程.https://blog.csdn.net/weixin_39282491/article/details/80881468,2018-07-02.
[8] bcbobo21cn.圖解WinHex使用入門.https://blog.csdn.net/bcbobo21cn/article/details/51187699.
[9] 狂愛莎嬌.用winhex解決“磁盤未被格式化,是否格式化”.http://blog.sina.com.cn/s/blog_40748c3c0100fpz8.html,2009-12-02.