1. 程式人生 > >debian虛擬機器安裝kvm虛擬機器

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等函式庫和相應的命令列工具。