debian虛擬機器安裝kvm虛擬機器
一、概念介紹
1、libvirt是Linux上的虛擬化庫,是長期穩定的C語言API,支援KVM/QEMU、Xen、LXC等主流虛擬化方案。virsh是libvirt對應的shell命令。
2、kvm,即Kernel-basedVirtual Machine的簡稱,是一個開源的系統虛擬化模組,自Linux 2.6.20之後整合在Linux的各個主要發行版本中。它使用Linux自身的排程器進行管理,所以相對於Xen,其核心原始碼很少。KVM目前已成為學術界的主流VMM之一。KVM的虛擬化需要硬體支援(如Intel VT技術或者AMD V技術)。是基於硬體的完全虛擬化。而Xen早期則是基於軟體模擬的Para-Virtualization。
3、vnc既遠端訪問軟體,用於訪問建立好的虛擬機器。
二、配置環境
1、linux debian8.8
2、安裝kvm/qemu
$ apt-get install kvm qemu
3、安裝libvirt
$ apt-get install libvirt-bin libvirt-dev
4、網橋管理工具
$ apt-get install bridge-utils
5、安裝vnc viewer
安裝vnc viewer(有win/linux/android)版本,本人是安裝在windows下的。
6、檢視是否支援虛擬化
$egrep 'vmx|svm' --color /proc/cpuinfo
KVM 是基於 x86 虛擬化擴充套件(Intel VT 或者 AMD-V) 技術的虛擬機器軟體,所以檢視 CPU 是否支援 VT 技術,就可以判斷是否支援KVM。有返回結果,如果結果中有vmx(Intel)或svm(AMD)字樣,就說明CPU的支援的。
7、載入kvm 核心
$modprobe kvm
$modprobe kvm-intel
$lsmod | grep kvm#檢視核心
三、建立虛擬機器
1、找1個合適的winxp安裝映象(iso)
為何這一步單獨拿出講, 是有原因的。
kvm 的虛擬硬碟的模式是virtio,virtio的效能和穩定性上佳, 但是windows安裝盤是找不到virtio模式的虛擬硬碟的, 必須要在安裝前先載入virtio的磁碟驅動。
網上也有載入驅動的教程,但是相對麻煩,建議直接下載整合了virtio驅動的windows安裝映象。
2、準備虛擬硬碟檔案。
$qemu-img create -f raw /data/my_kvm.raw10G
3、配置虛擬網絡卡
這裡本人的br_eth0資訊如下:
HWaddr 20:25:64:80:61:94
inet addr:10.12.13.20
Bcast:10.12.255.255
Mask:255.255.0.0
4、準備和編寫1個虛擬機器配置檔案。(備份,以後可以重用/遷移)
1) 虛擬機器cpu數量(非必要,預設是2)
2) 虛擬機器記憶體大小(非必要,預設是2G)
3) 虛擬硬碟檔案位置。
4) winxp安裝映象的位置。
5) 虛擬網路例項的名字( 非必要, /etc/network/interfaces 裡新加的br0 如果你用了別的名字的話)
6) vnc 埠(預設5900,除非你這個埠被佔用否則不要改
下面定義一個my_kvm.xml用於配置虛擬機器:
<domaintype='kvm'> //如果是Xen,則type=‘xen’
<name>my_kvm</name> //虛擬機器名稱,同一物理機唯一
<uuid>fd3535db-2558-43e9-b067-314f48211343</uuid> //同一物理機唯一,可用uuidgen生成
<memory>2048000</memory>
<currentMemory>2048000</currentMemory> //memory這兩個值最好設成一樣
<vcpu>2</vcpu> //虛擬機器可使用的cpu個數,檢視物理機可用CPU個數:cat /proc/cpuinfo |grep processor | wc-l
<os>
<type arch='x86_64' machine='pc-1.3'>hvm</type>//arch指出系統架構型別,machine 則是機器型別,檢視機器型別:qemu-system-x86_64 -M ?
<boot dev='cdrom'/> //啟動介質,第一次需要裝系統可以選擇cdrom光碟啟動
<bootmenu enable='yes'/> //表示啟動按F12進入啟動選單
</os>
<features>
<acpi/> //Advanced Configuration and Power Interface,高階配置與電源介面
<apic/> //Advanced Programmable Interrupt Controller,高階可程式設計中斷控制器
<pae/> //Physical Address Extension,實體地址擴充套件
</features>
<clock offset='localtime'/> //虛擬機器時鐘設定,這裡表示本地本機時間
<on_poweroff>destroy</on_poweroff> //突發事件動作
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices> //裝置配置/
<emulator>/usr/bin/kvm</emulator> //如果是Xen則是/usr/lib/xen/binqemu-dm
<disk type='file' device='disk'> //硬碟
<driver name='qemu' type='raw'/>
<source file='/data/my_kvm.raw'/>
<target dev='hda' bus='ide'/> // if windows must ide else virtio
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/data/iso/win_xp.iso'/>
<target dev='hdc' bus='ide'/>
<readonly/>
</disk>
/* 利用Linux網橋連線網路 */
<interface type='bridge'>
<sourcebridge="br_eth0"/>//配置的網橋網絡卡名稱
<macaddress="52:54:42:73:b7:94"/>
<model type="rtl8139"/>
</interface>
<graphics type='vnc' port='-1'autoport='yes'> //配置vnc,windows下可以使用vncviewer登入,獲取vnc埠號:virsh dumpxml my_kvm | grep “vnc”
<listen type='address'address='0.0.0.0'/>
</graphics>
</devices>
</domain>
5、基於這個配置檔案建立1個虛擬機器
1)建立虛擬機器
$virsh create my_kvm.xml
2)檢視是否執行
$virsh list
6、安裝winxp到虛擬機器
在vnc viewer輸入網址+埠開啟,這時你已經見到winxp的安裝介面了。之後安裝也就是幾個下一步的事情,安裝完成後,設定ip,這裡要與宿主機設定在同一個網段,這樣就可以通過橋接訪問外網,
7、維護這個虛擬機器.(start/shutdown/update..)
馬上檢查ip是否同一網段, 如果是, 則開啟遠端桌面服務。以後就可以通過遠端桌面訪問了, 丟下不好用的vnc viewer。
四、製作模板
模板虛擬機器安裝好之後,停止該虛擬機器,複製製作過程如下:(以本人second.xml為例)
下面的目錄都是根據個人習慣,使用者也可以根據自己的習慣設計目錄結構。
1、新建/data/xml目錄下second.xml:
<domaintype='kvm'>
<name>second</name>
<uuid>fd3535db-2558-43e9-b067-314f48311345</uuid>//uuid要做相應的修改 <memory>2048000</memory>
<currentMemory>2048000</currentMemory>
<vcpu>2</vcpu>
<os>
<type arch='x86_64'machine='pc-1.3'>hvm</type>
<boot dev='cdrom'/>
<bootmenuenable='yes'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/data/moudles/my_kvm.qcow2'/>
<target dev='hda' bus='ide'/>
</disk>
<interfacetype='bridge'>
<sourcebridge="br_eth0"/>
<mac address="52:54:42:73:b7:96"/>
<model type="rtl8139"/>
</interface>
<graphics type='vnc' port='-1'autoport='yes'>
<listen type='address'address='0.0.0.0'/>
</graphics>
</devices>
</domain>
2、複製映象檔案,再存放做好的映象的目錄下,本人的是data,克隆映象,克隆出來的檔案非常小隻有幾MB,這裡為了管理方便,將映象和xml配置檔案分開存放。在這裡已經制作出了新的模板my_kvm.raw,拷貝到/data/modules下:
cp my_kvm.raw moudles/my_kvm.img
進入/data/moudles目錄下,製作模板快照(注意:這裡製作映象需要qcow2格式):
qemu-img create -f qcow2 my_kvm.qcow2-o backing_file=my_kvm.img
3、建立虛擬機器
進入到/data/xml目錄下
virsh create second.xml
五、總結
通過此次kvm虛擬機器的建立工作,我瞭解到如何在linux安裝windows虛擬機器,而不是之前在windows Vmware中安裝linux虛擬機器的按鍵式操作。利用xml配置檔案簡化了kvm虛擬機器的建立,但是需要了解網路的配置、埠、mac地址等概念的實際運用。利用virsh操作虛擬機器更加方便快捷。
理論和實踐相結合,首先了解虛擬機器的原理,然後瞭解虛擬軟體,然後瞭解虛擬機器管理軟體,然後就更上層的虛擬機器排程;總的來說kvm和qemu就是虛擬軟體,負責建立和執行虛擬機器,但是卻不能很方便的管理多個虛擬機器的例項,為了更加方便的管理虛擬機器,所有出現了libvirt和virsh等函式庫和相應的命令列工具。