Jump to: navigation, search

Difference between revisions of "Main Page/cobbler"

 
(31 intermediate revisions by the same user not shown)
Line 1: Line 1:
..
+
其他功能
This work is licensed under a Creative Commons Attribution 3.0 Unported
+
1、使用远程桌面软件直接连接虚拟机
License.
+
(1)设置虚拟机远程连接协议
 +
模板页面->选择模板编辑->图像下拉框选择连接方式,vnc协议或者spice协议
 +
(2)登录服务器,使用virsh dumpxml 虚拟机id查看远程连接的ip地址和端口
 +
(3)使用远程桌面软件,输入虚拟机的远程协议ip地址和端口,即可远程连接虚拟机
 +
远程桌面软件地址请参见xxx
  
http://creativecommons.org/licenses/by/3.0/legalcode
 
  
====================================================
+
D:\git\kimchi-openstack\kimchi-openstack\src\kimchi\osinfo.py:43
Support passthrough of USB device
+
'modern_update': dict(common_spec, disk_bus='scsi',
====================================================
+
                                        nic_model='virtio',
 +
                              sound_model='ich6')
  
We provide VDI(Virtual Desktop) and server virtualization solutions for customers,
+
if distro in modern_version_bases[arch]:
our customers have strong requirements for using USB devices.
+
        if LooseVersion(version) >= LooseVersion(
 +
                modern_version_bases[arch][distro]):
 +
            if arch == 'x86':
 +
                params.update(template_specs[arch]['modern_update'])
 +
            else:
 +
                params.update(template_specs[arch]['modern'])
 +
        else:
 +
            params.update(template_specs[arch]['old'])
  
The typical use cases and our solutions are described as below:
+
                                'window': '0'},
1.In VDI solution, customers want to use local USB printers or USB scanners with
 
TC(Thin-Client), because remote desktop protocol like ICA have already support
 
USB-redirection, so customers only need to attach USB device to TC, the protocol
 
can map USB device to VM.
 
 
 
2. In virtualization solution, when starting or restarting some business-critical
 
applications, a connected USB-KEY is needed for authentication, some applications
 
even need a daily authentication by USB-KEY. we suggest the following solutions:
 
(1) Using physical 'USB-HUB' box and technology of USB-redirection over TCP/IP.
 
Customers need to buy USB-HUB and install software in guest os, the software helps
 
redirecting USB device to VM.
 
 
 
(2) Using USB-Passthrough functions provided by our virtualization software.
 
The end users(normally application or system administrators) insert USB devices
 
to host that containing the VM, then  can see USB device list in portal and choose
 
USB device to attach.
 
 
 
This solution has advantages that
 
 
 
1. It doesn't need additional physical devices.
 
 
 
2. It doesn't need a special server to run spice client for USB-Redirection.
 
 
 
3. Business-critical applications commonly need stable and long-standing USB-KEY
 
to attach, USB-Passthrough maybe more stable than USB-Redirection over TCP/IP or
 
remote desktop protocol.
 
 
 
As described above, I think USB-Passthrough is valuable in Openstack.
 
 
 
This BP is focus on how to provide USB-Passthrough function in Openstack.
 
 
 
 
 
Problem description
 
===================
 
 
 
Use cases:
 
 
 
In private cloud, a end user wants to create a VM to run ERP software which needs
 
a USB-KEY for authentication, he proposes request to system administrator, they
 
perform the following steps:
 
 
 
1. The administrator goes to the machine room and chooses a host to insert USB-KEY
 
to.
 
 
 
2. The administrator adds some configuration(like white-list with USB-KEY's product
 
and vendor information) to nova-compute, restart nova-compute to trigger it to
 
discovery new devices and save them to DB.
 
 
 
3. The administrator queries USB-KEY information from API or portal
 
 
 
4. The administrator creates a flavor with USB-KEY information queried by above.
 
 
 
5. The end user creates a VM with above flavor, the system chooses the host which
 
contains the USB-KEY to run VM and attach USB-KEY to it.
 
 
 
Proposed change
 
===============
 
 
 
The idea of how to implement this function can reference to pci-passthrough.
 
 
 
We should add the following functions to nova:
 
 
 
1. Nova should support to auto-discover usb devices and save them in DB.
 
 
 
2. Nova should support to create a flavor which contains usb device information.
 
 
 
3. Nova should support to create VM with a flavor which contains usb device
 
information.
 
 
 
Alternatives
 
------------
 
 
 
None
 
 
 
Data model impact
 
-----------------
 
 
 
The idea of how to implement this function can reference to pci-passthrough.
 
 
 
1. In libvirt driver layer, add function to discover USB devices. A white-list
 
maybe needed here to filter proper devices.
 
 
 
2. In DB layer, (1) add a new table 'usb_devices' to store USB device information.
 
(2) add a key-value pair to instance_system_metadata table to store USB device
 
information which have been assigned to the VM.
 
 
 
3. In scheduler layer, add a filter to find host which contains the usb devices.
 
 
 
4. The schema of flavor which contains USB device information may like this:
 
{"usb_devices":[{"id": 5}]}
 
 
 
 
 
REST API impact
 
---------------
 
 
 
None
 
 
 
Security impact
 
---------------
 
 
 
None
 
 
 
Notifications impact
 
--------------------
 
 
 
None
 
 
 
Other end user impact
 
---------------------
 
 
 
This new function may have some impacts to other exist functions, I recognise the
 
followings by now:
 
 
 
1. A VM with USB device doesn't support to do migration(live-migration, with shared
 
storage or not).
 
 
 
2. It maybe necessary for the user of USB device to pop-up USB device in guest os
 
before detach it from VM. The hazard of not pop-up USB device is just as detach
 
a USB device from physical server.
 
 
 
3. It maybe necessary to detach USB device before snapshot a VM and then attach USB
 
device after that.
 
 
 
4. The physical information of USB device like bus id, device id maybe changed every
 
time the host been restarted. If this problem happens, the user need to detach the
 
old invalid USB device and re-attach the USB device by the new bus id, device id.
 
 
 
5. When delete a VM with USB device, the USB device should be detached and the USB
 
device usage information should be updated.
 
 
 
6. We plan to provide this function in KVM/libvirt environment but not support it
 
in xen.
 
 
 
 
 
Performance Impact
 
------------------
 
 
 
None
 
 
 
 
 
Other deployer impact
 
---------------------
 
 
 
None
 
 
 
 
 
Developer impact
 
----------------
 
 
 
How to distinguish USB devices is important because user wants to specify
 
which USB device to which VM. I think this function can reference to idea of
 
pci-passthrough.
 
 
 
1. The key information of USB device which are supported by libvirt by now are
 
vendor id, product id, bus and device. Bellow is a example:
 
 
 
<hostdev mode='subsystem' type='usb'>
 
<source>
 
<vendor id='0x136b'/>
 
<product id='0x0003'/>
 
<address bus='2' device='3'/>
 
</source>
 
</hostdev>
 
 
 
Different USB devices may have the same vendor id and product id, so they are not
 
appropriate.
 
 
 
The bus+device maybe a good choice to distinguish USB devices, but device id may
 
change every time the host restart.
 
 
 
The physical controller 'port id' which USB device attach to maybe the best choice,
 
but libvirt doesn't support it by now.
 
 
 
So I think bus+device maybe the best choice by now.
 
 
 
2. Add a white-list to nova.conf for nova-compute to discovery USB device. The
 
schema may like:
 
usb_passthrough_whitelist =  [{"bus": "2", "device": "2"}]
 
 
 
Implementation
 
==============
 
 
 
Assignee(s)
 
-----------
 
 
 
Primary assignee:
 
  <Jing Yuan>
 
 
 
 
 
Work Items
 
----------
 
Step 1: Implement function of discover usb device in libvirt driver.
 
 
 
Step 2: Implement function of periodically update USB device information from
 
nova-compute to DB.
 
 
 
Step 3: Implement function of create VM with USB device.
 
 
 
Step 4: Make changes to other functions which are affected by this new function.
 
 
 
Dependencies
 
============
 
 
 
None
 
 
 
 
 
Testing
 
=======
 
 
 
It is necessary to add tempest for this new function.
 
 
 
 
 
Documentation Impact
 
====================
 
 
 
It is necessary to add doc for how to use this new function.
 
 
 
 
 
References
 
==========
 
 
 
None
 
 
 
yuanjing
 
..
 
This work is licensed under a Creative Commons Attribution 3.0 Unported
 
License.
 
 
 
http://creativecommons.org/licenses/by/3.0/legalcode
 
 
 
====================================================
 
Add support for USB controller
 
====================================================
 
 
 
Users have requirement of using USB devices, the detailed information can reference
 
the bp of https://blueprints.launchpad.net/nova/+spec/usb-passthrough.
 
 
 
If not specify appropriate type of USB controller for USB device, USB device will
 
use the default piix3-usb-uhci, the default USB device's speed may mismatch with
 
USB device. This result in the following problems.
 
 
 
1. The low speed of USB device.
 
 
 
2. If use spice client to redirect USB device to VM, the mismatched speed may prevent
 
the connection.
 
 
 
As described above, I think specify USB controller for USB-passthrough is valuable
 
in Openstack.
 
 
 
 
 
Problem description
 
===================
 
 
 
Use cases:
 
 
 
1. The administrator creates a VM with flavor which contains USB device information
 
and USB controller information.
 
 
 
2. The system creates VM with USB controller specified in flavor above, it also
 
attach USB device to the created USB controller but not the default piix3-usb-uhci.
 
 
 
 
 
Proposed change
 
===============
 
 
 
We should add the following functions to nova:
 
1. When create flavor with USB device, specify the USB controller type for USB
 
device.
 
 
 
2. Nova should support to attach USB device to specified USB controller when create
 
VM.
 
 
 
Alternatives
 
------------
 
 
 
None
 
 
 
Data model impact
 
-----------------
 
 
 
1. The schema of flavor which contains USB device information and USB controller
 
information may like this:
 
{"usb_devices":[{"id": 5, "usb_controller_type": "ehci"}]}
 
 
 
2. In libvirt driver layer, add function to specify USB controller for USB device.
 
Bellow is a example:
 
 
 
<hostdev mode='subsystem' type='usb'>
 
<source>
 
<address bus='2' device='3'/>
 
</source>
 
<address type='usb' bus='1' port='2'/>
 
</hostdev>
 
 
 
System should select not duplicate port for USB device to attach.
 
 
 
3. In DB layer, add USB controller type parameter to USB device information which
 
have been assigned to the VM.
 
 
 
 
 
REST API impact
 
---------------
 
 
 
NULL
 
 
 
Security impact
 
---------------
 
 
 
None
 
 
 
Notifications impact
 
--------------------
 
 
 
None
 
 
 
Other end user impact
 
---------------------
 
 
 
None
 
 
 
Performance Impact
 
------------------
 
 
 
None
 
 
 
Other deployer impact
 
---------------------
 
 
 
None
 
 
 
Developer impact
 
----------------
 
 
 
None
 
 
 
Implementation
 
==============
 
 
 
Assignee(s)
 
-----------
 
 
 
Primary assignee:
 
  <Jing Yuan>
 
 
 
 
 
Work Items
 
----------
 
Step 1: Add USB controller type to USB device data model in libvirt driver.
 
 
 
Step 2: Implement function of choose USB controller port for USB device.
 
 
 
Dependencies
 
============
 
 
 
NULL
 
 
 
 
 
Testing
 
=======
 
 
 
It is necessary to add tempest for this new function.
 
 
 
Documentation Impact
 
====================
 
 
 
It is necessary to add doc for how to use this new function.
 
 
 
 
 
References
 
==========
 
 
 
https://blueprints.launchpad.net/nova/+spec/usb-passthrough
 
 
 
https://blueprints.launchpad.net/nova/+spec/usb-passthrough
 
 
 
yuanjing
 
..
 
This work is licensed under a Creative Commons Attribution 3.0 Unported
 
License.
 
 
 
http://creativecommons.org/licenses/by/3.0/legalcode
 
 
 
====================================================
 
Add support for USB controller
 
====================================================
 
 
 
Users have requirement of using USB devices, the detailed information can reference
 
the bp of https://blueprints.launchpad.net/nova/+spec/usb-passthrough.
 
 
 
If not specify appropriate type of USB controller for USB device, USB device will
 
use the default piix3-usb-uhci, the default USB controller's speed may mismatch
 
with USB device. This result in the following problems.
 
 
 
1. The low speed of USB device.
 
 
 
2. If use spice client to redirect USB device to VM, the mismatched speed may prevent
 
the connection.
 
 
 
As described above, I think USB controller is valuable in Openstack.
 
 
 
 
 
Problem description
 
===================
 
 
 
Use cases:
 
 
 
1. The administrator creates a flavor with USB controller information, the key
 
parameter is type like ehci.
 
 
 
2. The administrator creates a VM with flavor created above, the system creates
 
USB controller for the VM.
 
 
 
 
 
Proposed change
 
===============
 
 
 
We should add the following functions to nova:
 
1. When create flavor, specify a key-value for USB controller, the schema may like:
 
{"usb_controllers":[{"type":"ehci"}]}
 
 
 
2. Nova should support to create USB controller in libvirt driver when create
 
VM.
 
 
 
Alternatives
 
------------
 
 
 
None
 
 
 
Data model impact
 
-----------------
 
 
 
We should add USB controller data model in libvirt driver for constructing USB
 
controller xml when create VM.
 
 
 
 
 
REST API impact
 
---------------
 
 
 
None
 
 
 
Security impact
 
---------------
 
 
 
None
 
 
 
Notifications impact
 
--------------------
 
 
 
None
 
 
 
Other end user impact
 
---------------------
 
 
 
None
 
 
 
Performance Impact
 
------------------
 
 
 
None
 
 
 
Other deployer impact
 
---------------------
 
 
 
None
 
 
 
Developer impact
 
----------------
 
 
 
None
 
 
 
Implementation
 
==============
 
 
 
Assignee(s)
 
-----------
 
 
 
Primary assignee:
 
  <Jing Yuan>
 
 
 
 
 
Work Items
 
----------
 
Step 1: Implement function of construct USB controller xml in libvirt driver.
 
 
 
Step 2: Implement function of create USB controller when create VM.
 
 
 
Dependencies
 
============
 
 
 
None
 
 
 
 
 
Testing
 
=======
 
 
 
It is necessary to add tempest for this new function.
 
 
 
 
 
Documentation Impact
 
====================
 
 
 
None
 
 
 
 
 
References
 
==========
 
 
 
https://blueprints.launchpad.net/nova/+spec/usb-passthrough
 

Latest revision as of 11:18, 21 October 2014

其他功能 1、使用远程桌面软件直接连接虚拟机 (1)设置虚拟机远程连接协议 模板页面->选择模板编辑->图像下拉框选择连接方式,vnc协议或者spice协议 (2)登录服务器,使用virsh dumpxml 虚拟机id查看远程连接的ip地址和端口 (3)使用远程桌面软件,输入虚拟机的远程协议ip地址和端口,即可远程连接虚拟机 远程桌面软件地址请参见xxx


D:\git\kimchi-openstack\kimchi-openstack\src\kimchi\osinfo.py:43 'modern_update': dict(common_spec, disk_bus='scsi',

                                        nic_model='virtio',
                             sound_model='ich6')

if distro in modern_version_bases[arch]:

       if LooseVersion(version) >= LooseVersion(
               modern_version_bases[arch][distro]):
           if arch == 'x86':
               params.update(template_specs[arch]['modern_update'])
           else:
               params.update(template_specs[arch]['modern'])
       else:
           params.update(template_specs[arch]['old'])
                               'window': '0'},