libvirt是基於xen、kvm等虛擬化技術之上的進一步操做封裝,經過他能夠快速調用kvm、xen命令快速建立、管理虛擬機。好比libvirt經過xml配置文件的方式記錄kvm建立虛擬機須要的參數,而後每次啓動虛擬機就只須要讀取這個xml的配置信息便可,不須要每次都輸入那麼多命令和參數。 他們的關係以下: centos
一、一樣先判斷機器是否支持虛擬化,而後加載內核模塊。api
二、安裝 qemu-kvm 、 libvirt(會自動安裝bridge-utils)網絡
yum install -y qemu-kvm libvirt
三、啓動libvritd守護進程dom
service libvirtd start
四、使用virsh有兩種方式ide
直接使用:virsh list --allrest
virsh 【回車】 進入交互界面code
virsh# list --allxml
五、編寫配置文件blog
注意:進程
一、裏面的磁盤鏡像和光盤鏡像千萬不要放在root下,要放在/目錄下
二、<os></os>這一行cdrom和hd沒有順序問題
三、vnc端口若是開啓自動獲取,設置爲yes和-1,若是想指定端口,就設置爲no和具體590X
其實libvirt它是藉助於qemu-kvm的功能,在她的基礎之上在進行操做封裝。同時,它把虛擬機的參數都記錄在一個配置文件中,複用這個配置配置文件。
<domain type="kvm"> <!--虛擬機名稱--> <name>kvm1</name> <!--最大內存,mb--> <memory unit="MiB">1024</memory> <!--可用內存,k--> <currentMemory unit="MiB">1024</currentMemory> <!--虛擬cpu個數--> <vcpu>2</vcpu> <!--啓動順序沒有關係--> <os> <type arch="x86_64">hvm</type> <!-- 硬盤啓動 --> <boot dev="hd" /> <!--光盤啓動--> <boot dev="cdrom" /> </os> <features> <acpi /> <apic /> <pae /> </features> <clock offset="localtime" /> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <!--配置磁盤鏡像和光盤鏡像,使用virtio模式,加快讀取速度--> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type="file" device="disk"> <driver name="qemu" type="qcow2" /> <!--目的鏡像>路徑--> <source file="/cloud/centos.qcow2" /> <target dev="vda" bus="virtio" /> </disk> <disk type="file" device="cdrom"> <!--光盤鏡像路徑 --> <source file="/cloud/CentOS-6.6-x86_64-minimal.iso" /> <target dev="hdb" bus="ide" /> </disk> <!--虛擬機網絡配置,綁定到什麼網橋上,就是什麼網絡,注意:同一網段,網卡不能同樣--> <!--綁定到virbr0,是nat。 這是第一塊網卡,對應eth0--> <interface type="bridge"> <!--指定虛擬機網卡mac地址,能夠不設置,自動分配--> <!-- <mac address='06:64:12:00:00:52'/> --> <!--當前主機網橋的名稱--> <source bridge="virbr0" /> <model type='virtio'/> </interface> <!--綁定到br0,是bridge。 這是第二塊網卡,對應eth1--> <interface type="bridge"> <!--指定虛擬機網卡mac地址,能夠不設置,自動分配--> <!-- <mac address='06:64:12:00:00:52'/> --> <!--當前主機網橋的名稱--> <source bridge="br0" /> <model type='virtio'/> </interface> <!--鼠標輸入設備--> <input type="mouse" bus="ps2" /> <!--vnc端口號自動分配,能夠經過virsh vncdisplay來查詢--> <graphics type="vnc" port="5901" autoport="no" listen="0.0.0.0" keymap="en-us" passwd='abcd'/> <!--vnc端口號自動分配,手動指定分配--> <!-- <graphics type="vnc" port="5901" autoport="no" listen="0.0.0.0" keymap="en-us" passwd='abcd'/> --> </devices> </domain>
一、定義虛擬機(指定配置文件,配置文件會被拷貝到libvirt的一個指定文件夾中)
virsh define /cloud/centos-base.xml
二、virsh 進行管理虛擬機
virsh list --all # 顯示全部虛擬機 --all顯示所有
三、啓動虛擬機
virsh start centos
四、關閉虛擬機
virsh shutdown centos
五、強制關機
virsh destroy centos
六、移除虛擬機
virsh undefine centos
七、顯示vnc端口
virsh vncdisplay centos
八、動態查詢kvm使用資源
top -d 1 | grep kvm
九、查詢kvm進程
ps -aux | grep kvm
十、開機自動啓動虛擬機
virsh autostart centos
十一、導出虛擬機centos的硬件配置信息爲/cloud/centos.bak.xml
virsh dumpxml centos > /cloud/centos.bak.xml
十二、編輯虛擬機配置(配置的是libvirt中的配置文件,而不是咱們編寫的那個)
virsh edit centos
1三、克隆KVM虛擬機
virt-clone -o Winxp -n winxpclong -f /home/kvm/winxpclong.img (-o 原始客體的名稱-n新客戶端的名稱-f做爲新客戶端磁盤映像的新文件)
一、 再也不須要brctl和tunctl來手動建立網橋、tap類型的網卡而後再關聯等等步驟,如今只須要使用virsh提供的iface-bridge、iface-unbridge等便可自動建立網橋、網卡,而且綁定到網橋上。最主要的是它會直接ifcfg-eth0和建立一個ifcfg-br0文件,這樣機器重啓後,仍是有效的。
二、一樣分紅三種網絡模式bridge、nat、hosts-only
bridge和nat模式
nat:virsh啓動就會建立一個nat類型的網橋virbr0,這個網橋的配置信息在 cat /var/lib/libvirt/network/default.xml這裏定義。若是定義nat類型的網絡,直接關聯這個網橋便可
bridge:須要利用iface-bridge eth0 br0建立一個網橋並綁定eth0。
三、建立網橋,而且將eth0關聯到網橋上的操做(自動建立網橋br0、並綁定eth0)會修改ifcfg-eth0和建立一個ifcfg-br0的配置文件
virsh iface-bridge eth0 br0
四、編輯虛擬機配置文件,綁定到網橋上(會自動建立一個tap類型的網卡vnet0並綁定到網橋上)
<!--虛擬機網絡配置,綁定到什麼網橋上,就是什麼網絡,注意:同一網段,網卡不能同樣--> <!--綁定到virbr0,是nat。 這是第一塊網卡,對應eth0--> <interface type="bridge"> <!--指定虛擬機網卡mac地址,能夠不設置,自動分配--> <!-- <mac address='06:64:12:00:00:52'/> --> <!--當前主機網橋的名稱--> <source bridge="virbr0" /> <model type='virtio'/> </interface> <!--綁定到br0,是bridge。 這是第二塊網卡,對應eth1--> <interface type="bridge"> <!--指定虛擬機網卡mac地址,能夠不設置,自動分配--> <!-- <mac address='06:64:12:00:00:52'/> --> <!--當前主機網橋的名稱--> <source bridge="br0" /> <model type='virtio'/> </interface>
五、和上面同樣定義和啓動虛擬機便可。
啓動虛擬機後,ifconfig會出現一個vnet0的tap類型網卡,是由於上面橋接到br0,自動生成的,它的網卡mac也是自動生成的。br0上面綁定了兩個網卡eth0和vnet0
若是再啓動一個虛擬機綁定到virtbr0上,那麼又會自動建立一個tap類型網卡(vnet1),並綁定到virtbr0上。
一、virsh 會自動建立網橋,並綁定eth0到上面,同時修改ifcfg-eth0和建立ifcfg-br0爲了下次開機重啓時還能生效。區別於手動brctl操做
二、啓動虛擬機時,連接到那個網橋上,哪一個網橋就會自動建立一個tap類型的網卡,名稱從vnet0遞增,關閉虛擬機後,會自動刪除這個vnet0
三、xml配置文件定義網卡的時候能夠不指定網卡mac,會自動分配,若是手動指定,那麼就必須保證同一個網橋上,mac不能重複
四、若是xml中配置多個網卡,那麼須要記住順序,第一個是eth0、第二個是eth1。。。。。。,由於綁定到那個網橋上,就須要配置對應網段的ip地址,不然無法上網
iface-begin iface-commit iface-destroy iface-edit iface-mac iface-rollback iface-unbridge iface-bridge iface-define iface-dumpxml iface-list iface-name iface-start iface-undefine