KVM介紹
KVM(Kernel-Based Virtual Machines)是一個基於Linux內核的虛擬化技術, 可以直接將Linux內核轉換爲Hypervisor(系統管理程序)從而使得Linux內核能夠直接管理虛擬機, 直接調用Linux內核中的內存管理、進程管理子系統來管理虛擬機。
KVM是基於虛擬化擴展(Intel VT 或 AMD-V)的X86硬件,是Linux完全原生的全虛擬化解決方案。部分的準虛擬化支持,主要是通過準虛擬網絡驅動程序的形式用於Linux和Windows客戶機系統的。
KVM架構
在KVM架構中,虛擬機實現爲常規的Linux進程,由標準Linux調度程序進行調度。事實上,每個虛擬CPU顯示爲一個常規的Linux進程。這使KVM能夠享受Linux內核的所有功能。
在上圖中,左側部分是一個標準的Linux操作系統,可以是RHEL、Fedora、Ubuntu等。KVM內核模塊在運行時按需加載進入內核空間運行。KVM本身不執行任何模擬,需要用戶空間程序QEMU通過/dev/kvm接口設置一個客戶機虛擬服務器的地址空間。向它提供模擬的I/O,並將它的視頻顯示映射回宿主的顯示屏。
KVM加上QEMU後就是完整意義上的服務器虛擬化
- KVM:運行在內核空間,提供CPU 和內存的虛級化,以及客戶機的 I/O 攔截。Guest 的 I/O 被 KVM 攔截後,交給 QEMU 處理。
- QEMU:運行在用戶空間,提供硬件 I/O (磁盤,網卡,顯卡等)虛擬化,QEMU將KVM整合了進來,通過IOCTL調用 /dev/kvm,從而將CPU指令的部分交給內核模塊來做。
KVM技術棧
- libvirt:操作和管理KVM虛機的虛擬化 API,使用 C 語言編寫,可以由 Python,Ruby, Perl, PHP, Java 等語言調用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
- qemu-kvm:主要作用是實現進程管理
- qemu-img:用來管理磁盤映像文件
- Virsh:基於 libvirt 的 命令行工具 (CLI)
- Virt-Manager:基於 libvirt 的 GUI 工具
安裝KVM
1、查看CPU是否支持KVM
grep -Eo --color=auto "(vmx|svm)" /proc/cpuinfo
可以看到grep出來的內容,就說明支持kvm.
2、通過yum安裝
yum install libvirt virt-install qemu-kvm qemu-kvm-tools -y
3、啓動虛擬機管理工具libvirt並設置開機啓動
systemctl start libvirtd.service && systemctl enable libvirtd.service
通過ifconfig命令可以看到virbr0橋接網卡
4、創建虛擬機
4.0 關閉selinux並設置防火牆
1. vim /etc/selinux/config -> selinux=disabled
2. firewall-cmd --zone=public --add-port=5900/tcp --permanent
4.1 使用qemu命令創建一個10G的硬盤,硬盤的名稱爲:centos7
[root@localhost iso]# qemu-img create -f raw /data/centos7.raw 10G
Formatting '/data/centos7.raw', fmt=raw size=10737418240
4.2 使用virt-install安裝虛擬機
[root@localhost iso]# virt-install --virt-type kvm --name centos7 --ram 1024 --cdrom=/data/iso/CentOS-7-x86_64-Minimal-1708.iso --disk path=/data/centos7.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
Starting install...
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
參數解釋:
--name 虛擬機名字
--ram 分配給虛擬機的內存,單位MB
--vcpus 分配給虛擬機的cpu個數
--cdrom 指定鏡像的全路徑
--disk 指定虛擬機img文件路徑,如果虛擬機使用lvm分區,這裏就指向到lvm的分區就行
--network
default 即nat,指定爲nat網絡地址轉換
bridge 指定橋接網卡
model 網卡模式
--graphics圖形參數
4.3 遠程連接進行安裝操作
這裏我安裝的虛擬機名字爲centos7,接下來查看其vnc端口:
ps aux | grep qemu | grep centos7
最小爲5900,那麼這裏指的就是5900這個端口。接下來通過在windows下使用vnc-viewer來連接192.168.189.133:5900,並輸入設置的密碼,即可進行安裝。安裝步驟和我們平時安裝操作系統的方法一樣
4.4 通過virsh管理虛擬機
#查看已安裝的虛擬機
virsh list --all
#啓動虛擬機
virsh start centos7
#關閉虛擬機
virsh shutdown centos7
#查看配置文件
/etc/libvirt/qemu/這個目錄下保存已經安裝虛擬機的信息。
#刪除虛擬機
virsh undefine centos7