本發(fā)明涉及計算機技術領域,具體涉及一種虛擬環(huán)境下對usb設備進行管理的方法、主機和系統(tǒng)。
背景技術:
虛擬機技術作為虛擬化技術的一種,在上世紀六七十年代被提出,它是一種硬件設備的仿真模擬實現(xiàn)。虛擬機技術的提出為用戶在不同終端之間的資源共享、互相訪問等提供了更多的實現(xiàn)方式。
在虛擬環(huán)境下,用戶使用的虛擬機是運行在遠程機房的主機上的。對于物理機,u盤可以直接插在物理機上的插槽內(nèi),物理機的系統(tǒng)可以直接訪問u盤。但是對于虛擬機而言,其只是軟件程序,不具備實體的接口,在現(xiàn)有技術中,為了保證用戶能在虛擬機里實現(xiàn)對u盤的讀寫等操作,需要使用usb重定向技術將用戶插在終端上的u盤重定向到虛擬機中,使得用戶可以在虛擬機上直接讀、寫u盤上的文件。這種現(xiàn)有技術存在的主要問題是,步驟復雜,命令執(zhí)行繁瑣,容易出錯,且當需要通過虛擬機實現(xiàn)對多個遠程usb設備的讀寫等操作的時候,需要一一對每個usb設備進行繁瑣的usb重定向,這大大地增加了在虛擬環(huán)境下對usb設備的管理時間和管理的復雜度,所以現(xiàn)有技術急需解決的問題是,提供一種在虛擬環(huán)境下,更加簡單的,更有效率的usb管理方案。
技術實現(xiàn)要素:
本發(fā)明要解決的主要技術問題是,提供一種虛擬環(huán)境下對usb設備進行管理的方法、主機和系統(tǒng),解決現(xiàn)有技術中虛擬機利用usb重定向技術對u盤進行管理導致的步驟復雜,命令執(zhí)行繁瑣,容易出錯的問題。
為解決上述技術問題,本發(fā)明提供一種虛擬環(huán)境下對usb設備進行管理的方法,包括:
通過與終端建立的通信鏈路獲取終端上的usb設備的設備信息;
獲取主機上的虛擬機信息;
根據(jù)設備信息和虛擬機信息確定對usb設備的管理信息;
根據(jù)管理信息,完成虛擬機對usb設備的管理。
進一步地,管理信息包括掛載指示和卸載指示;
當管理信息為掛載指示時,根據(jù)管理信息,完成虛擬機對usb設備的管理包括:根據(jù)掛載指示,將設備信息寫入虛擬機的配置文件中,以供虛擬機根據(jù)配置文件中的設備信息,模擬出虛擬usb設備;一個usb設備只能同時掛載在一個虛擬機上;
當管理信息為卸載指示時,根據(jù)管理信息,完成虛擬機對usb設備的管理包括:根據(jù)卸載指示,從虛擬機的配置文件中刪除設備信息,或?qū)⒏鶕?jù)設備信息模擬的虛擬usb設備從虛擬機上刪除。
進一步地,管理信息還包括刪除指示;根據(jù)管理信息,完成虛擬機對usb設備的管理包括:根據(jù)刪除指示,確定usb設備是否已掛載到虛擬機上,若是,則從虛擬機上卸載usb設備。
進一步地,還包括:當虛擬機上的usb設備出現(xiàn)異常時,根據(jù)虛擬機上的usb設備的設備信息和終端上的usb設備的設備信息,確定終端上被拔除的usb設備,從虛擬機上卸載被拔除的usb設備。
進一步地,設備信息包括終端統(tǒng)一產(chǎn)生的usb設備名稱。
進一步地,usb設備名稱是由終端上的usb服務端統(tǒng)一產(chǎn)生,并由usb服務端通過與主機的usb客戶端建立的通信鏈路轉(zhuǎn)發(fā)給usb客戶端的。
進一步地,設備信息包括:用于對usb設備進行唯一標識的標識信息。
進一步地,標識信息包括:生產(chǎn)商、產(chǎn)品編號、總線、端口、源ip。
進一步地,根據(jù)設備信息和虛擬機信息確定對usb設備的管理信息包括:接收外部的虛擬化中心根據(jù)設備信息和虛擬機信息確定的管理信息。
為了解決上述的問題,本發(fā)明還提供一種虛擬環(huán)境下對usb設備進行管理的主機,包括:第一獲取模塊,第二獲取模塊,確定模塊以及管理模塊;
第一獲取模塊用于通過與終端建立的通信鏈路獲取終端上的usb設備的設 備信息;
第二獲取模塊用于獲取主機上的虛擬機信息;
確定模塊用于根據(jù)設備信息和虛擬機信息確定對usb設備的管理信息;
管理模塊用于根據(jù)管理信息,完成虛擬機對usb設備的管理。
進一步地,管理信息包括掛載指示或卸載指示;管理模塊包括掛載模塊和卸載模塊;
掛載模塊用于,根據(jù)掛載指示,將設備信息寫入虛擬機的配置文件中,以供虛擬機根據(jù)配置文件中的設備信息,模擬出虛擬usb設備;一個usb設備只能同時掛載在一個虛擬機上;
卸載模塊用于根據(jù)卸載指示,從虛擬機的配置文件中刪除設備信息,或?qū)⒏鶕?jù)設備信息模擬的虛擬usb設備從虛擬機上刪除。
進一步地,管理信息還包括刪除指示;管理模塊還包括刪除模塊,用于根據(jù)刪除指示,確定usb設備是否已掛載到虛擬機上,若是,則從虛擬機上卸載usb設備。
進一步地,還包括異常處理模塊,用于當虛擬機上的usb設備出現(xiàn)異常時,根據(jù)虛擬機上的usb設備的設備信息和終端上的usb設備的設備信息,確定終端上被拔除的usb設備,從虛擬機上卸載被拔除的usb設備。
進一步地,第一獲取模塊獲取的設備信息包括終端統(tǒng)一產(chǎn)生的usb設備名稱。
進一步地,usb設備名稱是由終端上的usb服務端統(tǒng)一產(chǎn)生,并由usb服務端通過與主機的usb客戶端建立的通信鏈路轉(zhuǎn)發(fā)給usb客戶端的。
進一步地,第一獲取模塊獲取的設備信息包括:用于對usb設備進行唯一標識的標識信息。
進一步地,第一獲取模塊獲取的標識信息包括:生產(chǎn)商、產(chǎn)品編號、總線、端口、源ip。
進一步地,確定模塊包括接收模塊,用于接收外部的虛擬化中心根據(jù)設備信息和虛擬機信息確定的管理信息。
為解決上述問題,本發(fā)明還提供一種虛擬環(huán)境下對usb設備進行管理的系 統(tǒng),包括虛擬化中心和主機;
虛擬化中心用于獲取主機上的虛擬機信息,通過主機獲取終端上的usb設備的設備信息,以及根據(jù)設備信息和虛擬機信息確定對usb設備的管理信息,將管理信息發(fā)送給主機;
主機通過與終端建立的通信鏈路獲取終端上的usb設備的設備信息并將其轉(zhuǎn)發(fā)給虛擬化中心,接收虛擬化中心發(fā)送的管理信息,根據(jù)管理信息,完成虛擬機對usb設備的管理。
本發(fā)明的有益效果是:
本發(fā)明提供的一種虛擬環(huán)境下對usb進行管理的方法、主機和系統(tǒng),采用本發(fā)明的方法,可以通過與終端建立的通信鏈路獲取終端上的usb設備的設備信息;獲取主機上的虛擬機信息;根據(jù)設備信息和虛擬機信息確定對usb設備的管理信息;根據(jù)管理信息,完成虛擬機對usb設備的管理。本發(fā)明中,只要獲取到了虛擬機信息和usb設備的設備信息就可以基于這兩種信息確定對usb設備的管理信息,然后根據(jù)該管理信息,完成虛擬機對usb設備的管理,所以本實施例的方法不需要復雜的操作指令即可實現(xiàn)虛擬機對usb設備的管理,具有管理簡單、有效、易實現(xiàn)的優(yōu)點。
附圖說明
圖1為本發(fā)明實施例一提供的虛擬環(huán)境下對usb設備進行管理的方法的流程圖;
圖2為本發(fā)明實施例二提供的虛擬環(huán)境下對usb設備進行管理的主機的模塊示意圖;
圖3為本發(fā)明實施例三提供的虛擬環(huán)境下對usb設備進行管理的系統(tǒng)的結構示意圖;
圖4為利用本發(fā)明實施例三中的系統(tǒng)獲取usb設備的設備信息的方法流程圖;
圖5為利用本發(fā)明實施例三中的系統(tǒng)采用動態(tài)掛載方式掛載usb設備的方法流程圖;
圖6為利用本發(fā)明實施例三中系統(tǒng)采用動態(tài)卸載方式卸載usb設備的方法流程圖;
圖7為利用本發(fā)明實施例三中系統(tǒng)刪除usb設備的方法流程圖。
具體實施方式
下面通過具體實施方式結合附圖對本發(fā)明作進一步詳細說明。
實施例一:
本實施例提供一種虛擬環(huán)境下對usb設備進行管理的方法,其相對于現(xiàn)有技術中利用usb重定向技術將usb設備定向到虛擬機上進行操作的方案,具有管理步驟簡單、管理效率高的優(yōu)點,本實施例的方法尤其適用于對遠程終端的usb設備進行管理。該方法參見圖1所示,包括:
s101、通過與終端建立的通信鏈路獲取終端上的usb設備的設備信息;
s102、獲取主機上的虛擬機信息;
s103、根據(jù)設備信息和虛擬機信息確定對usb設備的管理信息;
s104、根據(jù)管理信息,完成虛擬機對usb設備的管理。
本實施例的終端可以是電腦、手機、平板電腦等類型的終端,當終端是手機或者平板電腦時,一般不存在通用的usb設備接口,為了實現(xiàn)usb設備的插拔,可以利用接口轉(zhuǎn)換線等工具將usb設備連接到手機或平板電腦上。
步驟s101中,獲取終端上的usb設備的設備信息的方式有多種,比較優(yōu)選的是,通過通信鏈路向終端發(fā)送查詢指令,指示終端上報自身的usb設備的設備信息,接收終端通過通信鏈路發(fā)送的設備信息;還可以是接收終端自身定時上報的usb設備的設備信息。終端上的usb設備可以是多個,相應的,獲取的設備信息可以是多個。步驟s102中,獲取主機上的虛擬機信息可以確定哪些虛擬機可用,可以想到的是,主機上的可以同時運行多臺虛擬機,即獲取的虛擬機信息可以是多個。
在實施例中,在本實施例中,對usb設備的管理信息可以理解為指示完成虛擬機對usb設備的管理的信息,具體的管理類型有很多,例如掛載,卸載, 刪除等等。根據(jù)設備信息和虛擬機信息可以確定對usb設備的管理信息,該確定至少包含了兩層意思,一是從至少一個虛擬機中確定一個虛擬機作為管理usb設備的虛擬機,從多個usb設備的設備信息中確定一個usb設備作為被管理的usb設備;二是確定管理的具體類型,例如掛載、卸載、刪除等。可以想到的是確定管理信息的過程可以是在主機上完成,根據(jù)管理信息控制主機上的虛擬機完成對usb設備的管理,也可以是接收的外部發(fā)來的管理信息,根據(jù)該管理信息實現(xiàn)虛擬機對usb設備的管理。
優(yōu)選的,步驟s103和s104中的管理信息包括掛載指示和卸載指示,分別用于指示將待掛載的usb設備掛載到虛擬機上以及指示將usb設備從其掛載的虛擬機上卸載。
當管理信息為掛載指示時,步驟s104具體可以是,根據(jù)掛載指示,將設備信息寫入虛擬機的配置文件中,以供虛擬機根據(jù)配置文件中的設備信息,模擬出虛擬usb設備。
在本實施例中,一個usb設備只能掛載到一個虛擬機上,為了避免出現(xiàn)usb設備被虛擬機重復掛載的情況,可以將usb設備的掛載和卸載(也即未掛載)狀態(tài)區(qū)分開來展示給用戶,比較簡單的方式是可以在管理usb設備的設備信息的頁面上,將未掛載和已掛載的usb設備分成兩列顯示,一列是未掛載,一列是已掛載的。優(yōu)選的,還可以在管理usb設備的設備信息的頁面上,為未掛載和已掛載的usb設備設置不同的狀態(tài)標志位,來標識usb設備的掛載和卸載狀態(tài),例如設置為1表示已掛載,設置為0表示未掛載,當usb設備已經(jīng)掛載在虛擬機上之后,其對應的狀態(tài)標志位從0變?yōu)?,表示其已掛載。
除此之外,本實施例還可以采用其他可行的方式將usb設備的掛載、未掛載狀態(tài)展示給用戶。
優(yōu)選的,在本實施例中的掛載可以選擇兩種掛載方式,靜態(tài)掛載和動態(tài)掛載,靜態(tài)掛載是指,在虛擬機處于關機狀態(tài)下,將usb設備的設備信息寫入虛擬機的配置文件中,這樣,虛擬機在開機的時候,就可以直接利用配置文件中的設備信息模擬出虛擬usb設備,完成usb設備的掛載;而動態(tài)掛載指的是,在虛擬機開機時,將設備信息寫入到虛擬機的配置文件中,再調(diào)用動態(tài)掛載命令,控制虛擬機根據(jù)配置文件中的設備信息模擬出虛擬usb設備。容易想到的是,掛載時,使用的設備信息是掛載指示對應的usb設備的設備信息。
當管理信息為掛載指示時,步驟s104具體可以是,根據(jù)卸載指示,從虛擬機的配置文件中刪除設備信息,或?qū)⒏鶕?jù)設備信息模擬的虛擬usb設備從虛擬機上刪除。相應的,當usb設備從虛擬機上卸載后,對其狀態(tài)標識位執(zhí)行清0操作。
對應于掛載的兩種方式,本實施例的卸載也分為靜態(tài)卸載和動態(tài)卸載。靜態(tài)卸載是,在虛擬機關機狀態(tài)下,從虛擬機的配置文件中刪除usb設備的設備信息;動態(tài)卸載是,在虛擬機的開機狀態(tài)下,調(diào)用動態(tài)卸載命令,從虛擬機中刪除根據(jù)usb設備的設備信息模擬的虛擬usb。容易想到的是,卸載usb設備時,被卸載的usb設備是對應于卸載指示的usb設備。
在本實施例中,可以調(diào)用libvirt函數(shù)庫提供的動態(tài)掛載命令和動態(tài)卸載命令完成動態(tài)掛載和靜態(tài)掛載的過程。
當虛擬機上掛載了usb設備后,用戶在主機上對虛擬機掛載的usb設備進行讀寫,即可達到對終端上的usb設備進行讀寫的目的。當不需要在虛擬機上對終端的usb進行讀寫等操作時,虛擬機上的usb設備就沒有存在的意義,需要對其進行刪除,優(yōu)選的,在步驟s103中根據(jù)設備信息和虛擬機信息確定的對usb設備的管理信息還包括刪除指示,可以理解的是,根據(jù)刪除指示,可以確定待刪除的usb設備和其所在的虛擬機。當管理信息為刪除指示時,步驟s104具體為根據(jù)刪除指示,確定usb設備是否已掛載到虛擬機上,若是,則從虛擬機上卸載該usb設備。
在本實施例中,步驟s103中,的管理信息可以是主機根據(jù)設備信息和虛擬機信息確定的,也可以是接收的外部的信息,具體可以是接收的外部的虛擬化中心根據(jù)設備信息和虛擬機信息確定的管理信息。明顯,這種方案中是隱藏了虛擬化中心獲取設備信息和獲取虛擬機信息的方案??梢韵氲降氖?,虛擬化中心可以獲取多個虛擬機信息,通過確定管理信息,將其發(fā)給主機執(zhí)行的方式,控制虛擬機完成對usb設備的管理,如上述的卸載、掛載、刪除等等。當管理信息是由虛擬化中心產(chǎn)生時,本實施例必定存在虛擬化中心發(fā)送卸載指示、掛載指示、刪除指示等管理信息給主機的步驟。
可以想到的是,如果終端上的usb設備被拔除,虛擬機是不會知道的。當該拔除行為發(fā)生在虛擬機啟動前,且虛擬機中的配置文件中已寫入被拔除的usb設備的設備信息,會對虛擬機的啟動造成影響甚至導致虛擬機無法啟動; 如果該拔除行為發(fā)生在使用虛擬機的過程中,且被拔除的usb設備已經(jīng)掛載在該虛擬機上,則用戶在虛擬機上讀寫usb設備的時候,會出現(xiàn)讀寫錯誤或讀寫失效的問題,這些都會給用戶帶來極差的體驗。為了避免終端上usb設備被拔除帶來的上述問題,優(yōu)選的,當虛擬機上的usb設備出現(xiàn)異常時,根據(jù)虛擬機上的usb設備的設備信息和終端上的usb設備的設備信息,確定終端上被拔除的usb設備,從虛擬機上卸載被拔除的usb設備。在本實施例中,為了避免異常情況給用戶帶來的不良體驗,可以定時獲取終端上的usb設備的設備信息,將其與虛擬機上的usb設備的設備信息進行比較,、確定終端上被拔除的usb設備,然后從虛擬機上卸載被拔除的設備。
對于usb設備而言,不同廠家的usb設備,其vendorid(生產(chǎn)商)與productid(產(chǎn)品編號)不一致,可以利用這兩個值來區(qū)分插在同一個終端上的不同廠家的usb設備。但對于同一廠家的同一批次的usb設備,vendor與product是一致的,如果兩個同批次的usb設備插在終端上,區(qū)分起來就比較麻煩。為了解決同批次usb設備特征信息一致,導致沖突的問題,優(yōu)選地,步驟s101中獲取的usb設備的設備信息包括用于對usb設備進行唯一標識的標識信息。
可以想到的是,如果在設備信息中不僅包含usb設備的vendorid(生產(chǎn)商)與productid(產(chǎn)品編號),還包含usb設備的插槽位置,例如remote_usb_192.168.1.10_1_0,其中1為bus的值,0為port的值,就可以將同一批次的同一廠家的usb設備區(qū)分開來,所以優(yōu)選的,本實施例的標識信息包括生產(chǎn)商、產(chǎn)品編號、總線、端口、源ip。生產(chǎn)商和產(chǎn)品編號是usb設備出廠時自帶的標識,端口和總線可以表征usb設備在終端的哪一個插槽上,源ip可以用來確定插入usb設備的終端。這些信息足以唯一標識任何一個usb設備。
在現(xiàn)有的技術中,當usb設備指向了虛擬機所運行的主機后,掛載了usb的虛擬機就只能在這臺主機上啟動,而無法跨主機啟動,造成這個問題的原因是,主機上獲取的usb設備的名稱是由主機上的usb客戶端自行編排的,這導致各個主機獲取的同一個usb設備的名稱可能不一致,從而導致跨主機啟動時,虛擬機掛載錯誤的usb設備。對于這個問題,優(yōu)選地,步驟s101中獲取的設備信息包括終端統(tǒng)一產(chǎn)生的usb設備名稱。優(yōu)選的,該usb設備名稱可以是由終端上的usb服務端統(tǒng)一產(chǎn)生,并由usb服務端通過與主機的usb客戶端建 立的通信鏈路轉(zhuǎn)發(fā)給usb客戶端的。由此,各個主機獲取的同一個usb設備的名稱都是一致的。通過這種方法,解決了掛載usb設備的虛擬機無法跨主機的問題。
有益效果:
采用本實施例的虛擬環(huán)境下對usb設備進行管理的方法,可以通過與終端建立的通信鏈路獲取終端上的usb設備的設備信息;獲取主機上的虛擬機信息;根據(jù)設備信息和虛擬機信息確定對usb設備的管理信息;根據(jù)管理信息,完成虛擬機對usb設備的管理。本實施例的方法通過獲取的終端的usb設備的設備信息和獲取的主機上的虛擬機信息,確定對usb設備的管理信息,完成虛擬機對usb設備的管理,也即只要獲取設備信息和虛擬機信息即可根據(jù)本方法完成虛擬機對usb設備的管理,所以本實施例的方法不需要復雜的操作指令即可實現(xiàn)虛擬機對usb設備的管理,具有管理簡單、有效、易實現(xiàn)的優(yōu)點。
進一步地,本實施例的設備信息包括對usb設備進行唯一標識的標識信息,可以幫助解決由于同批次usb設備的特征信息一樣,導致的沖突問題,有利于避免重復掛載usb設備的情況出現(xiàn)。
進一步地,本實施例的usb設備的設備名稱由終端統(tǒng)一產(chǎn)生,可以解決由于主機自行編排usb設備名稱帶來的虛擬機不能跨主機啟動的問題。
進一步地,本實施例可以對于虛擬機上usb設備的異常情況進行處理,可以解決usb設備從終端上被拔走,導致的虛擬機啟動失敗的問題。
實施例二:
本實施例提出一種虛擬環(huán)境下對usb設備進行管理的主機,參見圖2,本實施例的主機2包括第一獲取模塊21,第二獲取模塊22,確定模塊23以及管理模塊24;第一獲取模塊21用于通過與終端建立的通信鏈路獲取終端上的usb設備的設備信息;第二獲取模塊22用于獲取主機上的虛擬機信息;確定模塊23用于根據(jù)設備信息和虛擬機信息確定對usb設備的管理信息;管理模塊24用于根據(jù)管理信息,完成虛擬機對usb設備的管理。
本實施例的終端可以是電腦、手機、平板電腦等類型的終端,當終端是手機或者平板電腦時,一般不存在通用的usb設備接口,為了實現(xiàn)usb設備的插 拔,可以利用接口轉(zhuǎn)換線等工具使usb設備連接到手機或平板電腦上。
本實施例中,第一獲取模塊21獲取終端上的usb設備的設備信息的方式有多種,比較優(yōu)選的是,通過通信鏈路向終端發(fā)送查詢指令,指示終端上報自身的usb設備的設備信息,接收終端通過通信鏈路發(fā)送的設備信息;還可以是接收終端自身定時上報的usb設備的設備信息。終端上的usb設備可以是多個,相應的,獲取的設備信息可以是多個。第二獲取模塊22獲取的主機上的虛擬機信息可以用來確定哪些虛擬機可用,可以想到的是,主機上的可以同時運行多臺虛擬機,即第二獲取模塊22獲取的虛擬機信息可以是多個。
優(yōu)選的,本實施例的第一獲取模塊21獲取的管理信息包括掛載指示或卸載指示;管理模塊24包括掛載模塊241和卸載模塊242;掛載模塊241用于,根據(jù)掛載指示,將設備信息寫入虛擬機的配置文件中,以供虛擬機根據(jù)配置文件中的設備信息,模擬出虛擬usb設備;一個usb設備只能同時掛載在一個虛擬機上。
優(yōu)選的,在本實施例中掛載模塊241的掛載方式包括:靜態(tài)掛載和動態(tài)掛載,靜態(tài)掛載是指,掛載模塊241在虛擬機處于關機狀態(tài)下,將usb設備的設備信息寫入虛擬機的配置文件中,這樣,虛擬機在開機的時候,就可以直接利用配置文件中的設備信息模擬出虛擬usb設備,完成usb設備的掛載;而動態(tài)掛載指的是,掛載模塊241在虛擬機開機時,將設備信息寫入到虛擬機的配置文件中,再調(diào)用動態(tài)掛載命令,控制虛擬機根據(jù)配置文件中的設備信息模擬出虛擬usb設備。容易想到的是,掛載時,使用的設備信息是掛載指示對應的usb設備的設備信息。
卸載模塊242用于根據(jù)卸載指示,從虛擬機的配置文件中刪除設備信息,或?qū)⒏鶕?jù)設備信息模擬的虛擬usb設備從虛擬機上刪除。
對應于掛載的兩種方式,本實施例卸載模塊242的卸載方式也包括靜態(tài)卸載和動態(tài)卸載。靜態(tài)卸載是,卸載模塊242在虛擬機關機狀態(tài)下,從虛擬機的配置文件中刪除usb設備的設備信息;動態(tài)卸載是,卸載模塊242在虛擬機的開機狀態(tài)下,調(diào)用動態(tài)卸載命令,從虛擬機中刪除根據(jù)usb設備的設備信息模擬的虛擬usb。容易想到的是,卸載usb設備時,被卸載的usb設備是對應于卸載指示的usb設備。
在本實施例中,掛載模塊241和卸載模塊242可以調(diào)用libvirt函數(shù)庫提 供的動態(tài)掛載命令和動態(tài)卸載命令完成動態(tài)掛載和靜態(tài)掛載的過程。
當虛擬機上掛載了usb設備后,用戶在主機上對虛擬機掛載的usb設備進行讀寫,即可達到對終端上的usb設備進行讀寫的目的。當不需要在虛擬機上對終端的usb進行讀寫等操作時,虛擬機上的usb設備就沒有存在的意義,需要對其進行刪除。優(yōu)選的,本實施例的管理信息還包括刪除指示,管理模塊24還包括刪除模塊243,用于根據(jù)刪除指示,確定usb設備是否已掛載到虛擬機上,若是,則從虛擬機上卸載usb設備。
可以想到的是,如果終端上的usb設備被拔除,虛擬機是不會知道的。當該拔除行為發(fā)生在虛擬機啟動前,且虛擬機中的配置文件中已寫入被拔除的usb設備的設備信息,會對虛擬機的啟動造成影響甚至導致虛擬機無法啟動;如果該拔除行為發(fā)生在使用虛擬機的過程中,且被拔除的usb設備已經(jīng)掛載在該虛擬機上,則用戶在虛擬機上讀寫usb設備的時候,會出現(xiàn)讀寫錯誤或讀寫失效的問題,這些都會給用戶帶來極差的體驗。為了避免終端上usb設備被拔除帶來的上述問題,優(yōu)選的,本實施例的主機2還包括異常處理模塊25,用于當虛擬機上的usb設備出現(xiàn)異常時,根據(jù)虛擬機上的usb設備的設備信息和終端上的usb設備的設備信息,確定終端上被拔除的usb設備,從虛擬機上卸載被拔除的usb設備。
在本實施例中,確定模塊23可以包括接收模塊231,用于接收外部的虛擬化中心根據(jù)設備信息和虛擬機信息確定的管理信息。
明顯,當管理信息是由接收模塊231接收時,隱含了虛擬化中心獲取設備信息和獲取虛擬機信息的方案。可以想到的是,虛擬化中心可以獲取多個虛擬機信息,通過確定管理信息,將其發(fā)給接收模塊231,由管理模塊24根據(jù)管理信息,控制虛擬機完成對usb設備的管理,如上述的卸載、掛載、刪除等等管理。相應的,當管理信息是由虛擬化中心產(chǎn)生時,本實施例必定存在虛擬化中心發(fā)送卸載指示、掛載指示、刪除指示等管理信息給主機的步驟。
對于usb設備而言,不同廠家的usb設備,其vendorid(生產(chǎn)商)與productid(產(chǎn)品編號)不一致,可以利用這兩個值來區(qū)分插在同一個終端上的不同廠家的usb設備。但對于同一廠家的同一批次的usb設備,vendor與product是一致的,如果兩個同批次的usb設備插在終端上,主機獲取虛擬化中心區(qū)分起來都比較麻煩。為了解決同批次usb設備特征信息一致,導致 沖突的問題。優(yōu)選地,第一獲取模塊21獲取的usb設備的設備信息包括用于對usb設備進行唯一標識的標識信息。
可以想到的是,如果在設備信息中不僅包含usb設備的vendorid(生產(chǎn)商)與productid(產(chǎn)品編號),還包含usb設備的插槽位置,例如remote_usb_192.168.1.10_1_0,其中1為bus的值,0為port的值,就可以將同一批次的同一廠家的usb設備區(qū)分開來,所以優(yōu)選的,本實施例的標識信息包括生產(chǎn)商、產(chǎn)品編號、總線、端口、源ip。生產(chǎn)商和產(chǎn)品編號是usb設備出廠時自帶的標識,端口和總線可以表征usb設備在終端的哪一個插槽上,源ip可以用來確定插入usb設備的終端。這些信息足以唯一標識任何一個usb設備。
在現(xiàn)有的技術中,當usb設備指向了虛擬機所運行的主機后,掛載了usb的虛擬機就只能在這臺主機上啟動,而無法跨主機啟動,造成這個問題的原因是,主機上獲取的usb設備的名稱是由主機上的usb客戶端自行編排的,這導致各個主機獲取的同一個usb設備的名稱可能不一致,從而導致跨主機啟動時,虛擬機掛載錯誤的usb設備。對于這個問題,優(yōu)選地,第一獲取模塊21獲取的設備信息包括終端統(tǒng)一產(chǎn)生的usb設備名稱。優(yōu)選的,該usb設備名稱可以是由終端上的usb服務端統(tǒng)一產(chǎn)生,并由usb服務端通過與主機的usb客戶端建立的通信鏈路轉(zhuǎn)發(fā)給usb客戶端的。由此,各個主機獲取的同一個usb設備的名稱都是一致的。通過這種方法,解決了掛載usb設備的虛擬機無法跨主機的問題。
有益效果:
采用本實施例的虛擬環(huán)境下對usb設備進行管理的主機,第一獲取模塊用于通過與終端建立的通信鏈路獲取終端上的usb設備的設備信息;第二獲取模塊用于獲取主機上的虛擬機信息;確定模塊用于根據(jù)設備信息和虛擬機信息確定對usb設備的管理信息;管理模塊用于根據(jù)管理信息,完成虛擬機對usb設備的管理。本實施例的主機通過第一、二獲取模塊分別獲取設備信息、虛擬機信息,通過確定模塊確定對usb設備進行管理的管理信息,管理模塊根據(jù)管理信息對,完成虛擬機對usb設備的管理,基于獲取的設備信息和虛擬機信息進行usb設備的管理,管理方法簡單有效,不需要執(zhí)行繁瑣的指令,不易出現(xiàn)錯誤。進一步地,還可以排出由于終端上的usb設備被拔除導致的異常,進一步提高通過本實施例的主機對虛擬機上的usb設備的管理效果,提高用戶體驗。
實施例三:
參見圖3,本實施例提出一種虛擬環(huán)境下對usb設備進行管理的系統(tǒng),包括虛擬化中心31和主機32;虛擬化中心31用于獲取主機上的虛擬機信息,通過主機獲取終端上的usb設備的設備信息,以及根據(jù)設備信息和虛擬機信息確定對usb設備的管理信息,將管理信息發(fā)送給主機;主機32通過與終端33建立的通信鏈路獲取終端上的usb設備的設備信息,接收管理信息,根據(jù)管理信息,完成虛擬機對usb設備的管理。
在本實施例中,虛擬化中心可以實現(xiàn)整個虛擬化資源的集中管理,包括主機信息,虛擬機信息等等。在本實施例中,虛擬化中心可以獲取到終端上的usb設備的設備信息,以及主機上的虛擬機信息,通過這兩個信息是按虛擬機對usb設備的管理。
本實施例的虛擬機發(fā)送的管理信息可以包括掛載指示、卸載指示以及刪除指示,分別用于控制虛擬機掛載usb設備,從虛擬機上卸載usb設備以及從虛擬機上刪除usb設備。
本實施例的主機32可以包括主機代理模塊321,該主機代理模塊321可以實現(xiàn)實施例二中主機上的第一、二獲取模塊、確定模塊以及管理模塊的功能。
主機和終端的通信可通在主機上設置usb客戶端323,在終端33上設置usb服務端331來實現(xiàn),usb客戶端323和usb服務端331可以建立通信鏈路,實現(xiàn)通信。
參見圖4,虛擬化中心通過主機獲取終端上的usb設備的設備信息的具體過程可以包括:
s401、虛擬化中心向主機代理模塊發(fā)起usb查詢請求,并指明終端的ip;
s402、主機代理模塊接收usb查詢請求,并轉(zhuǎn)發(fā)給主機上的usb客戶端;
s403、usb客戶端建立與指定終端上的usb服務端的tcp通信鏈路,通過該通信鏈路轉(zhuǎn)發(fā)usb查詢請求給終端上的usb服務端;
s404、終端上的usb服務端執(zhí)行usb查詢信息,讀取終端上的usb設備列表,通過通信鏈路將usb設備列表返回給主機上的us客戶端;
s405、主機上的usb客戶端返回usb設備列表給主機代理模塊;
s406、主機代理模塊將返回的usb設備列表轉(zhuǎn)化為內(nèi)部響應,發(fā)送給虛擬化中心;
s407、虛擬化中心接收內(nèi)部響應,將其保存到數(shù)據(jù)庫中,并在usb管理頁面上顯示。
虛擬化中心獲取了usb設備的設備信息之后,可以將其存儲在數(shù)據(jù)庫中。為了方便用戶對usb設備信息的查看和操作,虛擬化中心上還可以用于將usb設備信息在其usb管理頁面上顯示出來。虛擬化中心可以根據(jù)用戶選擇的待掛載的usb設備以及掛載usb設備的虛擬機確定掛載指示,將掛載指示發(fā)給主機代理模塊,通過主機代理模塊將設備信息寫入虛擬機的配置文件中,以供虛擬機根據(jù)配置文件中的設備信息模擬出虛擬usb設備。
優(yōu)選的,虛擬化中心可以采用靜態(tài)掛載和動態(tài)掛載兩種方式將usb設備掛載到虛擬機上。靜態(tài)掛載:虛擬化中心在虛擬機關機狀態(tài)下,將待掛載的usb設備的設備信息寫入虛擬機的配置文件中,便于虛擬機啟動時直接根據(jù)配置文件中的設備信息模擬出虛擬usb設備。
動態(tài)掛載:虛擬化中心在虛擬機開機狀態(tài)下,將待掛載的usb設備的設備信息寫入虛擬機的配置文件中,發(fā)送掛載指示給主機代理模塊,便于其根據(jù)掛載指示,調(diào)用動態(tài)掛載命令,控制虛擬機根據(jù)配置文件中的設備信息模擬出虛擬usb設備。
為了方便用戶了解到虛擬機和已掛載的usb設備的對應關系等信息,本實施例的虛擬化中心還可以在usb設備管理頁面上展示虛擬機和對應掛載在該虛擬機上的usb設備,展示這些usb設備所在的終端,以及usb設備的型號、大小等信息,便于用戶在usb設備管理頁面查看的時候,可以了解虛擬機和usb設備的狀態(tài),對應關系等信息,然后根據(jù)自己的需要對不同的usb設備進行管理。
本實施例的虛擬機的狀態(tài)可以包括開機、關機、待機等等實體機具有的狀態(tài)。優(yōu)選的,本實施例的虛擬化中心控制虛擬機對usb設備的卸載包括:在虛擬機關機狀態(tài)下,將待卸載的usb設備的設備信息從虛擬機的配置文件中刪除;或者在虛擬機開機狀態(tài)下,發(fā)送動態(tài)卸載指示給主機代理模塊,便于其根據(jù)動態(tài)卸載指示,調(diào)用動態(tài)卸載命令,刪除虛擬機上根據(jù)配置文件中的設備信息模擬的虛擬usb設備。
在本實施例中,主機代理模塊調(diào)用的動態(tài)掛載命令和動態(tài)卸載命令可以利用現(xiàn)有的軟件來實現(xiàn),例如主機代理模塊可以調(diào)用libvirt函數(shù)庫提供的動態(tài)掛載和動態(tài)卸載命令。下面以libvirt提供動態(tài)掛載和動態(tài)卸載命令為例,對動態(tài)掛載和動態(tài)卸載的詳細過程做出示例說明。
參見圖5,是本實施例的系統(tǒng)采用動態(tài)掛載方式掛載usb設備的方法流程圖,動態(tài)掛載的過程如下:
s501、虛擬化中心向主機代理模塊發(fā)出掛載指示;
s502、主機代理模塊接收到掛載指示,將待掛載的usb設備的設備信息寫入對應的虛擬機的配置文件中,調(diào)用libvvirt提供的掛載命令,在虛擬機中模擬出待掛載的usb設備;
s503、libvirt返回命令執(zhí)行的結果給主機代理;
s504、主機代理發(fā)送命令響應給虛擬化中心。
參見圖6,是本實施例的系統(tǒng)采用動態(tài)卸載方式卸載usb設備的方法流程圖,動態(tài)卸載的過程如下;
s601、虛擬化中心向主機代理模塊發(fā)出卸載指示;
s602、主機代理模塊接收到卸載指示,將待卸載的usb設備的設備信息從對應的虛擬機的配置文件中刪除,調(diào)用libvvirt提供的卸載命令,在虛擬機中刪除模擬的待卸載的usb設備;
s603、libvirt返回命令執(zhí)行的結果給主機代理模塊;
s604、主機代理模塊發(fā)送命令響應給虛擬化中心。
當用戶已經(jīng)不需要對某個usb設備進行管理時,為了節(jié)約資源,可以將該usb設備從對應的虛擬機上刪除。優(yōu)選的,本實施例的虛擬化中心可以發(fā)送刪除指示給主機代理模塊,主機代理模塊根據(jù)該指示確定待刪除的usb設備是否掛載在虛擬機上,若掛載,則將其從虛擬機上卸載,將虛擬化中心中存儲的對應的設備信息刪除,完成usb設備的徹底刪除。若沒有掛載,只需要將虛擬化中心存儲的設備信息刪除即可。
參見圖7,是利用本實施例的系統(tǒng)刪除usb設備的方法流程圖,刪除的具體過程如下:
s701、虛擬化中心獲取用戶在usb設備管理頁上選擇的待刪除的usb設備;
s702、虛擬化中心檢查待刪除的usb設備是否已掛載,如果已經(jīng)掛載到虛擬機,進入s703,否則進入s704;
s703、發(fā)送刪除指示給主機代理模塊,控制虛擬機卸載usb設備,進入s704;
s704、從虛擬化中心的數(shù)據(jù)庫中刪除usb設備的設備信息。
為了保證用戶對usb設備的掛載、卸載狀態(tài)的了解,優(yōu)選地,本實施例的虛擬機中心還用于對每個usb設備設置掛載標識信息,掛載標識信息用于對usb設備的掛載狀態(tài)和卸載狀態(tài)進行標識。例如虛擬化中心可以將掛載標識信息該掛載標識信息設置為一個掛載標志位flag,若usb設備被掛載,則該標志位置為1,否,則對該標志位置清0;或者是,虛擬化中心用于在usb管理頁面上點亮掛載的usb設備對應的圖標或者是文字信息,熄滅卸載或未掛載的usb設備的圖標或文字信息。這樣就可以實時地反應當前usb設備的狀態(tài)。優(yōu)選的,虛擬化中心設置的掛載標識信息可以設置在虛擬化中心的usb管理頁面上向用戶展示,也可以是通過其他的方式向用戶展示。
在實際管理usb設備的過程中,會存在虛擬機上的模擬的虛擬usb設備的狀態(tài)和對應的實際的usb設備狀態(tài)不符的時候。例如當在終端上的usb設備被拔走,會導致虛擬機無法啟動,或是虛擬機使用時,無法在虛擬機上讀寫usb設備。為了解決這些問題,優(yōu)選的,可以利用本實施例的虛擬化中心對虛擬機上的usb設備的異常情況進行處理。所以本實施例的虛擬化中心還可以用于定時發(fā)送usb查詢請求,獲取終端上的設備信息,將其與數(shù)據(jù)庫中的設備信息進行比較,確定終端上被拔除的usb設備,從對應的虛擬機中卸載被拔除的usb設備,從數(shù)據(jù)庫中刪除被拔除的usb設備的設備信息;還可以是對無法啟動的虛擬機的配置文件中的設備信息與終端上的設備信息進行比較,確定終端上被拔除的usb設備,從無法啟動的虛擬機的配置文件中刪除設備信息。
對于usb設備而言,不同廠家的usb設備,其vendorid(生產(chǎn)商)與productid(產(chǎn)品)不一致,可以利用這兩個值來區(qū)分插在同一個終端上的不同廠家的usb設備。但對于同一廠家的同一批次的usb設備,vendor與product是一致的,如果兩個同批次usb設備插在終端上,虛擬化中心區(qū)分起來就比較麻煩。為了解決同批次usb設備特征信息一致,導致沖突的問題,優(yōu)選地,本實施例的虛擬化中心獲取的設備信息中包含用于對usb設備進行唯 一標識的標識信息。具體的,標識信息可以包括生產(chǎn)商、產(chǎn)品編號、總線、端口、源ip。生產(chǎn)商和產(chǎn)品編號是usb設備出廠時自帶的標識,端口和總線可以表征usb設備在終端的哪一個插槽上,源ip可以用來確定插入usb設備的終端。這些信息足以唯一標識任何一個usb設備。
在現(xiàn)有的技術中,usb設備指向了虛擬機所運行的主機后,掛載了usb的虛擬機就只能在這臺主機上啟動,而無法跨主機啟動,造成這個問題的原因是,主機上獲取的usb設備的名稱是由主機的usb客戶端自行編排的,這導致各個主機獲取的同一個usb設備的名稱可能不一致,從而導致跨主機啟動時,虛擬機掛載錯誤的usb設備。對于這個問題,解決方案可以是主機獲取的設備信息包括終端統(tǒng)一產(chǎn)生的usb設備名稱。優(yōu)選的,該usb設備名稱是由終端上的usb服務端同一產(chǎn)生的,主機上的客戶端通過通信鏈路獲取該設備名稱供主機使用。
有益效果:
采用本實施例的虛擬環(huán)境下對usb設備進行管理的系統(tǒng),虛擬化中心可以獲取主機上的虛擬機信息,通過主機獲取終端上的usb設備的設備信息,以及根據(jù)設備信息和虛擬機信息確定對usb設備的管理信息,將管理信息發(fā)送給主機;主機可以通過與終端建立的通信鏈路獲取終端上的usb設備的設備信息,接收虛擬化中心發(fā)送的管理信息,根據(jù)管理信息,完成虛擬機對usb設備的管理。本實施例的系統(tǒng)結構簡單,通過虛擬化中心和主機的交互以及主機根據(jù)虛擬化中心的指示對虛擬機的控制可以完成主機上的虛擬機對終端上的usb設備的管理,管理過程中,不用執(zhí)行繁雜的命令,沒有復雜的步驟,管理簡單有效,帶給用戶良好的體驗。
顯然,本領域的技術人員應該明白,上述本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲介質(zhì)(rom/ram、磁碟、光盤)中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。所以,本發(fā)明不限制于任何特定的硬件和軟件結合。
以上內(nèi)容是結合具體的實施方式對本發(fā)明所作的進一步詳細說明,不能認定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬技術領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干簡單推演或替換,都應當視為屬于本發(fā)明的保護范圍。