使用libvirt管理kvm(virsh篇)
? 一、簡介
libvirt是Linux上的虛擬化庫,是長期穩定的C語言API,支持KVM/QEMU、Xen、LXC等主流虛擬化方案。鏈接:http://libvirt.org/
virsh是libvirt對應的shell命令。
二、環境介紹
OS:Ubuntu 12.04.1 LTS
內核:Linux 3.2.0-33-generic-pae #52-Ubuntu SMP Thu Oct 18 16:39:21 UTC 2012 i686 i686 i386 GNU/Linux
libvirt:0.9.8
三、準備工作
ubuntu安裝,直接apt-get install
1、安裝kvm/qemu
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
5、vnc 虛擬機查看工具
sudo apt-get install vncviewer vnc4server
四、創建鏡像
在指定目錄下
執行 ?qemu-img create -f raw template.img 3G
這樣就創建了一個大小為3G的鏡像(img)
有人可能問鏡像是什么東西。簡單的說,我們在鏡像上啟動一個虛擬機,這個3G的鏡像就相當于這個虛擬機對應的磁盤空間。
也有人執行 qemu-img create -f qcow2 template.img 3G,(備注:qcow2支持動態擴張)來獲得一個動態擴張的鏡像。我沒有用這個。不同情景下可能這種模式更好,有興趣的朋友自己試一下。
五、libvirt xml配置文件
libvirt(包括virsh)使用xml文件對虛擬機進行配置,其中包括虛擬機名稱、分配內存、vcpu等多種信息。定義、創建虛擬機等操作都需要xml配置文件的參與,因此這里先介紹xml配置文件。我編輯了一個名為template.xml的xml文件,其中定義了一個名為demo的kvm 虛擬機。
<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>六、查看虛擬機列表
查看本機默認(kvm)連接的虛擬機:virsh list 。出現如下列信息:
$ virsh list Id 名稱 ? ? ? ? ? ? ? 狀態 ---------------------------------- |
$ virsh list Id 名稱 ? ? ? ? ? ? ? 狀態 ---------------------------------- 1 demo ? ? ? ? ? ? ? ? running |
七、定義、啟動、創建虛擬機
這里以上述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 |
八、通過vnc查看虛擬機
前面都沒有直觀感受,我們可能需要進入虛擬機內部進行操作。
1、查看vnc端口
$ virsh vncdisplay demo :0 |
2、通過vnc查看虛擬機內部
$ vncviewer 127.0.0.1:0 |
效果如下:
備注:這個鏡像是我之前創建好的鏡像,所以已經安裝好了操作系統。如果你從頭建了一個新的鏡像,就需要在虛擬機內安裝操作系統(操作就像在物理機上安裝os一樣)。
九、關閉、銷毀、取消定義虛擬機
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。
轉載于:https://blog.51cto.com/speakingbaicai/1161964
總結
以上是生活随笔為你收集整理的使用libvirt管理kvm(virsh篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转码网址
- 下一篇: 安装vsftpd-3.0.2.tar.g