使用libvirt管理kvm(virsh篇)

  1、簡介shell

libvirtLinux上的虛擬化庫,是長期穩定的C語言API,支持KVM/QEMUXenLXC等主流虛擬化方案。連接:http://libvirt.org/ubuntu

virshlibvirt對應的shell命令。api

2、環境介紹網絡

OSUbuntu 12.04.1 LTSdom

內核:Linux 3.2.0-33-generic-pae #52-Ubuntu SMP Thu Oct 18 16:39:21 UTC 2012 i686 i686 i386 GNU/Linux ide

libvirt0.9.8工具

3、準備工做spa

ubuntu安裝,直接apt-get install操作系統

1、安裝kvm/qemurest

sudo apt-get install kvm qemu

2、安裝libvirt

sudo apt-get install libvirt-bin libvirt-dev

3、網橋管理工具

sudo apt-get install bridge-utils

4、統一建模語言

sudo apt-get install uml-utilities

5vnc 虛擬機查看工具

sudo apt-get install vncviewer vnc4server

4、建立鏡像

在指定目錄下

執行  qemu-img create -f raw template.img 3G

這樣就建立了一個大小爲3G的鏡像(img

有人可能問鏡像是什麼東西。簡單的說,咱們在鏡像上啓動一個虛擬機,這個3G的鏡像就至關於這個虛擬機對應的磁盤空間。

也有人執行 qemu-img create -f qcow2 template.img 3G,(備註:qcow2支持動態擴張)來得到一個動態擴張的鏡像。我沒有用這個。不一樣情景下可能這種模式更好,有興趣的朋友本身試一下。

5、libvirt xml配置文件

libvirt(包括virsh)使用xml文件對虛擬機進行配置,其中包括虛擬機名稱、分配內存、vcpu等多種信息。定義、建立虛擬機等操做都須要xml配置文件的參與,所以這裏先介紹xml配置文件。我編輯了一個名爲template.xmlxml文件,其中定義了一個名爲demokvm 虛擬機。

<domain type = 'kvm'>        //虛擬機類型,kvm
    <name>demo</name>        //虛擬機名稱
    <memory>1048576</memory> //分配內存,單位kb
    <vcpu>1</vcpu>           //分配vcpu,單位個數
    <os>
        <type arch = 'x86_64'machine = 'pc'>hvm</type>
        <boot dev = 'cdrom'/> //cd 啓動
        <boot dev = 'hd'/>    //硬盤啓動
    </os>
    <features>
        <acpi/>
        <apic/>
        <pae/>
    </features>
    <clock offset = 'localtime'/>
    <on_poweroff>destroy</on_poweroff>
    <on_reboot>restart</on_reboot>
    <on_crash>destroy</on_crash>
    <devices>
        <emulator>/usr/bin/kvm</emulator>
        <disk type = 'file' device = 'disk'>  //對應的鏡像,就是以前使用qemu-img命令新建的img文件,注意路徑要正確
            <driver name = 'qemu' type = 'raw'/>
            <source file = '/var/lib/lynn/img/template.img'/>
            <target dev = 'hda' bus = 'ide'/>
        </disk>
        <disk type = 'file' device = 'cdrom'> //可選項,iso一般是操做系統的安裝光盤
            <source file = '/var/lib/lynn/img/template.iso'/>
            <target dev = 'hdb' bus = 'ide'/>
        </disk>
        <interface type = 'bridge'>           //libvirt默認虛擬機的網絡配置是NAT模式,就是虛擬機與宿主機的網絡拓撲是NAT形式。實際中,許多開發者更但願使用網橋模式。
            <source bridge = 'br0'/>
        </interface>
        <input type ='tablet' bus='usb'/>
        <input type = 'mouse' bus = 'ps2'/>
        <graphics type = 'vnc' port = '-1' listen = '0.0.0.0' autoport = 'yes' keymap = 'en-us'/>    //vnc端口系統自動配置
    </devices>
</domain>

6、查看虛擬機列表

查看本機默認(kvm)鏈接的虛擬機:virsh list 。出現以下列信息:

$ virsh list

Id 名稱               狀態

----------------------------------


$ virsh list

Id 名稱               狀態

----------------------------------

1 demo                 running


7、定義、啓動、建立虛擬機

這裏以上述template.xml配置文件爲例

1、定義虛擬機

virsh define template.xml

備註:此時虛擬機只被定義了,並無真正啓動。所以此時執行virsh list沒有任何虛擬機信息

$ virsh list

Id 名稱               狀態

----------------------------------

2、啓動虛擬機

virsh start  demo

啓動了由template.xml定義的、名爲demo的虛擬機。此時執行virsh list出現以下信息:

$ virsh list

Id 名稱               狀態

----------------------------------

1 demo                 running

3、建立虛擬機

建立虛擬機的做用至關於定義虛擬機+啓動虛擬機

virsh create template.xml

此時執行virsh list,結果以下:

$ virsh list

Id 名稱               狀態

----------------------------------

1 demo                 running

8、經過vnc查看虛擬機

前面都沒有直觀感覺,咱們可能須要進入虛擬機內部進行操做。

1、查看vnc端口

$ virsh vncdisplay demo

:0



2、經過vnc查看虛擬機內部

$ vncviewer 127.0.0.1:0

效果以下:

123627120.png

備註:這個鏡像是我以前建立好的鏡像,因此已經安裝好了操做系統。若是你從頭建了一個新的鏡像,就須要在虛擬機內安裝操做系統(操做就像在物理機上安裝os同樣)。

9、關閉、銷燬、取消定義虛擬機

1、關閉虛擬機

virsh shutdown demo

虛擬機將慢慢關閉,就像平時咱們關閉計算機那樣。此步驟與virsh start demo對應

2、取消定義虛擬機

virsh undefine demo

libvirt取消demo的定義,系統沒法在辨識demo。此步驟與virsh define template.xml對應。

2、銷燬虛擬機

virsh destroy demo

libvirt直接銷燬demo,取消demo的定義。此步驟以後沒法在執行virsh undefine demo

相關文章
相關標籤/搜索