kvm實(shí)驗(yàn)
環(huán)境準(zhǔn)備,我這里使用虛擬機(jī)進(jìn)行模擬,先設(shè)定好虛擬化

進(jìn)入系統(tǒng)查看是否支持虛擬化
[root@kvm ~]# lsmod |grep kvm
kvm_intel 174841 0
kvm 578518 1 kvm_intel
irqbypass 13503 1 kvm
KVM:Kernel-based Virtual Machine
安裝需要的軟件和下載鏡像:
yum install libvirt virt-install qemu-kvm -y
libvirt 作用:虛擬機(jī)的管理軟件
virt virt-install virt-clone 作用:虛擬機(jī)的安裝工具和克隆工具
qemu-kvm qemu-img (qcow2,raw)作用:管理虛擬機(jī)的虛擬磁盤
自行下載一個(gè)centos7的鏡像,我本地有鏡像所以不需要下載
[root@kvm opt]# ll
total 171008
-rw-r--r-- 1 root root 175112192 Nov 25 2018 CentOS-7-x86_64-DVD-1804.iso
因?yàn)槲业膶?shí)驗(yàn)機(jī)是最小化安裝的,要想實(shí)現(xiàn)圖形化界面需要安裝桌面,如果不想安裝桌面可以下載vnc到windows桌面上待會(huì)備用
先啟動(dòng)一個(gè)虛擬機(jī)
[root@kvm opt]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
[root@kvm opt]# ps -ef |grep 5900
root 5151 1940 0 20:46 pts/0 00:00:00 grep --color=auto 5900
命令詳解:
--virt-type kvm 虛擬化的類型(qemu)
--os-type=linux 系統(tǒng)類型
--os-variant rhel7 系統(tǒng)版本
--name centos7 虛擬機(jī)的名字
--memory 1024 虛擬機(jī)的內(nèi)存
--vcpus 1 虛擬cpu的核數(shù)
--disk /opt/centos2.raw,format=raw,size=10
--cdrom /opt/CentOS-7-x86_64-DVD-1804.iso
--network network=default 使用默認(rèn)NAT的網(wǎng)絡(luò)
--graphics vnc,listen=0.0.0.0 圖形界面用vnc輸出
--noautoconsole
這樣可以直接連接vnc

kvm虛擬機(jī)的virsh日常管理和配置命令
列表list(--all)
開機(jī)start
關(guān)機(jī)shutdown
拔電源關(guān)機(jī)destroy
重命名domrename (低版本不支持)
掛起suspend
恢復(fù)resume
查詢vnc端口號(hào)vncdisplay
導(dǎo)出配置dumpxml 例子:virsh dumpxml centos7 >centos7-off.xml
刪除undefine 推薦:先destroy,在undefine
導(dǎo)入配置define
修改配置edit(自帶語法檢查)
低版本修改虛擬機(jī)名字操作流程
先停掉虛擬機(jī) virsh shutdwon centos7
備份配置文件 virsh dumpxml centos7 >web01.xml
刪除虛擬機(jī) virsh undefine centos7
修改配置文件 vim web01.xml <name>web01</name>,刪掉uuid
導(dǎo)入虛擬機(jī) virsh define web01.xml
虛擬機(jī)優(yōu)化
當(dāng)虛擬機(jī)掛起或者恢復(fù)后時(shí)間后出現(xiàn)不一致,所以需要做好時(shí)間同步
創(chuàng)建虛擬機(jī)系統(tǒng)時(shí)取消swap節(jié)省內(nèi)存
虛擬機(jī)開機(jī)自啟
開機(jī)啟動(dòng)autostart,前提:systemctl enable libvirtd;
取消開機(jī)啟動(dòng)autostart --disable
查看哪些虛擬機(jī)設(shè)置了開機(jī)自啟:
當(dāng)設(shè)置了開啟自啟后在/etc/libvirt/qemu/autostart/下會(huì)存在一個(gè)軟連接
[root@kvm opt]# ll /etc/libvirt/qemu/autostart/
total 0
lrwxrwxrwx 1 root root 29 Apr 3 22:28 centos7.xml -> /etc/libvirt/qemu/centos7.xml
qemu下命令
查看虛擬磁盤信息
qemu-img info test.qcow2
創(chuàng)建一塊qcow2格式的虛擬硬盤:
qemu-img create -f qcow2 test.qcow2 2G
調(diào)整磁盤磁盤容量
qemu-img resize test.qcow2 +20G
把raw格式轉(zhuǎn)換為qcow2格式
raw: 裸格式,占用空間比較大,不支持快照功能,性能較好,不方便傳輸 總50G 占用2G
qcow2:cow (copy on write)占用空間小,支持快照,性能比raw差一點(diǎn),方便傳輸 總50G 占用2G
- 1.先關(guān)閉要修改的虛擬機(jī)web01
virsh destroy web01
- 2.查看虛擬機(jī)運(yùn)行狀態(tài)
virsh list --all
- 3.確定關(guān)閉后執(zhí)行轉(zhuǎn)換命令
qemu-img convert -f raw -O qcow2 /data/web01.raw /data/web01.qcow2
>格式示例qemu-img convert [-f fmt] [-O output_fmt] filename output_filename
- 4.修改web01配置文件
virsh edit web01
[root@oldboy data]# virsh dumpxml web01|grep 'qcow2'
<driver name='qemu' type='qcow2'/>
<source file='/data/web01.qcow2'/>
- 5.重新啟動(dòng)web01,看是否可正常啟動(dòng)
virsh start web01
快照
raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盤文件中
- 創(chuàng)建快照
virsh snapshot-create-as centos7 --name install_ok
--name 指定快照名字
查看快照
virsh snapshot-list centos7還原快照
virsh snapshot-revert centos7 --snapshotname 1516574134刪除快照
virsh snapshot-delete centos7 --snapshotname 1516636570
虛擬機(jī)克隆
kvm虛擬機(jī):磁盤文件 + 配置文件
- 完整克隆
克隆命令:virt-clone --auto-clone -o web01 -n web02(完整克隆)
參數(shù)解釋:
-o 指定要克隆的機(jī)器
-n 被克隆的機(jī)器
- kvm鏈接克隆
a.基于源磁盤文件,創(chuàng)建鏈接磁盤文件
qemu-img create -f qcow2 -b web02.qcow2 web03.qcow2
b:生成虛擬機(jī)的配置文件
virsh dumpxml web02 >web03.xml
virsh define web03.xml
virsh start web03
c:導(dǎo)入虛擬機(jī)并進(jìn)行啟動(dòng)測(cè)試
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
全自動(dòng)鏈接克隆方法:強(qiáng)哥博客
kvm虛擬機(jī)網(wǎng)絡(luò)
默認(rèn)的虛擬機(jī)網(wǎng)絡(luò)是NAT模式,網(wǎng)段192.168.122.0/24,但是只能被內(nèi)網(wǎng)訪問,要想被外網(wǎng)也訪問到,要使用橋接模式
- 默認(rèn)NAT模式
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole - 橋接模式
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
kvm虛擬機(jī)實(shí)現(xiàn)橋接模式
1:創(chuàng)建橋接網(wǎng)卡
virsh iface-bridge eth0 br0
在使用此命令后會(huì)生成新的網(wǎng)卡信息,原eth0網(wǎng)卡信息也同時(shí)變更
取消橋接網(wǎng)卡
virsh iface-unbridge br0
2:測(cè)試虛擬機(jī)網(wǎng)絡(luò)
創(chuàng)建一臺(tái)使用橋接模式的虛擬機(jī)進(jìn)行測(cè)試是否可以正常連接外網(wǎng)
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name test --memory 1024 --vcpus 1 --disk /data/test.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
修改已創(chuàng)建的虛擬機(jī)的網(wǎng)絡(luò)模式,需要修改配置文件內(nèi)的網(wǎng)絡(luò)類型記名稱
virsh edit centos7
<interface type='bridge'>
<mac address='52:54:00:55:aa:fa'/>
<source bridge='br0'/>
在宿主機(jī)上,重啟虛擬機(jī)生效
熱添加技術(shù)
kvm虛擬機(jī)在線熱添加硬盤
先創(chuàng)建一塊準(zhǔn)備添加的硬盤
qemu-img create -f qcow2 add01.qcow2 5G
臨時(shí)生效
virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --subdriver=qcow2
永久生效
virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --subdriver qcow2 --config
作業(yè)3:擴(kuò)容kvm虛擬機(jī)的根分區(qū)
kvm虛擬機(jī)在線熱添加網(wǎng)卡
kvm虛擬機(jī)在線熱添加內(nèi)存
kvm虛擬機(jī)在線熱添加cpu
虛擬機(jī)磁盤擴(kuò)容:
在kvm虛擬機(jī),卸載
virsh detach-disk centos7 vdb
qemu-img resize /data/centos7-add01.qcow2 +5G
virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2
在虛擬機(jī)中:xfs_growfs /dev/vdb
根分區(qū)擴(kuò)容:
1)在宿主機(jī)上關(guān)閉虛擬機(jī)并調(diào)整虛擬機(jī)磁盤大小
qemu-img resize oldboy.qcow2 +10G
2)虛擬機(jī)中fdisk重新分區(qū)
fdisk /dev/vda
3)重啟之后,執(zhí)行xfs_growfs /dev/vda1,
如果虛擬機(jī)磁盤文件系統(tǒng)是ext4:resize2fs /dev/vda1
kvm虛擬機(jī)在線熱添加網(wǎng)卡
virsh attach-interface web04 --type bridge --source br0 --model virtio
detach-interface web04 --type bridge --mac 52:54:00:35:d3:71
kvm虛擬機(jī)在線熱添加內(nèi)存
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
臨時(shí)熱添加內(nèi)存
setmem web04 1024M --live
永久增大內(nèi)存
setmem web04 1024M --config
kvm虛擬機(jī)在線熱添加cpu
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
熱添加cpu核數(shù)
setvcpus web04 4 --live
永久添加cpu核數(shù)
setvcpus web04 4 --config
11:virt-manager和kvm虛擬機(jī)熱遷移(共享的網(wǎng)絡(luò)文件系統(tǒng))
冷遷移kvm虛擬機(jī):配置文件,磁盤文件
熱遷移kvm虛擬機(jī):配置文件,nfs共享
1):
yum groupinstall "GNOME Desktop" -y
yum install openssh-askpass -y
yum install tigervnc-server -y
vncpasswd
vncserver :1
vncserver -kill :1
2):kvm虛擬機(jī)熱遷移
1:兩邊的環(huán)境(橋接網(wǎng)卡)
2:實(shí)現(xiàn)共享存儲(chǔ)(nfs)
3:虛擬機(jī)橋接網(wǎng)絡(luò)
4:在線熱遷移