平時(shí)我們開(kāi)虛擬機(jī)用得比較多得是使用VMWare,簡(jiǎn)單無(wú)腦,只需在圖形界面上點(diǎn)點(diǎn)點(diǎn)就可以完成虛擬機(jī)管理,可惜VMWare并不是免費(fèi),因此這里介紹另一種虛擬機(jī)的搭建方式——KVM,KVM是Kernel-based Virtual Machine的簡(jiǎn)稱,是一個(gè)開(kāi)源的系統(tǒng)虛擬化模塊,自Linux 2.6.20之后集成在Linux的各個(gè)主要發(fā)行版本中。它使用Linux自身的調(diào)度器進(jìn)行管理,所以相對(duì)于Xen,其核心源碼很少,相對(duì)VMWare的管理方式來(lái)說(shuō)是比較麻煩,但從性能上并不比VMWare差。
目錄
- 一、安裝環(huán)境
- 二、KVM安裝
- 三、創(chuàng)建虛擬機(jī)并安裝CentOS 7
- 四、克隆虛擬機(jī)
- 五、參考并致謝
一、安裝環(huán)境
操作系統(tǒng)(在哪個(gè)操作系統(tǒng)上操作):CentOS 7
虛擬化軟件:VMWare 14、KVM
操作系統(tǒng)(等下虛擬機(jī)建好后需要安裝的操作系統(tǒng)):CentOS 7
說(shuō)明: 由于我使用的是在本機(jī)的VMware上搭建的Linux作為搭建KVM的演示,所以這里使用了VMWare,如果是在操作系統(tǒng)上直接搭建KVM,則不需要VMWare
二、KVM安裝
1、VMWare虛擬機(jī)配置
這是我用來(lái)演示的虛擬機(jī)配置,如果讀者是直接使用物理機(jī)的話可以省略這一步

硬盤(pán)需要新增一個(gè)(如果磁盤(pán)空間足夠也可以忽略),用于在KVM里安裝操作系統(tǒng)時(shí)用到,內(nèi)存最好有4G,最低也不要少于2G,具體根據(jù)你所需來(lái)配置,CPU的核心最少2個(gè)
2、安裝KVM
1)啟動(dòng)剛剛創(chuàng)建的VM虛擬機(jī)或物理機(jī)
2)進(jìn)入系統(tǒng)后關(guān)閉防火墻和selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
3)檢查CPU參數(shù)是否支持虛擬化
[root@localhost ~]# grep -Ei 'vmx|svm' /proc/cpuinfo
如果結(jié)果有過(guò)濾出vmx或者svm的關(guān)鍵字代表支持虛擬化,vmx是Intel的CPU,svm是AMD的CPU,如圖所示

4)格式化新磁盤(pán)或者擴(kuò)展磁盤(pán)
如果磁盤(pán)空間足夠或者已經(jīng)準(zhǔn)備好需要擴(kuò)展的磁盤(pán)的話可以跳過(guò)此步,這里選擇擴(kuò)展磁盤(pán)
# 格式化磁盤(pán)
[root@localhost ~]# fdisk /dev/sda
[root@localhost ~]# fdisk -l
# 重啟系統(tǒng)
[root@localhost ~]# reboot
[root@localhost ~]# vgdisplay
[root@localhost ~]# pvcreate /dev/sda4
[root@localhost ~]# vgextend centos /dev/sda4
[root@localhost ~]# vgdisplay
# 查看磁盤(pán)目前的大小,并記住
[root@localhost ~]# df -h
# 擴(kuò)展磁盤(pán)
[root@localhost ~]# lvextend -L +49G /dev/mapper/centos-root
[root@localhost ~]# resize2fs /dev/mapper/centos-root
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root
# 檢查磁盤(pán)是否已經(jīng)成功擴(kuò)展
[root@localhost ~]# df -h
我習(xí)慣使用目錄的方式來(lái)區(qū)分各不同的應(yīng)用,如我這里直接在磁盤(pán)中創(chuàng)建了存放KVM虛擬機(jī)的目錄
[root@localhost ~]# mkdir /kvm
5)下載安裝KVM軟件
[root@localhost ~]# yum -y install kvm qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools bridge-utils virt-install
6)配置虛擬網(wǎng)卡
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
# 拷貝當(dāng)前的網(wǎng)卡文件,作為一個(gè)橋接網(wǎng)卡
[root@localhost /etc/sysconfig/network-scripts]# cp ifcfg-ens33 ifcfg-br0
# 修改原來(lái)的網(wǎng)卡內(nèi)容
[root@localhost /etc/sysconfig/network-scripts]# vim ifcfg-ens33
原來(lái)的網(wǎng)卡配置文件內(nèi)容修改如下:

然后修改br0網(wǎng)卡的配置文件:

重啟網(wǎng)絡(luò)服務(wù)
[root@localhost ~]# systemctl restart network
網(wǎng)絡(luò)服務(wù)重啟之后使用ifconfig命令可以看到此時(shí)ens33網(wǎng)卡的IP到br0網(wǎng)卡上了

7)啟動(dòng)KVM服務(wù)
# 檢查KVM模塊是否加載
[root@localhost ~]# lsmod |grep kvm
# 啟動(dòng)libvritd服務(wù)
[root@localhost ~]# systemctl start libvirtd
# 此時(shí)可以看到兩個(gè)網(wǎng)卡
[root@localhost ~]# brctl show
三、創(chuàng)建虛擬機(jī)并安裝CentOS 7
1、首先要準(zhǔn)備鏡像文件,鏡像文件可以從官網(wǎng)下載,這里我已經(jīng)下載好了

2、使用命令安裝
[root@localhost ~]# virt-install --name=study01 --memory=1024,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/home/CentOS-7-x86_64-DVD-1810.iso --disk path=/kvm/study01.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
命令說(shuō)明:
--name 指定虛擬機(jī)的名稱
--memory 指定分配給虛擬機(jī)的內(nèi)存資源大小
maxmemory 指定可調(diào)節(jié)的最大內(nèi)存資源大小,因?yàn)镵VM支持熱調(diào)整虛擬機(jī)的資源
--vcpus 指定分配給虛擬機(jī)的CPU核心數(shù)量
maxvcpus 指定可調(diào)節(jié)的最大CPU核心數(shù)量
--os-type 指定虛擬機(jī)安裝的操作系統(tǒng)類型
--os-variant 指定系統(tǒng)的發(fā)行版本
--location 指定ISO鏡像文件所在的路徑,支持使用網(wǎng)絡(luò)資源路徑,也就是說(shuō)可以使用URL
--disk path 指定虛擬硬盤(pán)所存放的路徑及名稱,size 則是指定該硬盤(pán)的可用大小,單位是G
--bridge 指定使用哪一個(gè)橋接網(wǎng)卡,也就是說(shuō)使用橋接的網(wǎng)絡(luò)模式
--graphics 指定是否開(kāi)啟圖形
--console 定義終端的屬性,target_type 則是定義終端的類型
--extra-args 定義終端額外的參數(shù)
開(kāi)始安裝后會(huì)顯示安裝引導(dǎo)界面(其實(shí)跟普通安裝CentOS一樣,只不過(guò)平時(shí)是用圖形界面安裝,這里是用命令行來(lái)展現(xiàn)),[!]代表你需要配置的,[x]代表你已經(jīng)設(shè)置了

這里我們按1進(jìn)入語(yǔ)言選擇界面:

這里選擇了中文,輸入68并回車,然后會(huì)讓你選擇是簡(jiǎn)體還是繁體,這里也按下相應(yīng)的數(shù)字然后回車:

接下來(lái)選擇時(shí)區(qū):

選擇亞洲


設(shè)置系統(tǒng)安裝盤(pán)





設(shè)置root密碼

最后開(kāi)始安裝系統(tǒng)

安裝完成后會(huì)停止在以下這個(gè)界面,按一下回車就會(huì)自動(dòng)重啟完成安裝系統(tǒng)

重啟完成后就會(huì)進(jìn)入到登錄界面

此時(shí)我們所在的是一個(gè)KVM虛擬機(jī)的終端,如果想要切換回原本那個(gè)系統(tǒng)終端的話可以使用Ctrl+]命令
然后登錄到虛擬機(jī),修改虛擬機(jī)的網(wǎng)絡(luò)配置文件去配置IP,讓其能聯(lián)網(wǎng)
退出虛擬機(jī)后,我們進(jìn)入到KVM虛擬機(jī)安裝的目錄或磁盤(pán),會(huì)發(fā)現(xiàn)下面多出了個(gè)文件

查看KVM進(jìn)程命令:
[root@localhost ~]# ps axu |grep kvm
列出當(dāng)前有多少個(gè)虛擬機(jī)(該命令不能查看已經(jīng)關(guān)機(jī)的虛擬機(jī),可以加上--all參數(shù)查看全部虛擬機(jī)):
[root@localhost ~]# virsh list
# 查看全部虛擬機(jī)
[root@localhost ~]# virsh list --all
查看虛擬機(jī)配置文件:
[root@localhost ~]# ls /etc/libvirt/qemu/
[root@localhost ~]# ls /etc/libvirt/qemu/networks/
[root@localhost ~]# ls /etc/libvirt/qemu/networks/autostart/

一些常用命令總結(jié):
# 進(jìn)入指定的虛擬機(jī),進(jìn)入的時(shí)候還需要按一下回車
[root@localhost ~]# virsh console study01
# 啟動(dòng)虛擬機(jī)
[root@localhost ~]# virsh start study01
# 關(guān)閉虛擬機(jī)
[root@localhost ~]# virsh shutdown study01
# 強(qiáng)制停止虛擬機(jī)
[root@localhost ~]# virsh destroy study01
# 徹底銷毀虛擬機(jī),會(huì)刪除虛擬機(jī)配置文件,但不會(huì)刪除虛擬磁盤(pán)
[root@localhost ~]# virsh undefine study01
# 設(shè)置宿主機(jī)開(kāi)機(jī)時(shí)該虛擬機(jī)也開(kāi)機(jī)
[root@localhost ~]# virsh autostart study01
# 解除開(kāi)機(jī)啟動(dòng)
[root@localhost ~]# virsh autostart --disable study01
# 掛起虛擬機(jī)
[root@localhost ~]# virsh suspend study01
# 恢復(fù)掛起的虛擬機(jī)
[root@localhost ~]# virsh resume study01
此時(shí)虛擬機(jī)安裝完成
注意啦?。?!由于我的宿主機(jī)是centos7系統(tǒng),所以創(chuàng)建出來(lái)的磁盤(pán)默認(rèn)就是qcow2 格式的,如果是centos6 的宿主系統(tǒng)那么創(chuàng)建出來(lái)的磁盤(pán)是raw格式(這個(gè)系統(tǒng)遷移和派生的時(shí)候要一定要小心!)。
附上鏡像格式轉(zhuǎn)換命令:
# qemu-img convert -f raw -O qcow2 study01.img study01.qcow2
四、克隆虛擬機(jī)
1、停止或掛起需要克隆的虛擬機(jī)
[root@localhost ~]# virsh suspend study01
2、使用命令的方式來(lái)克隆
[root@localhost ~]# virt-clone -o study01 -n study01_clone -f /kvm/study01_clone.img
參數(shù)說(shuō)明:
-o :指定源虛擬機(jī)
-n :命名新克隆的虛擬機(jī)
-f :指定新克隆虛擬機(jī)的位置
克隆完成后查看存放虛擬機(jī)的目錄
[root@localhost ~]# ls /kvm

查看配置文件目錄
[root@localhost ~]# ls /etc/libvirt/qemu

查看虛擬機(jī)狀態(tài):
[root@localhost ~]# virsh list --all

啟動(dòng)克隆出來(lái)的虛擬機(jī)并配置網(wǎng)絡(luò)IP
[root@localhost ~]# virsh start snale_clone
3、使用復(fù)制文件的方式克隆虛擬機(jī)
導(dǎo)出配置文件到/etc/libvirt/qemu目錄下,并重命名
[root@localhost ~]# virsh dumpxml study01 >/etc/libvirt/qemu/study03.xml
當(dāng)然也可以復(fù)制
[root@localhost ~]# cp study01.xml study03.xml
復(fù)制KVM虛擬磁盤(pán)文件
[root@localhost ~]# cp /kvm/study01.img /kvm/study03.img
編輯新的虛擬機(jī)配置文件study03.xml
[root@localhost ~]# vim /etc/libvirt/qemu/study03.xml
主要修改以下內(nèi)容:
<name>study03</name>
# UUID隨意修改數(shù)值,不過(guò)格式要一致
<uuid>192fdc94-c81b-fa35-9100-0c073eee2c27</uuid>
文件目錄
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source file='/kvm/study03.img'/>
注冊(cè)新的虛擬機(jī):
[root@localhost ~]# virsh define /etc/libvirt/qemu/study03.xml
啟動(dòng)新的虛擬機(jī)
[root@localhost ~]# virsh start study03