一、虛擬化
虛擬化是指計算機元件在虛擬的基礎上而不是真實的基礎上運行。虛擬化技術可以擴大硬件的容量,簡化軟件的重新配置過程。CPU的虛擬化技術可以單CPU模 擬多CPU並行,允許一個平台同時運行多個操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。
物理機我們一般稱為宿主機(Host),宿主機上面的虛擬機稱為客戶機(Guest)。那么 Host 是如何將自己的硬件資源虛擬化,並提供給 Guest 使用的呢?這個主要是通過一個叫做 Hypervisor 的程序實現的。根據 Hypervisor 的實現方式和所處的位置,虛擬化又分為兩種: 1型虛擬化和2型虛擬化
1型虛擬化
Hypervisor 直接安裝在物理機上,多個虛擬機在 Hypervisor 上運行。這種虛擬化中 Hypervisor 直接管理調用硬件資源,不需要底層操作系統,也可以理解為 Hypervisor 被做成了一個很薄的操作系統。 這種方案的性能處於主機虛擬化與操作系統虛 擬化之間 。代表是VMware ESX Server、Citrix XenServer 和 Microsoft Hyper-V,Linux KVM。
2型虛擬化
物理機上首先安裝常規的操作系統,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作為 OS 上的一個程序模塊運行,並對管理虛擬機進行管理。KVM、VirtualBox 和 VMWare Workstation 都屬於這個類型。
二、kvm架構
kvm是一種基於內核的虛擬化(屬於2型虛擬化),主要分為兩大部分
1、位於內核空間的的kvm.io:主要負責虛擬機的虛擬CPU也就是vCPU ,還有就是對虛擬內存進行管理和調度
2、QEMU-KVM:qemu運行在用戶空間,kvm運行在內核空間,兩者通過/dev/kvm打交道。這個QEMU-KVM就是通過修改QEMU代碼而得出的專門用來創建和管理虛擬機的管理工具,是為了KVM能更好的和內核打交道。VM 運行期間,QEMU 會通過 KVM 模塊提供的系統調用進入內核,由 KVM 負責將虛擬機置於處理的特殊模式運行。為一個虛擬機提供的是io等設備。
三、kvm實現示例
實驗環境:VMware Workstation 10、centos7(64位)
前提:(需要開啟VMware 創建的虛擬機支持虛擬化,如下圖紅框所示)
1、查看系統是否支持
看到“vmx”表示支持
2、安裝kvm相關包
yum install qemu-kvm libvirt virt-install virt-manager bridge-utils
systemctl start libvirtd
- qemu-kvm ----模擬計算機的工具,為KVM虛擬機提供IO設備
- libvirt ----用於管理 KVM 的Hypervisor
- virt-install ----命令行的虛擬機創建安裝工具
- bridge-utils ----網橋工具
- virt-manager 是 KVM 圖形化管理工具
3、在宿主機創建用於虛擬化的網橋
1)增加 /etc/sysconfig/network-scripts/ifcfg-br0
2)找到本機現在ip使用的網卡,本例中為 /etc/sysconfig/network-scripts/ifcfg-eno16777736
3)重啟網卡
systemctl restart network
可以看到ip,已經跑到br0上去了。
4、在宿主機創建虛擬機
1)下載測試鏡像:cirros-0.3.4-x86_64-disk.img ,從網址:http://download.cirros-cloud.net
2) 創建安裝磁盤
[root@localhost ~]# qemu-img create -f qcow2 /var/kvm-images/disk-10g.img 10G Formatting '/var/kvm-images/disk-10g.img', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
3)安裝虛擬機
[root@localhost ~]# virt-install --name boshen-vm --virt-type kvm --vcpus 1 --ram 512 -c /var/kvm-images/cirros-0.3.4-x86_64-disk.img --network bridge=br0 --noautoconsole --graphics none --console pty,target_type=serial --os-type=linux --os-variant=rhel7 --disk path=/var/kvm-images/disk-10g.img,size=10,format=qcow2 Starting install... Domain installation still in progress. You can reconnect to the console to complete the installation process.
5、虛擬機基本管理命令
1)查看虛擬機列表
[root@localhost ~]# virsh list Id Name State ---------------------------------------------------- 2 boshen-vm running
2)進入虛擬機
virsh console boshen-vm
3)關閉虛擬機
virsh shutdown boshen-vm
4)強制關閉虛擬機
virsh destroy boshen-vm
[root@localhost ~]# virsh list --all
Id Name State
----------------------------------------------------
- boshen-vm shut off
5)啟動虛擬機
[root@localhost ~]# virsh start boshen-vm
Domain boshen-vm started
[root@localhost ~]# virsh list Id Name State ---------------------------------------------------- 5 boshen-vm running
6)刪除虛擬機
virsh destroy boshen-vm
virsh undefine boshen-vm
7)查看虛擬機硬盤
[root@localhost ~]# qemu-img info /var/kvm-images/disk-10g.img image: /var/kvm-images/disk-10g.img file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 196K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false
8)添加硬盤
首先創建一塊新的硬盤:disk-5g.img
[root@localhost ~]# qemu-img create -f qcow2 /var/kvm-images/disk-5g.img 5G Formatting '/var/kvm-images/disk-5g.img', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off
然后為虛擬機添加硬盤
[root@localhost ~]# virsh attach-disk boshen-vm /var/kvm-images/disk-5g.img vdb --live --cache=none --subdriver=qcow2 Disk attached successfully
9)卸載硬盤
[root@localhost ~]# virsh detach-disk boshen-vm --target vdb
Disk detached successfully