一種檢測(cè)虛擬機(jī)盤符的方法
【專利摘要】本發(fā)明涉及云計(jì)算技術(shù)領(lǐng)域,特別是一種檢測(cè)虛擬機(jī)盤符的方法。所述的方法涉及宿主機(jī)和虛擬機(jī)兩個(gè)模塊,其中,在虛擬機(jī)上安裝并啟動(dòng)qemu代理服務(wù);并設(shè)置虛擬機(jī)自動(dòng)激活并分配盤符給新增存儲(chǔ)設(shè)備;在宿主機(jī)上:格式化待掛載的塊設(shè)備;本地掛載塊設(shè)備并往里面寫入特征文件;將所述塊設(shè)備掛載給虛擬機(jī);調(diào)用命令檢測(cè)掛載的塊設(shè)備在虛擬機(jī)中對(duì)應(yīng)盤符。采用本發(fā)明提供的方法可以實(shí)現(xiàn)直接在宿主機(jī)中獲取塊設(shè)備對(duì)應(yīng)的虛擬機(jī)盤符,以便讀取磁盤里面的內(nèi)容進(jìn)行后續(xù)如應(yīng)用自動(dòng)部署等操作。
【專利說(shuō)明】
一種檢測(cè)虛擬機(jī)盤符的方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及云計(jì)算技術(shù)領(lǐng)域,特別是一種檢測(cè)虛擬機(jī)盤符的方法。
【背景技術(shù)】
[0002] 用戶在使用虛擬機(jī)的過(guò)程中,需要擴(kuò)展虛擬機(jī)的存儲(chǔ);一般都是通過(guò)將宿主機(jī)上 面的磁盤文件或者邏輯卷等掛載給虛擬機(jī)來(lái)實(shí)現(xiàn)。通常給虛擬機(jī)掛載之后用戶就可以登錄 虛擬機(jī)進(jìn)行后續(xù)的分配盤符、格式化等操作。這種使用方式可以滿足大部分的需求,但是存 在如下的不足:
[0003] 1、宿主機(jī)給虛擬機(jī)掛載磁盤文件或者邏輯卷之后,不能立刻知道其在虛擬機(jī)里面 對(duì)應(yīng)的是什么盤符。
[0004] 2、即使宿主機(jī)在掛載的時(shí)候通過(guò)配置文件指定磁盤文件和邏輯卷在虛擬機(jī)里面 的盤符,也可能會(huì)因?yàn)榄h(huán)境因素的影響不能正確對(duì)應(yīng)上,這樣就會(huì)導(dǎo)致磁盤盤符的不確定。
[0005] 3、當(dāng)用戶通過(guò)掛盤的形式傳遞軟件包從而在虛擬機(jī)里面進(jìn)行應(yīng)用部署時(shí),必須要 在不需要登錄虛擬機(jī)的情況下就能夠確定獲取指定磁盤文件或者邏輯卷在虛擬機(jī)里面的 盤符。
[0006] Qemu Guest Agent
[0007] Qemu Guest Agent,簡(jiǎn)稱qga,是一個(gè)運(yùn)行在虛擬機(jī)內(nèi)部的普通應(yīng)用程序(可執(zhí)行 文件名稱默認(rèn)為qemu-ga,服務(wù)名稱默認(rèn)為qemu-guest-agent),其目的是實(shí)現(xiàn)一種宿主機(jī) 和虛擬機(jī)進(jìn)行交互的方式,這種方式不依賴于網(wǎng)絡(luò),而是依賴于virtio-serial (默認(rèn)首選 方式)或者isa-serial,而QEMU則提供了串口設(shè)備的模擬及數(shù)據(jù)交換的通道,最終呈現(xiàn)出來(lái) 的是一個(gè)串口設(shè)備(虛擬機(jī)內(nèi)部)和一個(gè)unix socket文件(宿主機(jī)上)。
[0008] qga通過(guò)讀寫串口設(shè)備與宿主機(jī)上的socket通道進(jìn)行交互,宿主機(jī)上可以使用普 通的unix socket讀寫方式對(duì)socket文件進(jìn)行讀寫,最終實(shí)現(xiàn)與qga的交互,交互的協(xié)議與 qmp(QEMU Monitor Protocol)相同(簡(jiǎn)單來(lái)說(shuō)就是使用JS0N格式進(jìn)行數(shù)據(jù)交換),串口設(shè)備 的速率通常都較低,所以比較適合小數(shù)據(jù)量的交換。
【發(fā)明內(nèi)容】
[0009] 本發(fā)明解決的技術(shù)問(wèn)題在于提供一種簡(jiǎn)單的檢測(cè)虛擬機(jī)盤符的方法,以便當(dāng)用戶 在跟虛擬機(jī)掛載磁盤文件或者邏輯卷等跟虛擬機(jī)增加磁盤的時(shí)候,能夠快速的在宿主機(jī)上 面就知道其在虛擬機(jī)對(duì)應(yīng)的磁盤盤符,方便后續(xù)從宿主機(jī)上直接操作磁盤上面的文件進(jìn)行 自動(dòng)化相關(guān)功能實(shí)現(xiàn)。
[0010] 本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案是,
[0011] 所述的方法涉及宿主機(jī)和虛擬機(jī)兩個(gè)模塊,其中,在虛擬機(jī)上安裝并啟動(dòng)qemu代 理服務(wù);并設(shè)置虛擬機(jī)自動(dòng)激活并分配盤符給新增存儲(chǔ)設(shè)備;在宿主機(jī)上:
[0012] 格式化待掛載的塊設(shè)備;
[0013] 本地掛載塊設(shè)備并往里面寫入特征文件;
[0014] 將所述塊設(shè)備掛載給虛擬機(jī);
[0015] 調(diào)用命令檢測(cè)掛載的塊設(shè)備在虛擬機(jī)中對(duì)應(yīng)盤符。
[0016] 所述的虛擬機(jī)是指云平臺(tái)上所有的Linux類型虛擬機(jī)和Windows類型虛擬機(jī);
[0017] 所述的qemu代理是指Qemu Guest Agent,是一個(gè)運(yùn)行在虛擬機(jī)內(nèi)部的普通應(yīng)用程 序,其目的是實(shí)現(xiàn)一種宿主機(jī)和虛擬機(jī)進(jìn)行交互的方式,這種方式不依賴于網(wǎng)絡(luò);
[0018] 所述的塊設(shè)備可以是宿主機(jī)上面一個(gè)指定格式的磁盤文件,或是一個(gè)邏輯卷,也 可以是一個(gè)分布式存儲(chǔ)的塊設(shè)備,如ceph rbd卷。
[0019] 所述的格式化是指向塊設(shè)備里面注入文件系統(tǒng);所述的文件系統(tǒng)需要被windows 和linux所識(shí)別,例如NTFS、FAT等。
[0020] 所述的特征文件是一個(gè)普通文件,其存在目的是為了方便后面調(diào)用命令通過(guò)查找 該文件來(lái)判斷設(shè)備對(duì)應(yīng)的盤符;特征文件的格式和內(nèi)容由用戶自定義。
[0021] 所述的命令是指virsh qemu-agent-command相關(guān)命令,該命令會(huì)與虛擬機(jī)里面的 qemu guest agent服務(wù)程序進(jìn)行通信。
[0022] 所述的配置虛擬機(jī)自動(dòng)分配盤符在linux虛擬機(jī)中無(wú)需額外配置,在windows虛擬 機(jī)中執(zhí)行mountvol命令即可。
[0023]本發(fā)明方案的有益效果如下:
[0024] 1、提供一種方法實(shí)現(xiàn)在宿主機(jī)直接獲取掛載給虛擬機(jī)的塊設(shè)備對(duì)應(yīng)的磁盤盤符。
[0025] 2、本發(fā)明方法具有通用性,能夠同時(shí)滿足windows虛擬機(jī)和Linux虛擬機(jī)。
[0026] 3、本發(fā)明可以為虛擬機(jī)的自動(dòng)化配置、自動(dòng)化應(yīng)用部署等提供技術(shù)支持。
【附圖說(shuō)明】
[0027]下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說(shuō)明:
[0028]圖1為本發(fā)明的流程圖。
【具體實(shí)施方式】
[0029] 請(qǐng)參見圖1,為本發(fā)明實(shí)施例提供的一種檢測(cè)虛擬機(jī)盤符的方法的流程示意圖。虛 擬機(jī)配置方面,我們可以通過(guò)修改虛擬機(jī)的鏡像進(jìn)行,主要有下載安裝qemu guest agent 代理程序,并將qemu-guest-agent服務(wù)配置為開機(jī)啟動(dòng);然后啟動(dòng)cmd · exe執(zhí)行mountvol/ e,保證虛擬機(jī)里面能夠自動(dòng)給新發(fā)現(xiàn)的硬件分配盤符。
[0030] 宿主機(jī)里面我們以掛載ceph rbd卷作為塊設(shè)備掛載該虛擬機(jī)為例進(jìn)行描述,其他 形式的塊設(shè)備存儲(chǔ)類似。
[0031] 首先我們需要在云平臺(tái)的物理節(jié)點(diǎn)上搭建一個(gè)ceph集群,通常情況下由于云平臺(tái) 的存儲(chǔ)資源需要,ceph集群都處于正常運(yùn)行狀態(tài)。利用如下命令創(chuàng)建一個(gè)ceph rbd卷并映 射到本地:
[0032] rbd create volumes/software_base_size 100000
[0033] rbd map volumes/software_base
[0034] 如上我們?cè)赾eph的volumes池中創(chuàng)建了一個(gè)100GB的卷software_base,并利用map 命令將其映射到本地。映射過(guò)程會(huì)返回一個(gè)映射的物理設(shè)備路徑,如/deV/rbdl2,并在/ dev/rbd/volumes/目錄下生成一個(gè)軟鏈接文件software_base。然后對(duì)該物理設(shè)備進(jìn)行格 式化,格式化后的文件系統(tǒng)要保證被linux和windows虛擬機(jī)所識(shí)別。這里我們采用了最常 用的NTFS文件格式,格式化命令如下:
[0035] mkfs.ntfs-f/dev/rbdl2
[0036] 特別注意的是這個(gè)格式化的命令只需要執(zhí)行一次,后面如果再次執(zhí)行則會(huì)損壞里 面已有的虛擬機(jī)文件。
[0037] 將格式化后的rbd卷以讀寫形式掛載到服務(wù)節(jié)點(diǎn)并向其寫入特征文件,掛載實(shí)現(xiàn) 如下:
[0038] mkdir/ software-base-rbd
[0039] mount-t ntfs_3g/dev/rbdl2/software-base-rbd
[0040] touch/software-base-rbd/look_for_disk_in_linux_vm.sh
[0041 ] touch/software-base-rbd/look_for_disk_in-windows_vm.bat
[0042] umount/software-base-rbd
[0043] 如上我們想塊設(shè)備寫入了特征文件1〇〇1^_:[>01'_(1181^_;!_11_1;!_111^_¥111.811和1001^_:[ >01'_ disk_in_windows_vm.bat分別用于對(duì)windows虛擬機(jī)和linux虛擬機(jī)的檢測(cè) D
[0044] 利用如下xml文件將塊設(shè)備掛載給虛擬機(jī):
[0046] 掛載命令:
[0047] virsh attach-device i-χχχχχχχχ rbd-file.xml
[0048] 通過(guò)上述命令我們將宿主機(jī)上面的塊設(shè)備掛載給了虛擬機(jī),并且前面對(duì)虛擬機(jī)的 配置保證了虛擬機(jī)自動(dòng)給新增加的塊設(shè)備分配了盤符。下面我們將在宿主機(jī)上面通過(guò)輪詢 探測(cè)性的去執(zhí)行virsh qemu-agent-command命令去檢測(cè)塊設(shè)備對(duì)應(yīng)的磁盤盤符。
[0049] 例如Windows虛擬機(jī)我們執(zhí)行如下命令:
[0050] virsh qemu-agent-command i-xxxxxxxx7 {〃execute〃:〃guest_exec〃,〃 arguments〃: {〃path〃:〃EAXlook-for-disk-in-vm.bat"}}7
[0051] 執(zhí)行上述命令后會(huì)有返回,如果成功返回則表示探測(cè)成功,即塊設(shè)備對(duì)應(yīng)的盤符 為E盤,如果失敗,則繼續(xù)執(zhí)行:
[0052] virsh qemu-agent-command i-xxxxxxxx7 {〃execute〃:〃guest_exec〃,〃 arguments〃: {〃path〃:〃FAXlook-for-disk-in-vm.bat"}}7
[0053] 上述命令用以探測(cè)塊設(shè)備對(duì)應(yīng)的磁盤是否是F盤。重復(fù)執(zhí)行命令即可檢測(cè)出掛載 塊設(shè)備對(duì)應(yīng)的虛擬機(jī)磁盤盤符。
【主權(quán)項(xiàng)】
1. 一種檢測(cè)虛擬機(jī)盤符的方法,其特征在于,所述的方法涉及宿主機(jī)和虛擬機(jī)兩個(gè)模 塊,其中,在虛擬機(jī)上安裝并啟動(dòng)qemu代理服務(wù);并設(shè)置虛擬機(jī)自動(dòng)激活并分配盤符給新增 存儲(chǔ)設(shè)備;在宿主機(jī)上: 格式化待掛載的塊設(shè)備; 本地掛載塊設(shè)備并往里面寫入特征文件; 將所述塊設(shè)備掛載給虛擬機(jī); 調(diào)用命令檢測(cè)掛載的塊設(shè)備在虛擬機(jī)中對(duì)應(yīng)盤符。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于:所述的虛擬機(jī)是指云平臺(tái)上所有的Linux 類型虛擬機(jī)和Windows類型虛擬機(jī); 所述的qemu代理是指Qemu Guest Agent,是一個(gè)運(yùn)行在虛擬機(jī)內(nèi)部的普通應(yīng)用程序, 其目的是實(shí)現(xiàn)一種宿主機(jī)和虛擬機(jī)進(jìn)行交互的方式,這種方式不依賴于網(wǎng)絡(luò); 所述的塊設(shè)備可以是宿主機(jī)上面一個(gè)指定格式的磁盤文件,或是一個(gè)邏輯卷,也可以 是一個(gè)分布式存儲(chǔ)的塊設(shè)備,如ceph rbd卷。3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的格式化是指向塊設(shè)備里面注入文件 系統(tǒng);所述的文件系統(tǒng)需要被windows和1 inux所識(shí)別,例如NTFS、FAT等。4. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述的格式化是指向塊設(shè)備里面注入文件 系統(tǒng);所述的文件系統(tǒng)需要被windows和1 inux所識(shí)別,例如NTFS、FAT等。5. 根據(jù)權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,所述的特征文件是一個(gè)普通文 件,其存在目的是為了方便后面調(diào)用命令通過(guò)查找該文件來(lái)判斷設(shè)備對(duì)應(yīng)的盤符;特征文 件的格式和內(nèi)容由用戶自定義。 所述的命令是指virsh qemu-agent-command相關(guān)命令,該命令會(huì)與虛擬機(jī)里面的qemu guest agent服務(wù)程序進(jìn)行通信。6. 根據(jù)權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,所述的配置虛擬機(jī)自動(dòng)分配盤 符在linux虛擬機(jī)中無(wú)需額外配置,在windows虛擬機(jī)中執(zhí)行mountvol命令即可。7. 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述的配置虛擬機(jī)自動(dòng)分配盤符在linux 虛擬機(jī)中無(wú)需額外配置,在windows虛擬機(jī)中執(zhí)行mountvol命令即可。
【文檔編號(hào)】G06F9/455GK106095528SQ201610402378
【公開日】2016年11月9日
【申請(qǐng)日】2016年6月7日
【發(fā)明人】熊夢(mèng), 楊松, 季統(tǒng)凱
【申請(qǐng)人】國(guó)云科技股份有限公司