一、安裝kvm虛擬化
[root@localhost media]# yum -y groupinstall "GNOME Desktop" #安裝GNOME桌面環(huán)境
[root@localhost media]# yum -y install qemu-kvm #KVM模塊
[root@localhost media]# yum -y install qemu-kvm-tools #KVM調試工具,可不安裝
[root@localhost media]# yum -y install virt-install #構建虛擬機的命令行工具
[root@localhost media]# yum -y install qemu-img #qemu組件,創(chuàng)建磁盤、啟動虛擬機等
[root@localhost media]# yum -y install bridge-utils #網絡支持工具
[root@localhost media]# yum -y install libvirt #虛擬機管理工具
[root@localhost media]# yum -y install virt-manager #圖形界面管理虛擬機
[root@localhost media]# yum -y install libguestfs-tools #用來管理虛擬機磁盤格式
[root@localhost ~]# ls -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
#將系統(tǒng)默認運行的target更改為graphical.target,若不執(zhí)行該命令,重啟時可能會報錯。
2、安裝完畢后,需重啟系統(tǒng),執(zhí)行下面命令對系統(tǒng)進行檢查:
[root@localhost ~]# cat /proc/cpuinfo | grep vmx
#查看Intel的CPU是否支持虛擬化,若是AMD的CPU,需 “cat /proc/cpuinfo | grep smv”
[root@localhost ~]# lsmod | grep kvm #檢查KVM模塊是否安裝
kvm_intel 170181 0
kvm 554609 1 kvm_intel
irqbypass 13503 1 kvm
[root@localhost ~]# systemctl start libvirtd #啟動libvirtd服務
[root@localhost ~]# systemctl enable libvirtd #設置該服務為開機自啟
3、在命令行模式中創(chuàng)建虛擬機
[root@kvm kk]# mkdir -p /kvm/{iso,disk} #創(chuàng)建相應的目錄,一邊存放鏡像及虛擬機磁盤
#創(chuàng)建的/kvm目錄最好掛載在LVS卷上,以便可以動態(tài)擴展卷空間
[root@kvm iso]# cp /media/CentOS-7.iso /kvm/iso/ #準備要安裝的虛擬機操作系統(tǒng)文件
[root@kvm ~]# qemu-img create -f raw /kvm/disk/web01.raw 10G #創(chuàng)建虛擬機磁盤
[root@kvm ~]# virt-install --os-type=linxu --os-variant centos7.0 --name web01 --ram 1024 --vcpus 1 --disk /kvm/disk/web01.raw,format=raw,size=10 --location /kvm/iso/CentOS-7.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole #創(chuàng)建虛擬機web01
開始安裝......
搜索文件 .treeinfo...... | 354 B 00:00
搜索文件 vmlinuz...... | 5.9 MB 00:00
搜索文件 initrd.img...... | 50 MB 00:00
域安裝仍在進行。您可以重新連接
到控制臺以便完成安裝進程。
#根據(jù)上面的提示打開圖形化控制臺
[root@kvm ~]# virt-manager #打開控制臺
輸入打開控制臺的命令后,便會彈出以下窗口:
單擊“打開”后,會出現(xiàn)以下界面,和我們自己安裝系統(tǒng)一樣了(自行操作即可):
至此,命令行創(chuàng)建虛擬機就完成了,接下來使用手動更改配置文件的方式,克隆web01,生成新的虛擬機web02(在我博文前面的那個博文鏈接中有專用于克隆的命令工具的使用方法,這里只是為了來了解虛擬機的配置文件)
二、手動更改配置文件的方式,克隆web01,生成新的虛擬機web02
[root@kvm iso]# virsh list --all #確保要克隆的虛擬機在關閉狀態(tài)下
Id 名稱 狀態(tài)
----------------------------------------------------
- test01 關閉
- test02 關閉
- web01 關閉 #就是要克隆這臺
[root@kvm ~]# cd /kvm/disk/ #切換至虛擬機的虛擬磁盤存放目錄
[root@kvm disk]# cp web01.raw web02.raw #將要克隆的虛擬機磁盤復制一份,并更改名稱
[root@kvm disk]# cd /etc/libvirt/qemu/ #切換至KVM虛擬機配置文件的目錄
[root@kvm qemu]# ls #查看當前目錄下的文件
networks test01.xml test02.xml web01.xml
[root@kvm qemu]# virsh dumpxml web01 > ./web02.xml
#將web01的配置文件使用dumpxml工具進行備份為當前目錄下的web02.xml
[root@kvm qemu]# ls #確認備份成功
networks test01.xml test02.xml web01.xml web02.xml
[root@kvm qemu]# vim web02.xml #編輯備份出的文件
<domain type='kvm'>
<name>web02</name> #將這里的名字改為web02
<uuid>2d6f2a7c-9937-4afb-b8d6-8ef01ca61434</uuid> #刪除UUID這行配置,防止沖突
<memory unit='KiB'>1048576</memory>
.............#省略部分內容
<devices> #定位到該行標簽
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/kvm/disk/web02.raw'/> #將這里的路徑更改為剛才使用cp命令復制的web02.raw文件
#更改完成后,保存退出
[root@kvm qemu]# virsh define web02.xml #定義此配置文
#(可以理解為載入該虛擬機,此時,需要注意當前的工作路徑)
定義域 web02(從 web02.xml)
[root@kvm qemu]# virsh list --all #查看是否克隆成功
Id 名稱 狀態(tài)
----------------------------------------------------
- test01 關閉
- test02 關閉
- web01 關閉
- web02 關閉
#OK!查看到了,可以自行運行web02,測試是否運行正常。
[root@kvm qemu]# virsh start web02 #啟動web02
域 web02 已開始
[root@kvm qemu]# virsh list --all #OK,正在運行!
Id 名稱 狀態(tài)
----------------------------------------------------
3 web02 running
.............#省略部分內容
三、將web01加入開機自啟,與web02對比有何異同
[root@kvm qemu]# virsh dominfo web01 #此命令可以查看指定虛擬機的信息
Id: -
名稱: web01
UUID: 2d6f2a7c-9937-4afb-b8d6-8ef01ca61434
OS 類型: hvm
狀態(tài): 關閉
CPU: 1
最大內存: 1048576 KiB
使用的內存: 1048576 KiB
持久: 是
自動啟動: 禁用 #默認此處為禁用狀態(tài)
管理的保存: 否
安全性模式: none
安全性 DOI: 0
[root@kvm qemu]# virsh autostart web01 #設置web01為開機自啟
域 web01標記為自動開始
[root@kvm qemu]# virsh dominfo web01 #查看是否設置為開機自啟
Id: -
名稱: web01
UUID: 2d6f2a7c-9937-4afb-b8d6-8ef01ca61434
OS 類型: hvm
狀態(tài): 關閉
CPU: 1
最大內存: 1048576 KiB
使用的內存: 1048576 KiB
持久: 是
自動啟動: 啟用 #OK!
管理的保存: 否
安全性模式: none
安全性 DOI: 0
[root@kvm qemu]# virsh dominfo web02 #查看web02是否為開機自啟
Id: 3
名稱: web02
UUID: f554ad15-1b67-4f01-b203-a9d0c3abe192
OS 類型: hvm
狀態(tài): running
CPU: 1
CPU 時間: 21.4s
最大內存: 1048576 KiB
使用的內存: 1048576 KiB
持久: 是
自動啟動: 禁用 #是禁用狀態(tài)
管理的保存: 否
安全性模式: none
安全性 DOI: 0
#此時可以重啟宿主機,然后查看虛擬機的狀態(tài)(需要確保libvirtd服務的狀態(tài)為開機自啟,否則會出現(xiàn)問題)
[root@kvm qemu]# init 6 #重啟宿主機
[root@kvm ~]# virsh list #,待重啟完成后,查看正在運行的虛擬機
Id 名稱 狀態(tài)
----------------------------------------------------
1 web01 running
#此時,只有web01處于運行狀態(tài),因為它設置了開機自啟,在libvirtd服務開機自啟的前提下,
#它會隨著宿主機的啟動而啟動
四、遠程連接虛擬機的兩種方法
(1)使用VNC軟件
VNC的安裝比較簡單,這里就不多寫了。
[root@kvm ~]# virsh vncdisplay web02 <!--查看web02的監(jiān)聽端口-->
:0
<!--
查看出的結果是“:0”,解釋如下:
“:0”表示監(jiān)聽5900端口;
“:1”表示監(jiān)聽5901端口;
以此類推......
-->
打開vnc進行連接(注意防火墻相關配置):
為了方便接下來使用console進行連接,此時需要調整虛擬機(web02)的內核參數(shù),如下:
[root@localhost ~]# grubby --update-kernel=ALL --args=”console=ttyS0” #在虛擬機中執(zhí)行此命令
[root@localhost ~]# init 6 #重啟此虛擬機,以便更改生效
(2)使用console登陸web02
在KVM宿主機上執(zhí)行以下命令即可登陸成功(前提是在使用vnc登陸時已經更改了web02的內核參數(shù))
[root@kvm ~]# virsh console web02 #執(zhí)行該命令
連接到域 web02
換碼符為 ^]
#敲一下回車鍵
CentOS Linux 7 (Core)
Kernel 3.10.0-862.el7.x86_64 on an x86_64
web02 login: root #輸入web02的用戶名及密碼登陸即可。
密碼:
Last login: Wed Oct 9 21:20:48 on tty1
[root@web02 ~]#
五、使用默認的NAT網絡類型使web02可以ping通外網
這里就進行ping百度的測試,務必保證KVM宿主機可以ping通百度。
(1)檢查相關配置
[root@kvm ~]# virsh net-list --all <!--檢查當前的網絡設置-->
名稱 狀態(tài) 自動開始 持久
----------------------------------------------------------
default 活動 是 是
[root@kvm ~]# ifconfig <!--檢查當前的網絡接口-->
.............<!--省略部分內容-->
virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
<!--
virbr0是由宿主機虛擬機支持模塊安裝時產生的虛擬網絡接口,
也是一個switch和bridge,負責把內容分發(fā)到各虛擬機。
virbr0是一個橋接器,接收所有到網絡192.168.122.*的內容。
從下面命令可以驗證: -->
[root@kvm ~]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400a8bf19 yes virbr0-nic
vnet0
[root@kvm ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
(2)接下來開始配置nat網絡
[root@kvm ~]# virsh net-define /usr/share/libvirt/networks/default.xml
#如果沒有上面指定的文件,可以使用該命令定義一個虛擬網絡
也可以修改該文件,創(chuàng)建自己的虛擬網絡
[root@kvm ~]# virsh net-autostart default #網絡default標記為自動啟動
[root@kvm ~]# virsh net-start default #啟動網絡,若已啟動,此處會報錯
[root@kvm ~]# vim /etc/sysctl.conf #修改此配置文件
............#省略部分內容
net.ipv4.ip_forward=1 #在文件末尾加入該行,以便允許IP轉發(fā)
[root@kvm ~]# vim /etc/libvirt/qemu/web02.xml
............#省略部分內容
<interface type='network'>
<mac address='52:54:00:24:9d:24'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
#定位“interface”關鍵字,確定有上述內容
............#省略部分內容
(3)連接到虛擬機web02,更改網卡的配置:
[root@web02~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 #編輯網卡配置文件
更改網卡后,保存退出。
[root@web02~]# systemctl restart network #重啟web02虛擬機的網絡服務
進行ping測試:
若要使用靜態(tài)IP,配置文件可更改如下(更改完成后自行重啟網卡,可以增加DNS配置):
六、KVM虛擬機管理命令匯總
[root@kvm ~]# virsh start 虛擬機名稱 #開啟虛擬機
[root@kvm ~]# virsh list #僅查看運行的虛擬機列表
[root@kvm ~]# virsh list --all #查看所有虛擬機列表
[root@kvm ~]# virsh shutdown 虛擬機名稱 #正常的關閉虛擬機
[root@kvm ~]# virsh destroy 虛擬機名稱 #強制關閉虛擬機(類似于拔電源)
[root@kvm ~]# virsh dumpxml 虛擬機名稱 > /root/test01-dum.xml #虛擬機備份
[root@kvm ~]# virsh undefine 虛擬機名稱 #刪除虛擬機(注意:取消定義之后,磁盤文件需要手動刪除)
[root@kvm ~]# virsh define 備份的.xml虛擬機文件 #還原虛擬機
[root@kvm ~]# virsh edit 虛擬機名稱 #編輯虛擬機的配置文件
[root@kvm ~]# virsh domrename 原名字 要更改的名字
# 如:([root@kvm ~]# virsh domrename test01 test03) 更改虛擬機名稱
[root@kvm qemu]# virsh dominfo test02 #查看虛擬機的詳細信息
[root@kvm ~]# virsh autostart test02 #設置虛擬機為開機自啟
[root@kvm ~]# virsh autostart --disable test02 #取消開機自啟
[root@kvm ~]# virsh vncdisplay test02 #查看對應的VNC連接端口號;默認第一個端口號為:5900(用“:0”表示)
[root@kvm ~]# virsh suspend test02 #掛起虛擬機
[root@kvm ~]# virsh resume test02 #取消掛起虛擬機
[root@kvm ~]# virsh console test02 #console登陸虛擬機
[root@kvm ~]# qemu-img info /kvm/disk/test01.raw #查看虛擬機的磁盤信息
[root@kvm disk]# qemu-img create test.raw 2G #創(chuàng)建虛擬機使用的磁盤
[root@kvm disk]# qemu-img create -f qcow2 21.qcow2 2G #創(chuàng)建qcow2格式的虛擬機磁盤
[root@kvm disk]# qemu-img convert -f raw -O qcow2 test.raw test.qcow2 #將test.raw磁盤格式raw轉換為qcow2
[root@kvm qemu]# virsh snapshot-create test02 #創(chuàng)建虛擬機快照
[root@kvm disk]# virsh snapshot-list test02 #查看虛擬機快照
[root@kvm disk]# virsh snapshot-revert test02 1570692304 #恢復快照
[root@kvm disk]# virt-clone --auto-clone -o test01 -n 指定要克隆的名字(可選) #自動克隆虛擬機
[root@kvm disk]# virt-clone -o test01 -n test04 -f /kvm/disk/test04.qcow2 #手動克隆
#上述都是屬于完整克隆。
[root@kvm disk]# qemu-img create -f qcow2 -b test01.qcow2 lktest01.qcow2
# -f:指定要克隆為的磁盤格式;
# -b:指定要轉換的源文件及目標文件
#上述命令是在克隆虛擬機的磁盤文件
- RAW:裸格式。占用空間較大,性能比較好,但不支持快照功能。
- qcow:copy on write(寫時復制機制)。
- qcow2:占用空間較小,性能相比較RAW稍差,,但它支持快照功能。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。