CN103942088A - 一种获取虚拟机usb存储设备使用情况的方法 - Google Patents
一种获取虚拟机usb存储设备使用情况的方法 Download PDFInfo
- Publication number
- CN103942088A CN103942088A CN201410130062.4A CN201410130062A CN103942088A CN 103942088 A CN103942088 A CN 103942088A CN 201410130062 A CN201410130062 A CN 201410130062A CN 103942088 A CN103942088 A CN 103942088A
- Authority
- CN
- China
- Prior art keywords
- usb
- virtual machine
- memory device
- service condition
- refers
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明涉及云计算领域,特别是一种获取虚拟机USB存储设备使用情况的方法。本发明方法包括步骤:1、将USB存储设备插入虚拟机所在宿主机上的某个USB接口,在宿主机上面调用工具获取该USB设备的ID信息并保存;2、在宿主机上通过VT-d设备直连技术将USB设备挂载给虚拟机使用;3、虚拟机接收到宿主机发送过来的获取USB设备存储使用情况的请求信息后运行相关工具获取指定USB设备的port树;4、在虚拟机上遍历所有的块设备,根据port树找到对应的USB块设备号;5、根据得到的USB块设备号执行系统命令得到该设备的存储空间使用情况,并通过串口机制返回给宿主机。本发明方法可用于获取虚拟机USB存储设备使用情况。
Description
技术领域
本发明涉及云计算领域,特别是一种获取虚拟机USB存储设备使用情况的方法。
背景技术
在云计算的环境下,宿主机中的CPU、内存、磁盘空间等大部分资源都以共享的形式供虚拟机使用。可对于需要以独占方式使用的USB存储设备来说,由于其与固定的物理USB接口连接,虚拟机要获取其使用情况是比较困难的。首先,虚拟机是个动态分配资源的单元,USB能被随时创建删除的特点决定了不会把某个物理USB接口分配给固定的虚拟机使用;其次,宿主机上一般都会有多个物理USB接口,用户不会将USB存储设备插入到固定的物理USB接口上,所以也不能事先把某个USB接口分配给某台虚拟机使用。因此,一般要获取USB设备使用情况都只能在宿主机上完成,步骤如下:
1、USB设备插入到宿主机上;
2、在宿主机上调用命令将USB设备挂载到某个分区;
3、在宿主机上调用命令获取分区的使用情况,如linux下的df-h。
前述现有方法存在以下的弊端:
1、只能挂载在宿主机上获取,这时候就不能被虚拟机挂载,因此要持续的监控USB设备的使用情况就得不断地从虚拟机上卸载,然后挂载到宿主机上,获取完以后又挂载到虚拟机上;如此循环,极大地影响虚拟机对USB存储设备的使用。
2、USB存储设备挂载到宿主机上会威胁设备上数据的安全性,由于所有虚拟机都能将宿主机的分区挂载成一个分区来使用;因此,这种情况下,USB存储设备的数据就有可能暴露给宿主机上属于其他用户的虚拟机。
发明内容
本发明解决的技术问题在于提供一种获取虚拟机USB存储设备使用情况的方法,解决了云计算领域里虚拟机获取USB存储设备使用情况所存在的重复挂载导致复杂低效及不安全等相关问题。
本发明解决上述技术问题的技术方案是:
包括如下步骤:
步骤1:将USB存储设备插入虚拟机所在宿主机上面的某个USB接口,宿主机上面调用工具获取该USB设备的ID信息并保存;
步骤2:在宿主机上通过VT-d设备直连技术将USB设备挂载给虚拟机使用;
步骤3:当虚拟机接收到宿主机发送过来的获取USB设备存储使用情况的请求信息后运行相关工具获取指定USB设备的port树;该相关工具为脚本程序;
步骤4:虚拟机上遍历所有的块设备,根据port树找到对应的USB块设备号;
步骤5:最后根据得到的USB块设备号执行系统命令得到该设备的存储空间使用情况,并通过串口机制返回给宿主机。
所述的USB存储设备是指通过USB接口连接电脑的外置存储设备,可以是移动硬盘、U盘、SD卡、TF卡。
所述的USB设备的ID信息主要是指设备的vendor(厂商)id和product(产品)id;
所述的vendor id是指厂商ID,所述的product id是指产品ID,每一个USB硬件厂商在生产每一个产品时都有这两项唯一的ID信息。
所述的调用工具是指类似于linux操作系统中的lsusb命令行工具。
所述的块设备号是指块存储设备被挂载到计算机后所显示的编号。
本发明方案的有益效果如下:
1、本发明的方法不影响虚拟机对USB存储设备的挂载使用。
2、本发明的方法中USB存储设备直连到虚拟机,只被虚拟机挂载,设备上的数据只能被挂载了设备的虚拟机访问,具有较高的安全性。
附图说明
下面结合附图对本发明进一步说明:
附图是本发明的流程图。
具体实施方式
如附图所示,本发明首先将USB设备(这里以金士顿U盘为例)插入宿主机,用命令行工具lsusb获取该设备的厂商ID(vendor id)和产品ID(product id)。如下所示:
[roottest-ssd-kvm mnt]#lsusb
Bus 001 Device002:ID 8087:0024 Intel Corp.Integrated Rate MatchingHub
Bus 002 Device 002:ID 8087:0024 Intel Corp.Integrated Rate MatchingHub
Bus 003 Device 006:ID 0951:1665 Kingston Technology
Bus 001 Device 001:ID 1d6b:0002 Linux Foundation2.0root hub
Bus 002 Device 001:ID 1d6b:0002 Linux Foundation2.0root hub
Bus 003 Device 001:ID 1d6b:0002 Linux Foundation2.0root hub
Bus 004 Device 001:ID 1d6b:0003 Linux Foundation3.0root hub
如上可知该U盘的厂商ID为0951,产品ID为1665。接着在宿主机上面用VT-d设备直连技术将其挂载给虚拟机使用。首先准备USB设备直连的xml文件usb.xml如下:
<hostdev mode='subsystem′type='uSb′managed=′yes′>
<source>
<vendor id='0x0951′/>
<product id='0x1665'/>
<address bus='3′device='2'/>
</source>
</hostdev>
执行如下命令将USB设备直连到虚拟机上进行使用,其中i-12345678表示虚拟机的ID:
#virsh attach-device i-12345678 usb.xml
虚拟机在使用U盘的过程中,当宿主机想要获取其U盘使用情况的时候,宿主机通过串口向虚拟机发送一个请求,虚拟机收到请求之后,执行如下脚本程序获得vendor:product=0951:1665设备的port树(1-2.6)。脚本程序usbls部分代码如下:
#!/usr/bin/perl#″-1″lists vendor/product ID and revision.
//脚本执行时加-1参数显示设备的vendor/product ID信息
……
$PROGNAME=$0;
$DEVFILENAME=″/proc/bus/usb/devices″;
$showconfig=″yes″;
$listids=0;
if($#ARGV>-1)
{
if(″$ARGV[0]″eq″-1″)
{
$listids=1;
}
else
{
$DEVFILENAME=$ARGV[0];
}
}
if(!open(DEVNUM,″<$DEVFILENAME″)){
print″$PROGNAME:cannot open′$DEVFILENAME′\n″;
exit 1;
}
……
elsif($lastif ne$ifnum)
{
$temp=$level;
while($temp>=1)
{
print″″;
$temp-;
}
if($nconfig ne″1″){
$temp=″Cfg$showconfig/$nconfig″;
}else{
$temp=″″;
}
print sprintf(″|_Port$port:Dev$devnum$temp,If$ifnum,Prod=$product,ClaSS=$showclass,Drv=$driver%s,%sM″,
($maxchild==0)?″″:(″/″.$maxchild.″p″),
$speed);
if($listids==1)
{
print″,$ids″;
}
print″\n″;
$lastif=$ifnum;
}
$product=″″;
}#end while DEVNUM
close(DEVNUM);
#END.
执行该脚本获取U盘port树结果如下:
[rootnode62 home]#perl ./usbls-1
/:BUS01.port1:Dev1,class=root-hub,Drv=uhci_hcd/2p,12M
|_port2:Dev3,If0,Prod=QEMU USB Hub,Class=hub,Drv=hub/8p,12M,vendor=0409,ProdID=55aa,Rev=1.01
|_Port6:Dev9,If0,Prod=DataTraveler2.0,Class=stor.,Drv=usb-storage,12M,Vendor=0951,ProdID=1665,Rev=1.00
根据脚本执行结果分析得到该U盘的port树编号为1-2.6。
在虚拟机上面遍历块设备,找到port树编号为1-2.6的块设备编号:
[rootnode62home]#ls/sys/block/sda-1h
lrwxrwxrwx1root root0Dec2409:27/sys/block/sda
->../devices/pci0000:00:01.2/usb1/1-2/1-2.6/1-2.6:1.0/host$/target8:0:0:0/8:0:0:0/block/sda
如上所示,遍历得到该USB设备(port树编号为1-2.6)该虚拟机上面的块设备号为/dev/sda。前述的块设备号是指块存储设备被挂载到计算机后所显示的编号,例如linux系统中的/dev/hda、/dev/sdb等。
虚拟机接着调用系统工具(例如df-h等)获取已挂载的USB存储设备的使用情况数据信息,并将该数据信息以串口通信的方式传递给宿主机,从而实现了宿主机对虚拟机USB存储设备使用情况的监控和管理。
前述中,VT-d技术是硬件虚拟化领域里的一种设备直连技术;所述的设备直连是指将宿主机上的物理设备进行隐藏,然后将其直接分配给宿主机上面指定虚拟机使用的过程。设备port树是指执行脚本工具后得到的一个关于USB设备port项标识的树结构。串口是计算机上一种虚拟终端设备,在云计算中可以通过该终端设备实现宿主机与虚拟机之间的信息传递。
Claims (7)
1.一种获取虚拟机USB存储设备使用情况的方法,其特征在于:
包括如下步骤:
步骤1:将USB存储设备插入虚拟机所在宿主机上面的某个USB接口,宿主机上面调用工具获取该USB设备的ID信息并保存;
步骤2:在宿主机上通过VT-d设备直连技术将USB设备挂载给虚拟机使用;
步骤3:当虚拟机接收到宿主机发送过来的获取USB设备存储使用情况的请求信息后运行相关工具获取指定USB设备的port树;
步骤4:虚拟机上遍历所有的块设备,根据port树找到对应的USB块设备号;
步骤5:最后根据得到的USB块设备号执行系统命令得到该设备的存储空间使用情况,并通过串口机制返回给宿主机。
2.根据权利要求1所述的获取虚拟机USB存储设备使用情况的方法,其特征在于:所述的USB存储设备是指通过USB接口连接电脑的外置存储设备,可以是移动硬盘、U盘、SD卡、TF卡。
3.根据权利要求1所述的获取虚拟机USB存储设备使用情况的方法,其特征在于:所述的USB设备的ID信息主要是指设备的vendor id和product id;
所述的vendor id是指厂商ID,所述的product id是指产品ID,每一个USB硬件厂商在生产每一个产品时都有这两项唯一的ID信息。
4.根据权利要求2所述的获取虚拟机USB存储设备使用情况的方法,其特征在于:所述的USB设备的ID信息主要是指设备的vendor id和product id;
所述的vendor id是指厂商ID,所述的product id是指产品ID,每一个USB硬件厂商在生产每一个产品时都有这两项唯一的ID信息。
5.根据权利要求1至4任一项所述的获取虚拟机USB存储设备使用情况的方法,其特征在于:所述的调用工具是指类似于linux操作系统中的lsusb命令行工具。
6.根据权利要求1至4任一项所述的获取虚拟机USB存储设备使用情况的方法,其特征在于:所述的块设备号是指块存储设备被挂载到计算机后所显示的编号。
7.根据权利要求5所述的获取虚拟机USB存储设备使用情况的方法,其特征在于:所述的块设备号是指块存储设备被挂载到计算机后所显示的编号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410130062.4A CN103942088B (zh) | 2014-04-01 | 2014-04-01 | 一种获取虚拟机usb存储设备使用情况的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410130062.4A CN103942088B (zh) | 2014-04-01 | 2014-04-01 | 一种获取虚拟机usb存储设备使用情况的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103942088A true CN103942088A (zh) | 2014-07-23 |
CN103942088B CN103942088B (zh) | 2017-07-07 |
Family
ID=51189764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410130062.4A Active CN103942088B (zh) | 2014-04-01 | 2014-04-01 | 一种获取虚拟机usb存储设备使用情况的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103942088B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317759A (zh) * | 2014-10-15 | 2015-01-28 | 国云科技股份有限公司 | 一种支持虚拟机usb存储设备热插拔的方法 |
CN105138331A (zh) * | 2015-08-26 | 2015-12-09 | 浪潮电子信息产业股份有限公司 | 一种基于linux系统区分本地磁盘与usb移动磁盘的方法 |
CN106168903A (zh) * | 2016-06-30 | 2016-11-30 | 国云科技股份有限公司 | 一种管理usb和自动挂载到虚拟机的方法 |
WO2018001037A1 (zh) * | 2016-06-27 | 2018-01-04 | 华为技术有限公司 | 一种通信端口的透传方法及装置 |
CN109240798A (zh) * | 2018-08-30 | 2019-01-18 | 郑州云海信息技术有限公司 | 管理虚拟机的外接设备的方法和装置 |
CN110795378A (zh) * | 2019-09-20 | 2020-02-14 | 深圳震有科技股份有限公司 | 一种串口设备的设备号分配方法、智能终端及储存介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620578A (zh) * | 2009-06-23 | 2010-01-06 | 上海北大方正科技电脑系统有限公司 | 一种基于虚拟化系统的usb设备管理方法 |
CN102646080A (zh) * | 2011-02-22 | 2012-08-22 | 鸿富锦精密工业(深圳)有限公司 | 在虚拟环境中配置usb设备的系统和方法 |
-
2014
- 2014-04-01 CN CN201410130062.4A patent/CN103942088B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620578A (zh) * | 2009-06-23 | 2010-01-06 | 上海北大方正科技电脑系统有限公司 | 一种基于虚拟化系统的usb设备管理方法 |
CN102646080A (zh) * | 2011-02-22 | 2012-08-22 | 鸿富锦精密工业(深圳)有限公司 | 在虚拟环境中配置usb设备的系统和方法 |
Non-Patent Citations (1)
Title |
---|
王继刚等: ""虚拟化环境下的USB设备访问方法"", 《计算机应用》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317759A (zh) * | 2014-10-15 | 2015-01-28 | 国云科技股份有限公司 | 一种支持虚拟机usb存储设备热插拔的方法 |
CN105138331A (zh) * | 2015-08-26 | 2015-12-09 | 浪潮电子信息产业股份有限公司 | 一种基于linux系统区分本地磁盘与usb移动磁盘的方法 |
WO2018001037A1 (zh) * | 2016-06-27 | 2018-01-04 | 华为技术有限公司 | 一种通信端口的透传方法及装置 |
CN107544930A (zh) * | 2016-06-27 | 2018-01-05 | 华为技术有限公司 | 一种通信端口的透传方法及装置 |
CN107544930B (zh) * | 2016-06-27 | 2020-07-14 | 华为技术有限公司 | 一种通信端口的透传方法及装置 |
CN106168903A (zh) * | 2016-06-30 | 2016-11-30 | 国云科技股份有限公司 | 一种管理usb和自动挂载到虚拟机的方法 |
CN109240798A (zh) * | 2018-08-30 | 2019-01-18 | 郑州云海信息技术有限公司 | 管理虚拟机的外接设备的方法和装置 |
CN110795378A (zh) * | 2019-09-20 | 2020-02-14 | 深圳震有科技股份有限公司 | 一种串口设备的设备号分配方法、智能终端及储存介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103942088B (zh) | 2017-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103942088A (zh) | 一种获取虚拟机usb存储设备使用情况的方法 | |
CN106445576B (zh) | 主机板及其计算机实现方法及非暂态计算机可读储存装置 | |
US9043776B2 (en) | Transferring files to a baseboard management controller (‘BMC’) in a computing system | |
CN105814541B (zh) | 计算机设备及计算机设备内存启动的方法 | |
KR102269452B1 (ko) | 컨텐츠 변환 없는 컴퓨팅 디바이스에서의 다중 운영 체제 환경들의 지원 | |
US8561064B2 (en) | Retaining ownership of a virtual function while an adapter is replaced | |
CN102096597B (zh) | 使用管理引擎的虚拟总线设备 | |
US20070061818A1 (en) | Detection of devices during operating system setup | |
CN105830026A (zh) | 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 | |
US9417886B2 (en) | System and method for dynamically changing system behavior by modifying boot configuration data and registry entries | |
US10871970B1 (en) | Memory channel storage device detection | |
US20120191940A1 (en) | Allocating addressable memory regions to an adapter | |
US20160275027A1 (en) | System and Method to Avoid SMBus Address Conflicts via a Baseboard Management Controller | |
US10282190B2 (en) | System and method for updating a UEFI image in an information handling system | |
US10013199B2 (en) | Translation bypass by host IOMMU for systems with virtual IOMMU | |
US10592393B1 (en) | Firmware debug trace capture | |
CN106873970A (zh) | 一种操作系统的安装方法和装置 | |
JP6042454B2 (ja) | ユーザ生成によるデータセンターの省電力 | |
US20170115920A1 (en) | Memory channel storage device initialization | |
US8086834B2 (en) | System and method for populating a dedicated system service repository for an information handling system | |
US11120166B1 (en) | Generation of a firmware configured for use in restricting the use of a firmware tool | |
CN113253978A (zh) | 嵌入式软件开发方法、模型、电子设备和介质 | |
US10318459B2 (en) | Peripheral device server access | |
US10628309B1 (en) | Loading a serial presence detect table according to jumper settings | |
CN115080242A (zh) | 一种pci设备资源统一调度的方法、装置及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 523808 19th Floor, Cloud Computing Center, Chinese Academy of Sciences, No. 1 Kehui Road, Songshan Lake Hi-tech Industrial Development Zone, Dongguan City, Guangdong Province Patentee after: G-Cloud Technology Co., Ltd. Address before: 523808 No. 14 Building, Songke Garden, Songshan Lake Science and Technology Industrial Park, Dongguan City, Guangdong Province Patentee before: G-Cloud Technology Co., Ltd. |