參考於https://yq.aliyun.com/articles/693512python
- KVM --- 全稱是基於內核的虛擬機(Kernel-based Virtual Machine)
- KVM是一個開源軟件,基於內核的虛擬化技術,實際是嵌入系統的一個虛擬化模塊,經過優化內核來使用虛擬技術,該內核模塊使得 Linux 變成了一個Hypervisor,虛擬機使用 Linux 自身的調度器進行管理。
- KVM 是基於虛擬化擴展(Intel VT 或者 AMD-V)的 X86 硬件的開源的 Linux 原生的全虛擬化解決方案。KVM 中,虛擬機被實現爲常規的 Linux 進程,由標準 Linux 調度程序進行調度;虛機的每一個虛擬 CPU 被實現爲一個常規的 Linux 進程。這使得 KMV 可以使用 Linux 內核的已有功能。可是,KVM 自己不執行任何硬件模擬,須要客戶空間程序經過 /dev/kvm 接口設置一個客戶機虛擬服務器的地址空間,向它提供模擬的 I/O,並將它的視頻顯示映射回宿主的顯示屏。目前這個應用程序是 QEMU。
- Guest:客戶機系統,包括CPU(vCPU)、內存、驅動(Console、網卡、I/O 設備驅動等),被 KVM 置於一種受限制的 CPU 模式下運行。
- KVM:運行在內核空間,提供CPU 和內存的虛級化,以及客戶機的 I/O 攔截。Guest 的 I/O 被 KVM 攔截後,交給 QEMU 處理。
- QEMU:修改過的爲 KVM 虛機使用的 QEMU 代碼,運行在用戶空間,提供硬件 I/O 虛擬化,經過IOCTL /dev/kvm 設備和 KVM 交互。
KVM有一個內核模塊叫 kvm.ko,只用於管理虛擬 CPU 和內存。IO 的虛擬化,就交給 Linux 內核和qemu來實現。linux
Libvirt:是 KVM 的管理工具。Libvirt 除了能管理 KVM 這種 Hypervisor,還能管理 Xen,VirtualBox 等。OpenStack 底層也使用 Libvirt。安全
Libvirt 包含 3 個東西:後臺 daemon 程序 libvirtd、API 庫和命令行工具 virsh服務器
- libvirtd是服務程序,接收和處理 API 請求;
- API 庫使得其餘人能夠開發基於 Libvirt 的高級工具,好比 virt-manager,這是個圖形化的 KVM 管理工具,後面咱們也會介紹;
- virsh 是咱們運維工程師常常要用的 KVM 命令行工具。做爲 KVM 和 OpenStack 的實施人員,virsh 和 virt-manager 是必定要會用的。
第一步:安裝前準備工做(確保支持虛擬化)網絡
1. 肯定處理器有 VT grep vmx /proc/cpuinfo (INTEL 芯片 ) grep svm /proc/cpuinfo (AMD 芯片 ) cat /proc/cpuinfo | grep -e vmx -e nx -e svm 不知道芯片的生產廠商則輸入:egrep '(vmx|svm)' /proc/cpuinfo 若是 flags: 裏有 vmx 或者 svm 就說明支持 VT ;若是沒有任何的輸出,說明你的 cpu 不支持,將沒法成功安裝 KVM 虛擬機。 2. 當你硬件自己支持虛擬化,但查詢相應參數無果時,請檢查 BIOS 設定,確認你的 BIOS 中開啓了硬件支持虛擬化的功能! 將以下選項設爲Enabled Intel(R) Virtualization Tech [Enabled]
第二步:yum下載 可用本地鏡像源架構
yum install kvm virt-manager libvirt libvirt-python python-virtinst libvirt-client qemu-kvm qemu-img -y ##其中: kvm #核心套件 virt-manager #圖形化 KVM 管理軟件 libvirt #提供虛擬機與宿主相互通訊的機制 libvirt-python #容許使用 libvirt API python-virtinst #CLI 下建立 KVM 的工具 libvirt-client #提供client訪問kvm服務器的機制,幷包含virsh命令進行;管理和控制 VMs qemu-kvm #提供用戶級 KVM 環境 qemu-img #VMs 磁盤管理
第三步:啓動KVM框架
modprobe kvm #加載 kvm 模塊 lsmod | grep kvm #查看加載成功 systemctl status libvirtd systemctl start libvirtd systemctl enable libvirtd
第四步:檢測運維
virsh list --all #如出現: Id Name State ------------------------------------------------------- 則安裝成功