KVM從入門到關門

虛擬化概念

虛擬化是一種資源管理技術,它是將計算機應硬件資源抽象、轉換後呈現出來,它打破了實體結構空間不可切割的障礙,使用戶可以比原本的組態以更好的方式來使用這些資源,常用的應用虛擬化方式有:
完全虛擬化:虛擬機模擬完整的底層硬件環境和特權指令的執行過程。代表軟件有VMware Workstation、VirtualBox、qemu等
硬件輔助虛擬化:利用硬件輔助,比如Intel的intel-VT和AMD的AMD-V,來支持和處理敏感指令來實現完全虛擬化的功能。代表軟件有VMware Workstation、Xen和本章所講的KVM。
操作系統級虛擬化:內核通過創建多個虛擬機的操作系統實例來隔離不同的進程。比如Docker以及其它相關的容器技術。

爲什麼要使用虛擬化

  1. 提高現有資源的利用率。通過整合服務器資源,將共用的基礎架構資源聚合起來,它打破了傳統的“一臺服務器一個應用程序”模式。
  2. 提高桌面的可管理性和安全性。目前大多數計算機都支持部署、管理和安全監視安全桌面環境,無論否能連接到網絡,用戶都可以在本地或遠程的方式對這種環境進行訪問。
  3. 提高硬件和應用程序的可用性,進而提高業務連續性。可安全地實現備份、遷移整個虛擬環境下而不會出現業務中斷。
  4. 通過縮減物理基礎架構和提高服務器/管理員比率,降低數據中心成本:由於服務及相關IT硬件更少,因此減少了佔地空間,也減少了電力和散熱需求。
  5. 實現了運營靈活性 :由於採用動態資源管理,加快了服務器部署並改進了桌面和應用程序部署,因此可響應市場的變化。

KVM安裝以及使用

KVM全稱爲kernel-based Virtual Machine,即基於內核的虛擬化,它不需要額外使用專門的內核,因此性能相較於早之前的Xen性能更好,兼容性更強。
下載kvm軟件

yum install -y libvirt virt-* qemu-kvm

安裝一臺kvm虛擬機

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 2048 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=20 --cdrom /opt/rhel-server-7.3-x86_64-dvd.iso  --network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

各參數含義:

--virt-type   #虛擬化的類型
--os-type=   #系統類型
--os-variant  #系統版本
--name    #虛擬機的名稱
--memory   #指定內存大小
--disk    #磁盤格式、大小等相關配置。format=row|qcow2,其中row格式佔用空間較大,不支持快照功能,但性能較好,不方便傳輸;qcow2佔用空間小,支持快照,性能相對row差,方便傳輸
--cdrom  #系統鏡像路徑
--network=default  #default爲nat模式
--graphics vnc     #需要下載vnc軟件對kvm虛擬機安裝操作系統

virsh常用命令

list 列出正在運行的虛擬機 ,list --all列出所有
start 開啓虛擬機
shutdown 關閉虛擬機
destroy 暴力關機
dumpxml 導出配置文件 。virsh dumpxml centos7 >/opt/centos7.xml
undefine 移除虛擬機,如果未開機狀態執行shutdown會將虛擬機的配置文件刪除導致虛擬機也被刪除,建議destroy後在undefine
define 導入配置文件。virsh define /opt/centos7.xml
edit 自帶語法檢查的編輯,virsh edit web
domrename 對虛擬機名稱重命名。virsh domrename centos7 web
suspend 將虛擬機設爲掛起狀態
resume 恢復虛擬機狀態
vncdisplay 顯示虛擬機的vnc端口
  • kvm開啓console控制檯登錄:
grubby --update-kernel=ALL --args="console=ttyS0"
reboot

磁盤格式轉換

qemu-img info test.row #查看磁盤信息
qemu-create -f row oldboy.qcow2 10G  #創建一塊qcow2格式的虛擬磁盤
qemu-img convert -f row(原格式) -O qcow2(輸出格式) test.row(源磁盤路徑文件) test.qcow2  #row轉qcow ,virsh edit web 改type處和source file處,重啓kvm虛擬機生效

快照管理

virsh snapshot-create web
virsh snapshot-list web
virsh snapshot-revert web --snapshotname 1590506570
virsh snapshot-delete web --snapshotname 1590506570

row格式佔用空間較大,不支持快照功能,但性能較好,不方便傳輸;qcow2佔用空間小,支持快照,性能相對row差,方便傳輸。

虛擬機克隆

1.創建完整克隆
virt-clone --auto-clone -o web -n web2
##也可以拷貝磁盤文件在生成一份配置文件(注意:如果原來的磁盤文件拍有快照可能導致克隆後的虛擬機起不來)
copy web.raw web2.raw
<name>web2</name>
刪掉<uuid></uuid>這行,讓它重新生成新的UUID。也可以用uuid-gen -r直接生成
刪掉<mac address=''/>這行,會自動生成新的mac地址
2.創建連接克隆
##基於源磁盤文件,創建鏈接磁盤文件
qemu-img create -f qcow2 -b web.qcow2 web2.qcow2
virt-install --virt-type kvm --os-type=linux --os-variant=rhel7 --name web2 --memory=1024 --vcpus 1 --disk /opt/web2.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

虛擬機的網絡連接模式

NAT模式(網絡地址轉換)原理圖:
在這裏插入圖片描述
在NAT模式下除了宿主機以外其餘的任何網絡是不能與kvm虛擬機通信的,如果我們在kvm虛擬機上部署了希望用戶能夠訪問的服務,那麼此時就需要用到橋接的模式,橋接模式原理圖如下:
在這裏插入圖片描述
配置橋接模式:

#創建一塊用於橋接的網卡br0
virsh iface-bridge eth0 br0
virt-install --virt-type kvm --os-type=linux --os-variant=rhel7 --name web2 --memory=1024 --vcpus 1 --disk /opt/web2.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
#取消橋接網卡配置
virsh iface-unbridge br0

把之前不是橋接模式的kvm虛擬機配置成橋接模式只需在配置文件對應地方修改爲:

<interface type='bridge'>
<mac address='52:54:00:82:70:a9'/>
 <source  bridge='br0'/>

然後重啓虛擬機即可。

磁盤熱添加、擴容

#創建一塊虛擬磁盤
qemu-img create -f qcow2 c7.qcow2 5G
#臨時掛載 [永久掛載]
virsh attach-disk centos7  c7.qcow2 vdb --subdriver qcow2  [--config]
格式化之後mount上去即可使用
#擴容
umount /dev/vdb /opt   //擴容之前避免數據損壞先卸載
qemu-img resize c7.qcow2 +10G  
mount /dev/vdb /opt     //重新掛載
xfs_growfs /opt      //生效
#對根分區擴容:先刪除原來分區的分區表在重新分區,然後重啓,最後xfs_growfs /即可
fdisk /dev/vda 
reboot
xfs_growfs /

熱添加網卡

virsh attach-interface web04 --type bridge --source br0 --model virtio 
detach-interface web04 --type bridge --mac 52:54:00:67:21:cf

熱添加內存

virt-install --virt-type kvm --os-type=linux --os-variant=rhel7 --name web2 --memory=1024,maxmemory=2048 --vcpus 1 --disk /opt/web2.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
#臨時生效
setmem web2 1024 --live
#永久生效
setmem web2 1024 --config

熱添加CPU

virt-install --virt-type kvm --os-type=linux --os-variant=rhel7 --name web2 --memory=1024,maxmemory=2048 --vcpus 1,maxvcpus=3 --disk /opt/web2.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
setvcpus web2 3 --live
setvcpus web2 3 --config

kvm熱遷移

kvm虛擬機主要分爲兩部分:磁盤文件和配置文件,通常情況下磁盤文件是越大的遷移所花費的時間就越長,要實現快速遷移kvm虛擬機可以通過共享存儲(文件系統)來實現,只需要把虛擬機的磁盤文件放在共享目錄上再掛載在我們指定的–disk路徑即可。

#掛載
mount -t nfs 192.168.1.20:/data /opt
cp web2.qcow2 /opt/
#從磁盤啓動
virt-install --virt-type kvm --os-type=linux --os-variant=rhel7 --name web2 --memory=1024,maxmemory=2048 --vcpus 1,maxvcpus=3 --disk /opt/web2.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
#遷移
virsh migrate --live web2 qemu+ssh://192.168.1.20/system --unsafe
#圖形界面操作
yum install -y "GNOME Desktop" tigervnc-server virt-manager
#啓動vnc服務
vncserver:1

esxi虛擬機遷移至kvm

先在esxi導出虛擬機爲ova格式再上傳至kvm宿主機。然後:
virt-v2v -i ova test.ova(本地的) -o local -os /v2v -of qcow2
mv /v2v/test-sda /v2v/test.qcow2
#執行安裝
virt-install --virt-type kvm --os-type=linux --os-variant=rhel7 --name web2 --memory=1024,maxmemory=2048 --vcpus 1,maxvcpus=3 --disk /opt/web2.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章