本發(fā)明涉及云計(jì)算和虛擬化技術(shù)領(lǐng)域,特別是一種管理USB和自動(dòng)掛載到虛擬機(jī)的方法。
背景技術(shù):
隨著越來越多應(yīng)用遷移到云平臺(tái)上,虛擬機(jī)對(duì)使用USB設(shè)備的需求也越來越多,特別是對(duì)于一些安全設(shè)備,例如加密狗設(shè)備,有很多應(yīng)用需要配合加密狗設(shè)備才能正常運(yùn)行。對(duì)于USB設(shè)備的使用一般是通過spice的遠(yuǎn)程連接重定向、第三方軟件進(jìn)行USB的網(wǎng)絡(luò)重定向來實(shí)現(xiàn)或者普通直連USB設(shè)備來實(shí)現(xiàn),但是這些種方法存在一下問題:
一是spice遠(yuǎn)程桌面USB重定向需要依賴于spice的遠(yuǎn)程連接才能完成重定向,對(duì)于一些依賴USB設(shè)備,并且需要在后臺(tái)運(yùn)行的應(yīng)用,這種方式需要一直保持遠(yuǎn)程連接,這顯然不現(xiàn)實(shí);
二是通過第三方軟件進(jìn)行的網(wǎng)絡(luò)重定向,一旦USB設(shè)備信息發(fā)生變化,就需要進(jìn)行重新重定向;
三是網(wǎng)絡(luò)重定向依賴于網(wǎng)絡(luò),如果沒有虛擬機(jī)沒有網(wǎng)絡(luò)的情況下,將無法使用USB設(shè)備;
四是兩種重定向方式要經(jīng)過tcp協(xié)議或spcie協(xié)議進(jìn)行重定向,會(huì)對(duì)USB設(shè)備讀寫性能造成一定的影響;
五是如果通過普通的直連USB設(shè)備,一單USB設(shè)備信息發(fā)生變化,虛擬機(jī)則無法識(shí)別到USB,并且會(huì)殘留舊的、錯(cuò)誤的USB信息,需要通過人為去進(jìn)行修正;
六是普通的直連USB設(shè)備,當(dāng)虛擬機(jī)狀態(tài)發(fā)生變化時(shí),例如虛擬機(jī)重啟后,則需要手動(dòng)去維護(hù)USB,對(duì)USB進(jìn)行重新掛載。
為了減低運(yùn)維的成本,提高USB設(shè)備使用的方便性和可用性,保證虛擬機(jī)掛載USB設(shè)備的準(zhǔn)確性、持續(xù)性和保證USB設(shè)備的讀寫效率,需要一種能夠管理USB和自動(dòng)掛載USB到虛擬機(jī)的方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明解決的技術(shù)問題在于提供一種管理USB和自動(dòng)掛載到虛擬機(jī)的方法,解決了虛擬機(jī)無法長(zhǎng)期穩(wěn)定地使用USB設(shè)備,USB和虛擬機(jī)變化后無法使用USB設(shè)備,無法自動(dòng)修正USB信息的問題。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案是:
所述的方法包括如下步驟:
步驟1:使用USB發(fā)現(xiàn)腳本,發(fā)現(xiàn)物理機(jī)中的USB設(shè)備,過濾需要的USB設(shè)備,獲取USB信息;
步驟2:使用定時(shí)器定時(shí)匯總USB信息,保存在數(shù)據(jù)庫和內(nèi)存中;
步驟3:把USB通過直連方式掛載到所需要的虛擬機(jī)中;
步驟4:使用定時(shí)器監(jiān)控USB以及虛擬機(jī)實(shí)際狀態(tài)和信息;如果USB信息發(fā)生變化則執(zhí)行步驟5,如果虛擬機(jī)狀態(tài)發(fā)生變化則執(zhí)行步驟6;
步驟5:獲取USB所掛載的虛擬機(jī),把虛擬機(jī)上錯(cuò)誤的USB卸載,然后獲取新的USB信息,掛載新的USB;
步驟6:如果虛擬機(jī)關(guān)機(jī),則USB已經(jīng)卸載;如果虛擬機(jī)重新開機(jī)后,則獲取當(dāng)前USB信息,自動(dòng)掛載USB。
所述USB信息包括USB的序列號(hào)、供應(yīng)商ID、產(chǎn)品ID、總線地址、設(shè)備地址、名稱和大小等信息。
所述的USB的序列號(hào)、供應(yīng)商ID和產(chǎn)品ID,此三者可以唯一標(biāo)識(shí)一個(gè)USB設(shè)備;
所述的總線地址和設(shè)備地址變化是發(fā)生在USB在物理機(jī)上插拔后,總線地址和設(shè)備地址將會(huì)發(fā)生變化。
所述的錯(cuò)誤的USB,是指USB的總線地址和設(shè)備地址變化后,虛擬機(jī)仍然掛載舊的總線地址和設(shè)備地址的USB設(shè)備。
所述的直連方式,是相對(duì)于重定向方式,數(shù)據(jù)虛擬機(jī)直接使用物理機(jī)上的設(shè)備,而非把USB設(shè)備重定向到虛擬機(jī)中。
本發(fā)明通過對(duì)USB發(fā)現(xiàn)管理并自動(dòng)掛載USB到虛擬機(jī),實(shí)現(xiàn)了虛擬機(jī)使用USB設(shè)備是不受網(wǎng)絡(luò)環(huán)境影響,虛擬機(jī)可以在后臺(tái)持續(xù)運(yùn)行需要USB設(shè)備的應(yīng)用,同時(shí)保證了USB設(shè)備的讀寫性能,而且能夠自動(dòng)適應(yīng)USB設(shè)備信息變化,適應(yīng)虛擬機(jī)狀態(tài)信息變化,使虛擬機(jī)開機(jī)后能夠自動(dòng)掛載所需的USB設(shè)備,大大降低運(yùn)維成本,實(shí)現(xiàn)自動(dòng)化。
附圖說明
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說明:
圖1為本發(fā)明方法流程圖。
具體實(shí)施方式
如圖1所示,本發(fā)明首先,基于lsusb工具的python文件/usr/bin/lsusb.py進(jìn)行修改,使起輸出我們所需要的usb信息,和過濾usb設(shè)備。
增加方法:
修改原來方法,使其調(diào)用我們的自動(dòng)以方法輸出usb信息。
增加usb發(fā)現(xiàn)定時(shí)器,匯總usb信息:
掛載usb的方法。
使用定時(shí)器,定時(shí)掃面虛擬機(jī)usb設(shè)備狀態(tài),并進(jìn)行維護(hù)。