KVM虛擬化平臺部署及管理
前言
利用linux內核的一個模塊kvm,並使用一些輔助工具來搭建虛擬機,完成和esxi類似的操作,實現linux虛擬化。KVM直接整合到了linux內核,因此在性能、安全性、兼容性、穩定性上都有好的表現。我們都知道,使用虛擬化技術可以為公司節約成本,可以在一臺物理機上運行多個系統,充分利用物理機的資源。
環境準備(仔細閱讀):
OS:Centos7.2
LINUX系統一臺內核、cpu、內存均是越大最後效果越優,然後在下載一個系統鏡像放到服務器中也可以自己上傳,用於之後安裝kvm虛擬機系統。
備註:如果是使用vmware搭建可以先準備虛擬化的前提條件,選中標註位置選項即可
一、部署KVM
1、 解決依賴包關系
1.1 在安裝操作系統的時候,選擇桌面安裝,並選擇“現在自定義”,下一步之後選擇“虛擬化”,並勾選右側的所有功能;
1.2 如果安裝系統的時候沒有選擇也沒關系,可以使用yum安裝
yum -y install python-virtinst.noarch qemu-* bridge-utils.x86_64 libvirt virt-manager
1.3 驗證CPU是否支持虛擬化,如果有輸出代表沒問題
cat /proc/cpuinfo | grep vmx
1.4 檢查kvm模塊是否安裝成功
lsmod | grep kvm
2、橋接網絡
在libvirt中運行kvm網絡有兩種方法:nat和bridge,默認是nat(用戶模式),用戶模式可以訪問外網,但是無法從外部訪問虛擬機網絡,所以用的不是很多,我們一般做的服務器都需要外網的訪問,所有我們多數情況采用橋接模式(bridge),這種模式允許虛擬機像一臺獨立的主機一樣擁有網絡,外部的機器可以直接訪問到虛擬機,下面以橋接模式為例:
添加如下兩行:
NM_CONTROLLED="no"
BRIDGE="br0"
2.2 添加橋接網卡
BRIDGE定義橋接網卡名稱,新增名為"br0"的網卡,內容如下:
DEVICE="br0"
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
TYPE=Bridge
2.3 重啟網卡地址,驗證是否獲取成功
ip addr | grep br0
3、KVM虛擬機部署
3.1 使用管理軟件libvir,創建虛擬機
3.1.1 打開管理軟件
virt-manager
雙擊下圖圖中箭頭所指"QEMU/KVM"的位置,打開新的界面
3.1.2 選擇“存儲”,單擊“+”新建存儲池,輸入/data/store,這個位置用於存儲之後創建的虛擬機
點擊完成,即可創建存儲池
3.1.3 按照上面的做法,再創建一個鏡像存儲池,用於存儲系統鏡像,方便之後選擇系統安裝
3.1.4 創建存儲卷
虛擬磁盤有raw和qcow2兩種格式,默認使用的是raw,raw性能好,速度快,缺點是不支持一些功能,例如:制作快照、壓縮、加密等。但是qcow2格式用的比較多,功能多。為了避免後續轉換格式我在這裏直接選擇的qcow2的格式
添加後效果如下:
3.1.5 新建虛擬機,右擊"QEMU/KVM"新建虛擬機
選擇提前準備好的鏡像
選擇規格和存儲卷
安裝前可以根據需要修改一些配置,勾上自定義配置選項即可
自定界面勾選需要的配置,點擊左上角的 開始安裝 即可進入虛擬機安裝界面
安裝系統的步驟略過,安裝好了後我們進行實例管理例如:快照、克隆、備份、掛起等操作。
二、使用kvm命令管理虛擬機
1、查看虛擬機狀態
virsh list --all
start啟動、stop停止、reboot重啟此處略過
1.1 查看虛擬機信息
virsh dominfo 虛擬機名稱(centos7.0)
1.2 修改虛擬機信息
virsh edit 虛擬機名稱(centos7.0)
1.3 配置虛擬機伴隨主機自動啟動
virsh autostart 虛擬機名稱(centos7.0)
virsh autostart --disable虛擬機名稱(centos7.0) # 取消隨主機自動啟動
2、恢復和掛起虛擬機
2.1 掛起虛擬機
virsh suspend 虛擬機名稱(centos7.0)
2.2 恢復掛起虛擬機
3、格式轉換
轉換raw格式到qcow2格式介紹(由於我之前選擇了qcow2格式,此處只是演示轉換方法)
3.1 查看當前格式
qemu-img info /date/store/centos7_1.qcow2
如果是raw則繼續下面的步驟進行轉換,不是則忽略
3.2 關機實例
virsh shutdown 虛擬機名稱(centos7.0)
備註:KVM 虛擬機默認是無法用virsh shutdown 進行關機的,如果要想使用該命令關機,則必須在kvm 虛擬機上安裝acpid acpid-sysvinit 兩個包,啟動acpid 服務,並且加入隨機啟動,也可以強制斷電,如下
virsh destroy 虛擬機名稱(centos7.0) # 強制斷電
3.3 轉換raw格式到qcow2格式
qemu-img convert -f raw -O qcow2 /date/store/kvm_xxx.img /date/store/kvm_xxx.qcow2
3.4 修改kvm的xml配置文件
virsh edit 虛擬機名稱(centos7.0)
把raw改成qcow2,一共兩個地方,然後保存退出,完成轉換
4、克隆虛擬機及快照
4.1 克隆虛擬機
需要關閉虛擬機,如果克隆命令無法使用提前安裝好 virt-clone
yum -y install virt-clone
克隆
virt-clone -o 虛擬機名稱(centos7.0) -n 新的虛擬機名稱(centos7.0_1) -f /date/store/centos7.0_1.qcow2(新的存儲名稱)
4.2 虛擬機快照
為虛擬機創建快照,並查看快照信息
virsh snapshot-create 虛擬機名稱(centos7.0_1)
virsh snapshot-list 虛擬機名稱(centos7.0_1)
恢復快照
virsh snapshot-revert 虛擬機名稱(centos7.0_1) 快照名稱(1527228860)
刪除快照
virsh snapshot-delete 虛擬機名稱(centos7.0_1) 快照名稱(1527228860)
三、KVM虛擬網絡管理命令(virtual network):
virsh命令參數 功能 用法舉例
net-autostart 配置一個虛擬網絡開機自啟(--disable可以關閉) virsh net-autostart br0
net-create 通過一個xml文件創建一個虛擬網絡 virsh net-create ./virbr1.xml
net-define 通過xml文件定義一個虛擬網絡,僅定義不實例化 virsh net-define ./virbr1.xml
net-destory 停止由其名稱(uuid)指定的虛擬網絡,立即生效 virsh net-destroy br0
net-dumpxml 以xml文件的形式輸出一個虛擬網絡的配置信息 virsh net-dumpxml br0
net-edit 編輯一個虛擬網絡的配置文件(修改虛擬網絡配置) virsh net-edit br0
net-info 返回要查看的虛擬網絡的基本信息 virsh net-info default
net-list 查看當前的虛擬網絡信息(可以帶參數) virsh net-list --all
net-name
net-start 開始一個不活躍的虛擬網絡 virsh net-start br0
net-undefine 將一個不活躍的虛擬網絡取消定義 virsh net-undefine br0
net-uuid
net-update
創建並啟用一個網絡:net-define -> net-start
virsh net-define br0.xml
virsh net-list --all (有br0網絡,但處於不活躍狀態)
virsh net-start br0
virsh net-list --all (br0網絡已處於活躍狀態)
停用並刪除一個網絡(以br0為例):net-destroy -> net-undefine
virsh net-destroy br0
virsh net-list --all (br0網絡變為不活躍狀態)
virsh
net-undefine br0
virsh net-list --all (br0網絡已被刪除)
KVM虛擬化平臺部署及管理