1. 程式人生 > >雲計算與虛擬機kvm

雲計算與虛擬機kvm

pdf api ovirt ges base model 服務器 air 了解

什麽是雲計算?

資源使用和交付模式,並不是技術,分為公有雲,私有雲,混合雲,依賴虛擬化技術,從而實現彈性擴展

雲計算 iaas pass saas圖層

  • Iaas(基礎設施即服務Infrastructure as a Servic)
  • Paas(平臺即服務Platform-as-a-Service)
  • Saas(軟件即服務Software-as-a-Service)

技術分享圖片

技術分享圖片

KVM

KVM是開源軟件,全稱是kernel-based virtual machine(基於內核的虛擬機)。

是x86架構且硬件支持虛擬化技術(如 intel VT 或 AMD-V)的Linux全虛擬化解決方案。

它包含一個為處理器提供底層虛擬化 可加載的核心模塊kvm.ko(kvm-intel.ko或kvm-AMD.ko)。

KVM還需要一個經過修改的QEMU軟件(qemu-kvm),作為虛擬機上層控制和界面。

KVM能在不改變linux或windows鏡像的情況下同時運行多個虛擬機,(它的意思是多個虛擬機使用同一鏡像)並為每一個虛擬機配置個性化硬件環境(網卡、磁盤、圖形適配器……)。

在主流的Linux內核,如2.6.20以上的內核均已包含了KVM核心

kvm安裝

1.是否支持虛擬化

因特爾 vmx amd svm
[root@localhost ~]# grep -E ‘(vmx|svm)‘ /proc/cpuinfo  

如果是vmware虛擬機,請在配置cpu選擇intel VT-X/EPT或 AMD-V/RVI

如果輸出的信息中有vmx,說明intel處理器支持完全虛擬化。如果顯示svm,說明是AMD的處理器支持虛擬化。

2.安裝kvm和其他虛擬化所需管理軟件包

[root@localhost ~]# yum install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install -y

軟件包名稱介紹:

Kvm:軟件包中含有KVM內核模塊,它在默認linux內核中提供kvm管理程序

Libvirts:安裝虛擬機管理工具,使用virsh等命令來管理和控制虛擬機。

Bridge-utils:設置網絡網卡橋接。

Virt-*:創建、克隆虛擬機命令,以及圖形化管理工具virt-manager

Qemu-img:安裝qemu組件,使用qemu命令來創建磁盤等

3.加載kvm模塊,查看kvm模塊是否被加載

[root@localhost ~]# lsmod | grep kvm
kvm_intel             170181  0 
kvm                   554609  1 kvm_intel
這裏最好reboot,在查看一下,是否隨著系統重啟也是支持的

4.啟動libvirtd,管理虛擬機和其他虛擬化功能

技術分享圖片

包括一個API庫,一個守護程序(libvirtd)和一個命令行工具(virsh),libvirt的主要目標是為各種虛擬化工具提供一套方便、可靠的編程接口,用一種單一的方式管理多種不同的虛擬化提供方式

[root@localhost ~]# systemctl enable libvirtd.service
[root@localhost ~]# systemctl start libvirtd.service 

5.準備想要虛擬出的操作系統,iso鏡像文件 

[root@localhost ~]# dd if=/dev/cdrom of=/opt/CentOS-7.3.iso

6.創建鏡像文件,虛擬機使用的磁盤鏡像文件,實際是個空間

[root@localhost ~]# qemu-img create -f raw /opt/CentOS-7.3-x86_64.raw 8G
Formatting ‘/opt/CentOS-7.3-x86_64.raw‘, fmt=raw size=8589934592 
[root@localhost ~]# ls -lh /opt/CentOS-7.3-x86_64.raw 
-rw-r--r--. 1 root root 8.0G Dec 16 08:02 /opt/CentOS-7.3-x86_64.raw
創建磁盤 -f 文件格式 路徑 磁盤大小

7.創建虛擬機,cpu默認是一個

[root@localhost ~]# virt-install --name CentOS-7.3-x86_64 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.3.iso --disk path=/opt/CentOS-7.3-x86_64.raw 
--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.

8.查看是否監聽5900端口

[root@localhost opt]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      20009/qemu-kvm 

9.vnc 下載客戶端,利用vnc鏈接,你就會看到安裝centos7.3的界面

https://www.realvnc.com/en/connect/download/viewer/macos/

技術分享圖片

10.如果按tab鍵,輸入net.ifnames=0 biosdevname=0 ,網卡就會是eth0

技術分享圖片

宿主機與虛擬機網絡問題

1.宿主機網絡狀態

[root@localhost ~]# ps aux|grep kvm 
就是一個進程
[root@localhost ~]# cat /etc/libvirt/qemu/CentOS-7.3-x86_64-2.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit CentOS-7.3-x86_64-2
or other application using the libvirt API.
-->
這個文件時自動生成的,如果你非要修改它,請virsh edit CentOS-7.3-x86_64-2

[root@localhost ~]# virsh edit CentOS-7.3-x86_64-2
與進程參數是一樣的,這是配置裏面的網絡,默認會多出一個叫virbr0:虛擬網卡

    <interface type=‘network‘>
      <mac address=‘52:54:00:89:e2:81‘/>
      <source network=‘default‘/>
      <model type=‘virtio‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x03‘ function=‘0x0‘/>
    </interface>

[root@localhost ~]# ifconfig
virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:25:22:31  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

默認是nat網絡,我們在下邊會說到如何改成橋接
[root@localhost ~]# iptables -t nat -vnL

2.虛擬機網絡狀態

1.啟動虛擬機
[root@localhost ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     CentOS-7.3-x86_64              shut off
 -     CentOS-7.3-x86_64-2            shut off

[root@localhost ~]# virsh start  CentOS-7.3-x86_64-2
Domain CentOS-7.3-x86_64-2 started

2.vnc繼續鏈接,我們看下虛擬機的網卡
[root@localhost ~]# ifconfig
virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

3.上面的網卡virbr0都是192.168.122.1,為什麽會這樣,是默認dnsmasq起了個dhcp

[root@localhost ~]# ps aux|grep dns 
nobody    10384  0.0  0.0  53884  1112 ?        S    07:37   0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root      10385  0.0  0.0  53856   564 ?        S    07:37   0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root      31126  0.0  0.0 112708   976 pts/2    R+   08:40   0:00 grep --color=auto dns

[root@localhost ~]# cat /var/lib/libvirt/dnsmasq/default.conf 
##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
##    virsh net-edit default
## or other application using the libvirt API.
##
## dnsmasq conf file created by libvirt
strict-order
pid-file=/var/run/libvirt/network/default.pid
except-interface=lo
bind-dynamic
interface=virbr0
dhcp-range=192.168.122.2,192.168.122.254
dhcp-no-override
dhcp-authoritative
dhcp-lease-max=253
dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts

kvm管理

cpu熱修改只能加不能減,不能超過設置的最大數

配置cpu的2種方法
1. 通過啟動時候命令行指定
2. 通過xml指定,可以熱修改

通過xml文件更改
1.將cpu調成最大四個,當前一個
[root@localhost ~]# virsh edit CentOS-7.3-x86_64-2
  <vcpu placement=‘auto‘ current=‘1‘>4</vcpu>

2.重啟生效
[root@localhost ~]# virsh shutdown  CentOS-7.3-x86_64-2
Domain CentOS-7.3-x86_64-2 is being shutdown

[root@localhost ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     CentOS-7.3-x86_64-2              shut off
[root@localhost ~]# virsh start  CentOS-7.3-x86_64-2        
Domain CentOS-7.3-x86_64-2 started
 
3.登錄到虛擬機,查看cpu個數

4.熱修改將cpu設置成2個
[root@localhost ~]# virsh setvcpus  CentOS-7.3-x86_64-2 2 --live

5.再次登陸到虛擬機,查看cpu個數
centos7是自動激活了cpu,如果不是的話需要echo 1 > [root@localhost ~]# cat /sys/devices/system/cpu/cpu0/online 
1

註意熱修改,只能加不能減,也不能超過設置的最大數
[root@localhost ~]# virsh setvcpus  CentOS-7.3-x86_64-2 1 --live
error: unsupported configuration: failed to find appropriate hotpluggable vcpus to reach the desired target vcpu count

內存,熱球技術能加能減,不能超過設置的最大數

1.修改xml
[root@localhost ~]# virsh edit CentOS-7.3-x86_64-2
  <memory unit=‘KiB‘>1048576</memory> 最大內存
  <currentMemory unit=‘KiB‘>1048576</currentMemory> 現內存

2.重啟生效
[root@localhost ~]# virsh shutdown  CentOS-7.3-x86_64-2
Domain CentOS-7.3-x86_64-2 is being shutdown

[root@localhost ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     CentOS-7.3-x86_64-2              shut off
[root@localhost ~]# virsh start  CentOS-7.3-x86_64-2        
Domain CentOS-7.3-x86_64-2 started


3.顯示虛擬機當前內存
[root@localhost ~]# virsh qemu-monitor-command CentOS-7.3-x86_64-2 --hmp --cmd info balloon
balloon: actual=1024

4.修改虛擬機內存,減少
[root@localhost ~]# virsh qemu-monitor-command CentOS-7.3-x86_64-2 --hmp --cmd balloon 600 

顯示虛擬機當前內存
[root@localhost ~]# virsh qemu-monitor-command CentOS-7.3-x86_64-2 --hmp --cmd info balloon
balloon: actual=600

5.修改虛擬機內存,添加
[root@localhost ~]# virsh qemu-monitor-command CentOS-7.3-x86_64-2 --hmp --cmd balloon 1024

顯示虛擬機當前內存
[root@localhost ~]# virsh qemu-monitor-command CentOS-7.3-x86_64-2 --hmp --cmd info balloon
balloon: actual=1024

6.登錄到虛擬機查看
註意,內存也不能超過最大內存  

磁盤

[root@localhost ~]# qemu-img --help
支持如下硬盤格式
Supported formats: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug

1.全鏡像模式
raw,設置多大,就是多大。寫入塊,方便轉換成其他格式,性能最優

2.稀疏模式
qcow2,功能全,壓縮,快照,鏡像,更小存儲空間,設置多大,它也只是用多大
所有磁盤管理,可以使用qemu -img管理  

網絡

1.默認nat,生產最多的是網橋
[root@localhost ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.525400252231       yes             virbr0-nic
                                                        vnet0
2.如果沒有這個命令請安裝,默認有
[root@localhost ~]# yum install bridge-utils

3.添加一個網橋
[root@localhost ~]# brctl addbr br0 

[root@localhost ~]# brctl show         
bridge name     bridge id               STP enabled     interfaces
br0             8000.000000000000       no
virbr0          8000.525400252231       yes             virbr0-nic
                                                        vnet0
														
4.將eth0添加到br0網橋裏,網絡會斷,這個時候xshell,vnc都會斷
[root@localhost ~]# brctl addif br0 eth0 

5.登錄到宿主機,不能通過xshell登錄了,本地去
[root@localhost ~]# brctl show         
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c29672760       no              enth0
virbr0          8000.525400252231       yes             virbr0-nic
                                                        vnet0
bro 和 eth0關聯,eth0有ip,br0沒有

6.我們給br0設置一個ip
[root@localhost ~]# ip addr del dev eth0 192.168.1.110/24
[root@localhost ~]# ifconfig br0 192.168.1.11/24 up

註意,排錯
嘗試xshell鏈接宿主機,如果鏈接不上,在宿主機上排查問題
[root@localhost ~]# ip ro li
[root@localhost ~]#route add default gw 192.168.1.1 網關
[root@localhost ~]#iptables -F

因為斷網的緣故,我們需要一條命令去執行,這樣的話避免去宿主機
[root@localhost ~]# brctl addif br0 eth0 && ip addr del dev eth0 192.168.1.11/24 && ifconfig br0 192.168.1.11/24 up && route add default gw 192.168.1.1 && iptables -F  

virsh命令

查看運行的虛擬機
[root@localhost ~]# virsh list
 Id    Name                           State
----------------------------------------------------

查看所有狀態的虛擬機
[root@localhost ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     CentOS-7.3-x86_64              shut off
 -     CentOS-7.3-x86_64-2            shut off
 
停止虛擬機
[root@localhost ~]# virsh shutdown  CentOS-7.3-x86_64-2
Domain CentOS-7.3-x86_64-2 is being shutdown

[root@localhost ~]# virsh list --all                  
 Id    Name                           State
----------------------------------------------------
 -     CentOS-7.3-x86_64              shut off
 -     CentOS-7.3-x86_64-2            shut off

啟動虛擬機
[root@localhost ~]# virsh start CentOS-7.3-x86_64-2
Domain CentOS-7.3-x86_64-2 started

[root@localhost ~]# virsh list --all               
 Id    Name                           State
----------------------------------------------------
 2     CentOS-7.3-x86_64-2            running
 -     CentOS-7.3-x86_64              shut off  
  

拔電源停止虛擬機,不會考慮友好的退出
[root@localhost ~]# virsh destroy  CentOS-7.3-x86_64-2
Domain CentOS-7.3-x86_64-2 destroyed

[root@localhost ~]# virsh list --all                  
 Id    Name                           State
----------------------------------------------------
 -     CentOS-7.3-x86_64              shut off
 -     CentOS-7.3-x86_64-2            shut off

終止掛起狀態,可恢復
[root@localhost ~]# virsh suspend CentOS-7.3-x86_64-2
Domain CentOS-7.3-x86_64-2 suspended

[root@localhost ~]# virsh list --all                 
 Id    Name                           State
----------------------------------------------------
 3     CentOS-7.3-x86_64-2            paused
 -     CentOS-7.3-x86_64              shut off

恢復掛機狀態
[root@localhost ~]# virsh resume CentOS-7.3-x86_64-2
Domain CentOS-7.3-x86_64-2 resumed

[root@localhost ~]# virsh list --all                
 Id    Name                           State
----------------------------------------------------
 3     CentOS-7.3-x86_64-2            running
 -     CentOS-7.3-x86_64              shut off

黑名單,禁止操作
virsh undefine 永久刪除
但是如果你提前備份一個xml文件,可以在建起來  

kvm優化

不建議去做,很多centos7已經優化好了,了解即可  

cpu

技術分享圖片

cpu有四個形態,用戶態r3到內核態r0就是上下文切換,而kvm是全虛擬化,也就是虛擬機裏面也有內核態到用戶態轉化,再到宿主機。而cpu有3級緩存,會存在miss現象,所以我們可以將kvm進程綁定在一個cpu上

1.xml文件
2.taskset cpu親和力綁定進程到固定的cpu,減少cache miss
taskset -cp 1,2 pid,
缺陷沒法動態遷移了

Intel vt-x/EPT AMD-v/RVI技術 cpu替你上下文硬件加速,默認開啟

內存

內存尋址
虛擬機的虛擬內存 -> 虛擬機的物理內存 -> 宿主機虛擬內存 -> 宿主機物理內存

1.影子頁表

技術分享圖片

轉化過程也是需要開辟內存空間

2.EPT技術

因特爾通過cpu寄存器,默認打開的

3.進程ksm,內存合並,相同的合並起來,默認開啟的

[root@localhost ~]# ps -aux|grep ksm
root         36  0.0  0.0      0     0 ?        SN   06:25   0:00 [ksmd]

4.大頁內存也是開啟的

[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled 
[always] madvise never

khugepaged掃描內存地址連續的合並到一起,將4k合並2M的
[root@localhost ~]# ps -aux|grep kh
root         20  0.0  0.0      0     0 ?        S    07:36   0:00 [khungtaskd]
root         38  0.0  0.0      0     0 ?        SN   07:36   0:00 [khugepaged]  

i/o  

io調度算法

[root@localhost ~]# dmesg | grep -i scheduler
[    2.196112] io scheduler noop registered
[    2.196115] io scheduler deadline registered (default)
[    2.196178] io scheduler cfq registered
[    2.196181] io scheduler mq-deadline registered
[    2.196184] io scheduler kyber registered
[root@localhost ~]# cat /sys/block/sda/queue/scheduler 
noop [deadline] cfq 
[root@localhost ~]# echo cfg > /sys/block/sda/queue/scheduler ^C
[root@localhost ~]# elevator = cfg 永久修改

1,Noop算法

Noop調度算法是內核中最簡單的IO調度算法。Noop調度算法也叫作電梯調度算法,它將IO請求放入到一個FIFO隊列中,然後逐個執行這些IO請求,當然對於一些在磁盤上連續的IO請求,Noop算法會適當做一些合並。這個調度算法特別適合那些不希望調度器重新組織IO請求順序的應用。

這種調度算法在以下場景中優勢比較明顯:

1)在IO調度器下方有更加智能的IO調度設備。如果您的Block Device Drivers是Raid,或者SAN,NAS等存儲設備,這些設備會更好地組織IO請求,不用IO調度器去做額外的調度工作;

2)上層的應用程序比IO調度器更懂底層設備。或者說上層應用程序到達IO調度器的IO請求已經是它經過精心優化的,那麽IO調度器就不需要畫蛇添足,只需要按序執行上層傳達下來的IO請求即可。

3)對於一些非旋轉磁頭氏的存儲設備,使用Noop的效果更好。因為對於旋轉磁頭式的磁盤來說,IO調度器的請求重組要花費一定的CPU時間,但是對於SSD磁盤來說,這些重組IO請求的CPU時間可以節省下來,因為SSD提供了更智能的請求調度算法,不需要內核去畫蛇添足。這篇文章提及了SSD中使用Noop效果會更好。

2,Deadline算法

Deadline算法的核心在於保證每個IO請求在一定的時間內一定要被服務到,以此來避免某個請求饑餓。

Deadline算法中引入了四個隊列,這四個隊列可以分為兩類,每一類都由讀和寫兩類隊列組成,一類隊列用來對請求按起始扇區序號進行排序,通過紅黑樹來組織,稱為sort_list;另一類對請求按它們的生成時間進行排序,由鏈表來組織,稱為fifo_list。每當確定了一個傳輸方向(讀或寫),那麽將會從相應的sort_list中將一批連續請求dispatch到requst_queue的請求隊列裏,具體的數目由fifo_batch來確定。只有下面三種情況才會導致一次批量傳輸的結束:

1)對應的sort_list中已經沒有請求了

2)下一個請求的扇區不滿足遞增的要求

3)上一個請求已經是批量傳輸的最後一個請求了。

所有的請求在生成時都會被賦上一個期限值(根據jiffies),並按期限值排序在fifo_list中,讀請求的期限時長默認為為500ms,寫請求的期限時長默認為5s,可以看出內核對讀請求是十分偏心的,其實不僅如此,在deadline調度器中,還定義了一個starved和writes_starved,writes_starved默認為2,可以理解為寫請求的饑餓線,內核總是優先處理讀請求,starved表明當前處理的讀請求批數,只有starved超過了writes_starved後,才會去考慮寫請求。因此,假如一個寫請求的期限已經超過,該請求也不一定會被立刻響應,因為讀請求的batch還沒處理完,即使處理完,也必須等到starved超過writes_starved才有機會被響應。為什麽內核會偏袒讀請求?這是從整體性能上進行考慮的。讀請求和應用程序的關系是同步的,因為應用程序要等待讀取的內容完畢,才能進行下一步工作,因此讀請求會阻塞進程,而寫請求則不一樣,應用程序發出寫請求後,內存的內容何時寫入塊設備對程序的影響並不大,所以調度器會優先處理讀請求。

默認情況下,讀請求的超時時間是500ms,寫請求的超時時間是5s。

這篇文章說在一些多線程應用下,Deadline算法比CFQ算法好。這篇文章說在一些數據庫應用下,Deadline算法比CFQ算法好。

3,Anticipatory算法

Anticipatory算法的核心是局部性原理,它期望一個進程昨晚一次IO請求後還會繼續在此處做IO請求。在IO操作中,有一種現象叫“假空閑”(Deceptive idleness),它的意思是一個進程在剛剛做完一波讀操作後,看似是空閑了,不讀了,但是實際上它是在處理這些數據,處理完這些數據之後,它還會接著讀,這個時候如果IO調度器去處理另外一個進程的請求,那麽當原來的假空閑進程的下一個請求來的時候,磁頭又得seek到剛才的位置,這樣大大增加了尋道時間和磁頭旋轉時間。所以,Anticipatory算法會在一個讀請求做完後,再等待一定時間t(通常是6ms),如果6ms內,這個進程上還有讀請求過來,那麽我繼續服務,否則,處理下一個進程的讀寫請求。

在一些場景下,Antocipatory算法會有非常有效的性能提升。這篇文章有說,這篇文章也有一份評測。

值得一提的是,Anticipatory算法從Linux 2.6.33版本後,就被移除了,因為CFQ通過配置也能達到Anticipatory算法的效果。

4,CFQ算法

CFQ(Completely Fair Queuing)算法,顧名思義,絕對公平算法。它試圖為競爭塊設備使用權的所有進程分配一個請求隊列和一個時間片,在調度器分配給進程的時間片內,進程可以將其讀寫請求發送給底層塊設備,當進程的時間片消耗完,進程的請求隊列將被掛起,等待調度。 每個進程的時間片和每個進程的隊列長度取決於進程的IO優先級,每個進程都會有一個IO優先級,CFQ調度器將會將其作為考慮的因素之一,來確定該進程的請求隊列何時可以獲取塊設備的使用權。IO優先級從高到低可以分為三大類:RT(real time),BE(best try),IDLE(idle),其中RTBE又可以再劃分為8個子優先級。實際上,我們已經知道CFQ調度器的公平是針對於進程而言的,而只有同步請求(readsyn write)才是針對進程而存在的,他們會放入進程自身的請求隊列,而所有同優先級的異步請求,無論來自於哪個進程,都會被放入公共的隊列,異步請求的隊列總共有8(RT)+8(BE)+1(IDLE)=17個。

從Linux 2.6.18起,CFQ作為默認的IO調度算法。

對於通用的服務器來說,CFQ是較好的選擇。

技術分享圖片

越外層越安全,但是效率低

鏡像制作  

kvm管理平臺

OpenStack

CloudStack cloud.com公司-Ctrix-Apache基金會

OpenNebula

oVirt RHEV的開源版本
管理端+客戶端組成 oVirt Engine oVirt 主機/節點
對應vm vCenter ESXi

https://www.ovirt.org/嘗試安裝管理平臺查看

  

  

  

  

  

  

 

  

  

雲計算與虛擬機kvm