KVM虛擬化平臺的搭建及基本命令

   KVM是Kernel-based Virtual Machine的簡稱,是一個開源的系統虛擬化模塊,自Linux 2.6.20以後集成在Linux的各個主要發行版本中,硬件須要支持VT技術(如Intel VT技術或者AMD V技術)。它使用Linux自身的調度器進行管理,因此相對於Xen,其核心源碼不多,KVM目前已成爲學術界的主流VMM之一。本篇博客將介紹部署虛擬化環境、建立虛擬機實例,以及虛擬機的基本管理。python



搭建KVM虛擬化平臺web

    搭建KVM最簡單的方法就是在安裝系統的時候,選擇桌面安裝,而後選擇虛擬化選項,KVM平臺就隨着系統的安裝自動就搭建成功了。                                                 vim

    若是須要在已有的系統上搭建KVM平臺,安裝的步驟以下:bash

(1)安裝KVM所需軟件服務器

[root@localhost ~]# yum -y groupinstall "Desktop"                //安裝GNOME桌面環境
[root@localhost ~]# yum -y install qemu-kvm.x86_64               //KVM模塊
[root@localhost ~]# yum -y install qemu-kvm-tools.x86_64         //KVM調試工具,可不安裝
[root@localhost ~]# yum -y install python-virtinst.noarch        //python組件,記錄建立VM時的xml文件
[root@localhost ~]# yum -y install qemu-img.x86_64               //qemu組件,建立磁盤、啓動虛擬機等
[root@localhost ~]# yum -y install bridge-utils.x86_64           //網絡支持工具
[root@localhost ~]# yum -y install libvirt                       //虛擬機管理工具
[root@localhost ~]# yum -y install virt-manager                  //圖形界面管理虛擬機


(2)檢查KVM模塊是否安裝網絡

[root@localhost ~]# lsmod | grep kvm
kvm_intel              54285  0 
kvm                   333172  1 kvm_intel


(3)設置KVM網絡
dom

    宿主服務器安裝完成KVM,首先要設定網絡,在libvirt中運行KVM網絡有兩種方法:NAT和Bridge,默認爲NATide

用戶模式(NAT):這種方式是默認網絡,數據包由NAT方式經過主機的接口進行傳送,能夠訪問外網,可是沒法從外網訪問虛擬機網絡工具

橋接模式(Bridge):這種模式容許虛擬機像一臺獨立的主機同樣擁有網絡,外部的主機能夠直接訪問到虛擬機內部oop

    這裏的網絡配置爲橋接模式Bridge

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
HWADDR=00:0c:29:1c:b4:fb
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE=br0

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
TYPE=Bridge
IPADDR=192.168.1.1
NETMASK=255.255.255.0

[root@localhost ~]# service network restart
正在關閉接口 br0:                                         [肯定]
正在關閉接口 eth0:                                        [肯定]
關閉環回接口:                                             [肯定]
彈出環回接口:                                             [肯定]
彈出界面 eth0:                                            [肯定]
彈出界面 br0: Determining if ip address 192.168.1.1 is already in use for device br0...
                                                           [肯定]
[root@localhost ~]# ifconfig 
br0       Link encap:Ethernet  HWaddr 00:0C:29:1C:B4:FB  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe1c:b4fb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1504 (1.4 KiB)  TX bytes:3128 (3.0 KiB)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:1C:B4:FB  
          inet6 addr: fe80::20c:29ff:fe1c:b4fb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:468 errors:0 dropped:0 overruns:0 frame:0
          TX packets:365 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:45694 (44.6 KiB)  TX bytes:42592 (41.5 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:28 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2256 (2.2 KiB)  TX bytes:2256 (2.2 KiB)

virbr0    Link encap:Ethernet  HWaddr 52:54:00:B1:C5:BC  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)


(4)安裝虛擬機 

1)建立虛擬機的存儲目錄

楊書凡24.png


2)打開虛擬系統管理器

楊書凡22.png



楊書凡25.png


楊書凡26.png


楊書凡27.png


楊書凡23.png


楊書凡28.png


楊書凡29.png


楊書凡30.png


楊書凡34.png


楊書凡35.png


楊書凡36.png



楊書凡38.png


楊書凡39.png




使用KVM命令集管理虛擬機

1. KVM基本功能管理

[root@localhost ~]# ls /etc/libvirt/qemu          //查看KVM的配置文件存放目錄
autostart  networks  web.xml                      //web.xml是虛擬機系統的配置文件
[root@localhost ~]# virsh 
歡迎使用 virsh,虛擬化的交互式終端。
輸入:'help' 來得到命令的幫助信息
       'quit' 退出
       
virsh # help                                    //查看命令幫助信息
virsh # list --all                              //查看虛擬機的狀態
 Id    名稱                         狀態
----------------------------------------------------
 5     web                            running

virsh # shutdown web                //關機,首先須要確認acpid服務安裝並運行
域 web 被關閉 

virsh # start web                   //開機
域 web 已開始

virsh # destroy web                 //強制虛擬機關閉電源
域 web 被刪除

virsh # create /etc/libvirt/qemu/web.xml          //經過配置文件啓動虛擬機
域 web 被建立(從 /etc/libvirt/qemu/web.xml)

virsh # suspend web                 //掛起虛擬機
域 web 被掛起

virsh # list --all
 Id    名稱                         狀態
----------------------------------------------------
 8     web                            暫停

virsh # resume web                  //恢復虛擬機
域 web 被從新恢復

virsh # autostart web        //建立/etc/libvirt/qemu/autostart目錄,開機自動啓動虛擬機
域 web標記爲自動開始

virsh # exit           //和quit命令相同,退出virsh虛擬化的交互式終端

[root@localhost ~]# virsh dumpxml web > /etc/libvirt/qemu/web_bak.xml   //導出虛擬機配置
[root@localhost ~]# virsh shutdown web                            //關閉虛擬機
域 web 被關閉

[root@localhost ~]# virsh undefine web         //刪除虛擬機
域 web 已經被取消定義

[root@localhost ~]# ls /etc/libvirt/qemu       //web的配置文件被刪除,但磁盤文件不會被刪除
autostart  networks  web_bak.xml

[root@localhost ~]# virsh list --all           //查不到web的信息,說明此虛擬機已被刪除  
 Id    名稱                         狀態
----------------------------------------------------

[root@localhost ~]# mv /etc/libvirt/qemu/web_bak.xml /etc/libvirt/qemu/web.xml  

[root@localhost ~]# virsh define /etc/libvirt/qemu/web.xml  //經過備份的文件從新定義虛擬機
定義域 web(從 /etc/libvirt/qemu/web.xml)

[root@localhost ~]# virsh list --all                        //虛擬機已經恢復
 Id    名稱                         狀態
----------------------------------------------------
 -     web                            關閉
 
[root@localhost ~]# vim /etc/libvirt/qemu/web.xml      //修改配置文件,用來修改系統內存、磁盤文件等信息 
[root@localhost ~]# virsh edit web              //和上面的命令同樣,修改web.xml配置文件        
編輯了域 web XML 配置。



2. KVM文件管理

    經過文件管理能夠直接查看、修改、複製虛擬機的內部文件,虛擬機磁盤文件有raw和qcow2格式

raw格式:KVM虛擬機默認的格式,性能好、速度快,但不支持鏡像、Zlib磁盤壓縮、AES加密等

qcow2格式:是KVM支持的磁盤鏡像格式,支持快照、、Zlib磁盤壓縮、AES加密等

[root@localhost ~]# yum -y install libguestfs-tools     //安裝此工具,能夠直接讀取qcow2格式的磁盤文件
[root@localhost ~]# qemu-img info /data_kvm/store/web_kvm.img     //查看當前磁盤格式爲raw
image: /data_kvm/store/web_kvm.img
file format: raw
virtual size: 9.8G (10485760000 bytes)
disk size: 9.8G

[root@localhost ~]# virsh shutdown web                         //關閉虛擬機
域 web 被關閉

[root@localhost ~]# qemu-img convert -f raw -O qcow2 /data_kvm/store/web_kvm.img /data_kvm/store/web_kvm.qcow2
//將raw格式轉換爲qcow2格式
[root@localhost ~]# virsh edit web                         //修改web.xml配置文件
……//省略部份內容
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>              //此行將raw改成qcow2
      <source file='/data_kvm/store/web_kvm.qcow2'/>               //此行將img改成qcow2
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>
……//省略部份內容    

[root@localhost ~]# virt-cat -a /data_kvm/store/web_kvm.qcow2 /etc/sysconfig/network    //相似於cat命令
NETWORKING=yes
HOSTNAME=web
[root@localhost ~]# virt-edit -a /data_kvm/store/web_kvm.qcow2 /etc/resolv.conf    //相似於vim命令,用於編輯文件

[root@localhost ~]# virt-df -h web                                    //用於查看虛擬機的磁盤信息
Filesystem                                Size       Used  Available  Use%
web:/dev/sda1                             484M        34M       425M    8%
web:/dev/VolGroup/lv_root                 8.2G       2.9G       4.9G   35%


3. 虛擬機克隆

[root@localhost ~]# virsh list --all                     //查看虛擬機狀態
 Id    名稱                         狀態
----------------------------------------------------
 -     web                            關閉
 
[root@localhost ~]# virt-clone -o web -n www -f /data_kvm/store/www.qcow2  //從web克隆www
 
[root@localhost ~]# virsh list --all                     //查看虛擬機狀態
 Id    名稱                         狀態
----------------------------------------------------
 -     web                            關閉
 -     www                            關閉


4. 虛擬機快照

[root@localhost ~]# virsh snapshot-create web          //對web建立快照
Domain snapshot 1516736781 created
[root@localhost ~]# virsh snapshot-current web         //查看虛擬機快照的版本信息
<domainsnapshot>
  <name>1516736781</name>
……//省略部份內容    

[root@localhost ~]# virsh snapshot-list web            //查看快照信息
 名稱               Creation Time             狀態
------------------------------------------------------------
 1516736781           2018-01-24 03:46:21 +0800 shutoff

[root@localhost ~]# virsh snapshot-create web          //建立新快照
Domain snapshot 1516737252 created

[root@localhost ~]# virsh snapshot-list web            //查看快照信息
 名稱               Creation Time             狀態
------------------------------------------------------------
 1516736781           2018-01-24 03:46:21 +0800 shutoff
 1516737252           2018-01-24 03:54:12 +0800 shutoff

[root@localhost ~]# virsh snapshot-revert web 1516736781      //恢復虛擬機狀態至1516736781

[root@localhost ~]# virsh snapshot-delete web 1516737252      //刪除快照
Domain snapshot 1516737252 deleted


    本篇博客只介紹了一些經常使用的KVM命令,其餘命令能夠經過查看help幫助信息或上網查找。因爲KVM命令集的龐大很難清除明瞭,因此一般都是在桌面環境下經過圖形界面管理,直觀方便。

相關文章
相關標籤/搜索