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)建立虛擬機的存儲目錄
2)打開虛擬系統管理器
使用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命令集的龐大很難清除明瞭,因此一般都是在桌面環境下經過圖形界面管理,直觀方便。