spice在桌面虚拟化中的应用系列之一(spice简介,性能优化等)
1.spice介紹
1.1 spice簡介
spice是由Qumranet開發(fā)的開源網(wǎng)絡(luò)協(xié)議,2008年紅帽收購了Qumranet獲得了這個協(xié)議。SPICE是紅帽在虛擬化領(lǐng)域除了KVM的又一“新興技術(shù)”,它提供與虛擬桌面設(shè)備的遠(yuǎn)程交互實現(xiàn),主要應(yīng)用在桌面虛擬化,支持圖像,2D傳輸,720P視頻播放
目前,spice主要目標(biāo)是為qemu虛擬機提供高質(zhì)量的遠(yuǎn)程桌面訪問,它致力于克服傳統(tǒng)虛擬桌面的一些弊端,并且強調(diào)用戶體驗
spice包含有3個組件:
SPICE Driver:SPICE驅(qū)動器 存在于每個虛擬桌面內(nèi)的組件
SPICE server:SPICE服務(wù)器 存在于紅帽企業(yè)虛擬化Hypervisor內(nèi)的組件
SPICE Client: SPICE客戶端 存在于終端設(shè)備上的組件,可以是瘦客戶機或?qū)S玫腜C,用于接入每個虛擬桌面。
這三個組件協(xié)作運行,確定處理圖形的最高效位置,以能夠最大程度改善用戶體驗并降低系統(tǒng)負(fù)荷。如果客戶機足夠強大,SPICE向客戶機發(fā)送圖形命令,并在客戶機中對圖形進行處理,顯著減輕服務(wù)器的負(fù)荷。另一方面,如果客戶機不夠強大,SPICE在主機處理圖形,從CPU的角度講,圖形處理并不需要太多費用
以上簡介參考http://os.51cto.com/art/201201/311464.htm
1.2 spice架構(gòu)
Spice agent運行在客戶機(虛擬機)操作系統(tǒng)中。Spice server和Spice client利用spice agent來執(zhí)行一些需要在虛擬機里執(zhí)行的任務(wù),如配置分辨率,另外還有通過剪貼板來拷貝文件等。從上圖可以看出,Spice client與server與Spice Agent的通信需要借助一些其他的軟件模塊,如在客戶機里面,Spice Agent需要通過VDIPort Driver與主機上 QEMU的VDIPort Device進行交互,他們的交互通過一種叫做輸入/輸出的環(huán)進行。Spice Client和Server產(chǎn)生的消息被寫入到設(shè)備的輸出環(huán)中,由VDI Port Driver讀取;而Spice Agent發(fā)出的消息則通過VDI Port Driver先寫入到VDI Port Device輸入環(huán)中,被QEMU讀入到Spice server的緩沖區(qū)中,然后再根據(jù)消息決定由Spice Server直接處理,還是被發(fā)往Spice Client中
以上參考http://blog.csdn.net/hbsong75/article/details/9465683
1.3 spice的不足
spice目標(biāo)是提供一個高性能,高用戶體驗的遠(yuǎn)程桌面連接,就像本地桌面一樣展現(xiàn)給用戶. 其目前實現(xiàn)的功能有usb重定向,音視頻傳輸,剪貼板,鼠標(biāo)同步,2D圖形支持,任意調(diào)整分辨率(qxl驅(qū)動)等
spice目前不支持虛擬機中的3D效果,對于windows7系統(tǒng)虛擬機,其aero桌面特效也無法啟用,因為spice使用遠(yuǎn)程連接,所以其高度依賴網(wǎng)絡(luò),如果網(wǎng)絡(luò)環(huán)境不好,使用起來將會是一間很痛苦的事情
2 spice服務(wù)器端安裝配置
2.1 系統(tǒng)準(zhǔn)備
系統(tǒng)版本
RHEL6
IP:192.168.11.166
安裝KVM軟件
#安裝kvm/qemu工具,以及virt-manager,libvirtd yum install qemu-kvm qemu-kvm-tools virt-manager libvirt libvirt-devel libvirt-client virt-manager virt-viewer
系統(tǒng)環(huán)境檢查
運行命令 lsmod | grep kvm 檢查 KVM 模塊是否成功安裝。如果有輸出結(jié)果,那么 KVM 模塊已成功安裝
需要服務(wù)器硬件支持虛擬化技術(shù)(Intel VT-d,AMD-V)。可以使用如下命令檢查,有輸出信息表示支持
egrep "(vmx|svm)" --color /proc/cpuinfo
2.2 服務(wù)器上安裝spice-server
yum -y install spice-protocol spice-server xorg-x11-drv-qxl spice-glib
2.3 客戶端安裝spice client
centos客戶端安裝virt-viewer
yum -y install virt-viewer
windows7客戶端安裝virt-viewer
下載鏈接:http://virt-manager.org/download/sources/virt-viewer/virt-viewer-x64-1.0.msi
2.4 新建centos6.4虛擬機
關(guān)于virt-manager工具
virt-manager是一個圖形化的虛擬機管理工具,它可以方便地創(chuàng)建虛擬機,修改虛擬機配置,添加新設(shè)備等. 但是由于其是圖形界面管理,所以效率不是很高,而且對網(wǎng)絡(luò)也有要求. libvirt提供了一個xml文件用來定義虛擬機的配置細(xì)節(jié),并且可以通過virsh命令對虛擬機進行管理
編寫一個虛擬機的xml文件
如下是一個centos6.4桌面版的xml文件,默認(rèn)配置
<domain type='kvm'>
<name>cdesk1</name>
<uuid>56f6c45d-aa4d-8b23-85d9-87500199f089</uuid>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64' machine='rhel6.5.0'>hvm</type>
<boot dev='hd'/>
<bootmenu enable='yes'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/data_lij/vhosts/cdesk1.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<interface type='network'>
<mac address='52:54:00:92:32:a9'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</memballoon>
</devices>
</domain>
通過xml文件啟動虛擬機
#加入virsh管理 virsh define cdesk1.xml #啟動虛擬機 virsh start cdesk1 #查看端口 netstat -ntpl | grep qemu
查看進程
[root@controller2 qemu]# ps -ef | grep qemu qemu 21866 1 10 19:26 ? 00:00:00 /usr/libexec/qemu-kvm -name cdesk1 -S -M rhel6.5.0 -enable-kvm -m 2048 -realtime mlock=off -smp 2,sockets=2,cores=1,threads=1 -uuid 56f6c45d-aa4d-8b23-85d9-87500199f089 -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/cdesk1.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -boot order=c,menu=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/data_lij/vhosts/cdesk1.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0 -netdev tap,fd=25,id=hostnet0,vhost=on,vhostfd=26 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:92:32:a9,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 0.0.0.0:0 -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
默認(rèn)情況下,qemu使用vnc建立遠(yuǎn)程連接,監(jiān)聽地址為0.0.0.0,其端口為自動分配(xml文件中定義graphics type='vnc' port='-1', -1表示端口自動分配5900+N)
客戶端使用TightVNC工具遠(yuǎn)程連接
3 啟用spice進行遠(yuǎn)程連接
3.1 修改xml文件,使用spice進行遠(yuǎn)程連接
首先virsh命令關(guān)閉虛擬機
<!-- 添加 -->
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<alias name='channel0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<!-- 修改 -->
<graphics type='spice' port='5902' tlsPort='5903' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='qxl' ram='65536' vram='65536' heads='1'/>
<alias name='video0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
3.2 修改xml文件支持音頻傳輸
<sound model='ich6'> <alias name='sound0'/> </sound>
Linux下model='ich6',windows下model='ac97'
3.3 使用windows7客戶端遠(yuǎn)程連接
首先啟動虛擬機
virsh start cdesk1
使用virt-viewer工具,其支持vnc和spice兩種協(xié)議,所以這里需要指定使用spice
3.4 使用virt-manager圖形工具配置spice
以上步驟3.1-3.3中是修改xml文件配置spice連接的,也可以使用virt-manager圖形界面操作
首先關(guān)閉虛擬機
服務(wù)器上運行virt-manager命令,打開圖形界面(需要開啟服務(wù)器上的X11轉(zhuǎn)發(fā))
如下圖Display中更改Type為spice
video中更改Model為qxl,修改完成之后,啟動虛擬機
4 提高虛擬機性能(鼠標(biāo)同步,共享剪貼板,音視頻傳輸?shù)?
我們在客戶端使用spice client遠(yuǎn)程連接虛擬機,如果想要虛擬機中播放的音視頻傳輸?shù)奖镜乜蛻舳?或者在虛擬機和客戶機之間共享剪貼板,則需要在虛擬機中安裝相應(yīng)增強工具,對于windows系統(tǒng)和Linux系統(tǒng),需要安裝的增強工具不太一樣
4.1 windows虛擬機配置
windows虛擬機需要安裝增強工具spice-guest-tools(類似vmware中的vmtool工具)
下載地址:http://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-0.74.exe
這個軟件包包含了一個qxl視頻卡驅(qū)動,還包括SPICE guest agent,可以實現(xiàn)同步剪貼板,鼠標(biāo),任意調(diào)整虛擬機分辨率等功能
4.2 Linux虛擬機配置
centos gnome桌面版虛擬機,需要安裝以下軟件包
yum install xorg-x11-drv-qxl spice-vdagent #設(shè)置開機啟動 /etc/init.d/spice-vdagentd start chkconfig spice-vdagentd on
修改xml文件實現(xiàn)音視頻傳輸
前面是通過在虛擬機xml文件中添加sound標(biāo)簽,實現(xiàn)虛擬機和客戶機的音視頻傳輸,也可以使用virt-manager工具
用virt-manager工具添加音頻設(shè)備
選擇Sound的Model(ac97或者ich6)
以上介紹了spice的安裝和配置,以及簡單連接,其它spice的功能將在其它文章中介紹
總結(jié)
以上是生活随笔為你收集整理的spice在桌面虚拟化中的应用系列之一(spice简介,性能优化等)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]Jetson TX1 开发教程(1
- 下一篇: 微信支付:手机系统自带的浏览器,调用微信