虛擬化技術的分類:
1,模擬:Emulation
? Qemu,PearPC,Bochs
2,完全虛擬化:Full Virtualization,Native Virtualization
? HVM:hardware virtualization machine
? vmware workstation,virtualBox,Parallels desktop(mac),KVM,xen
3,半虛擬化:pava-virtualization
? 必須修改guestOS的內核,讓它知道自己不是允許在物理機器刪上,而是允許在虛擬環境中,
? 使用hypercall呼叫物理機的cpu
? xen,UML(user-mode Linux)
4,容器虛擬化
? docker,openvz,LXC(linux container),libcontainer,virtuozzo,linux V Server
5,庫級別虛擬化
? wine
xen
劍橋大學開發的開源vmm(virtual machine monitor),虛擬機監視器,
xen是安裝在物理機器上的,
xen只控制物理機器的cpu和記憶體,I/O控制,交給了在它上面安裝的第一個虛擬內核(叫dom0),處理dom0的虛擬機叫:domU,在domU上的I/O操作,都是直接發給dom0,dom0再去操作硬體控制器,domU上的I/O介面叫frontend,dom0上的I/O叫backend,
組成部分:
-
xen hypervisor
分配cpu,memory,interrupt
-
dom0:
特權域,I/O分配
-
網路設備
net-front(guestOS),net-backend(dom0)
-
塊設備
block-front(guestOS),block-backend(dom0)
linux kernel:
? 2.6.37開始支持允許dom0
? 3.0對關鍵特性進行了優化
提供管理domu的工具:
? 實作對虛擬機的添加,啟動,快照,停止,洗掉等類似在,virtualBox上的操作,
-
-
domU:非特權域,根據虛擬化方式,有多種型別
-
PV:半虛擬化
-
HVM:硬體提供虛擬化支持,有的cpu提供虛擬化支持
-
PV ON HVM
-
xen的PV技術
不依賴于CPU的HVM特性,但要求guestOS的內核要做出修改,以達到知曉自己不是允許在物理機上,
運行于domu上的os:linux(2.6.24+),Netbsd,Freebsd,openSolaris
xen的HVM技術
依賴于Intel VT或AMD的AMD-V,還有依賴Qemu來模擬I/O設備
運行于domu上的os:幾乎所有支持x86平臺的
PV on HVM
cpu為HVM模式運行,I/O設備為PV模式運行,
運行于domu上的os:只要OS能驅動PV介面型別的IO設備(net-front,block-front)
xen的pv架構

xen的工具堆疊

- xm/xend:在xen hypervisor的dom0中要啟動xend服務,是最早的控制臺,好像已經被棄用了,
- xl:不需要啟動xend服務,是輕量級的
下圖是xm和xl的對比:

-
xe/xapi:提供了多xen管理的api,因此多用于cloud環境,
上面的cloud環境:
- xen server(也是linux內核)
- XCP(xen cloud platform)
-
xenstore:為各個domainU提供的共享資訊存盤空間,有層級結構的名稱空間,位于Dom0
統一的虛擬化管理工具
背景:虛擬化技術有xen,kvm,qemu等,每個虛擬化鏟平都有自己的管理工具,學習這么多的管理工具太費勁了,所有就出現了一個救世主,virsh,它可以管理下面的3個虛擬化產品,只用一套命令即可,
virsh/libvirt:用python開發的影像化管理工具,類似VMware的圖形界面,對應用戶很友好,但是它必須啟動libvirtd守護行程,也挺消耗資源,

RHCL對Xen的支持:
-
RHCL 5.7:默認的虛擬化技術是xen
-
RHCL 6+:僅支持kvm(紅帽收購了以色列的kvm公司)
Dom0上無法安裝centos6+
DomU上可以安裝centos6+
如何在centos6+上安裝xen?
1,編譯3.0以上版本的內核,啟動對Dom0的支持
2,編譯xen程式
可以使用制作好的程式包專案:
- xen4centos:xen官方專門為centos制作的rpm包
- xen made easy
在Centos6.10上安裝xen
1,去清華的yum源上找到xen的rpm下載網址,自己做一個repo檔案(檔案名為xen4.repo),指向那個地址即可
xen4.repo內容:注意url不要寫錯,
[xen4centos]
name=xen4 for centos 6
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/6.10/virt/x86_64/xen-410/
gpgcheck=0
2,yum install xen
由于要更新內核,所以有點慢,成功后,/boot目錄下多了下面的檔案,
# ls /boot/xen*
/boot/xen-4.10.4.36.g6cb1cb9c63-1.el6.config /boot/xen-4.10.4.36.g6cb1cb9c63-1.el6.gz /boot/xen.gz
3,修改/etc/grub.conf檔案
修改前:
kernel /vmlinuz-4.9.206-36.el6.x86_64 ro root=/dev/mapper/vg_c610-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=\
en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_c610/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_c610/lv_root rd_NO_DM rh\
gb quiet
initrd /initramfs-4.9.206-36.el6.x86_64.img
修改后:
kernel /xen.gz dom0_mem=1024M cpufrep=xen dom0_max_vcpus=2 dom0_vcpus_pin
module /vmlinuz-4.9.206-36.el6.x86_64 ro root=/dev/mapper/vg_c610-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=\
en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_c610/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_c610/lv_root rd_NO_DM rh\
gb quiet
module /initramfs-4.9.206-36.el6.x86_64.img
修改內容:
-
加了一行:
kernel /xen.gz dom0_mem=1024M cpufrep=xen dom0_max_vcpus=2 dom0_vcpus_pin宣告說kernel已經不是centos了,而是我xen了,原來的kernel降級成module了,
xen的命令列引數說明的官方檔案 -
把原來的2行,其中的第一行的kernel替換成module;第二行的initrd替換成module,
修改后的/etc/grub.conf檔案
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vg_c610-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (4.9.206-36.el6.x86_64)
root (hd0,0)
kernel /xen.gz dom0_mem=1024M cpufrep=xen dom0_max_vcpus=2 dom0_vcpus_pin
module /vmlinuz-4.9.206-36.el6.x86_64 ro root=/dev/mapper/vg_c610-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=\
en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_c610/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_c610/lv_root rd_NO_DM rh\
gb quiet
module /initramfs-4.9.206-36.el6.x86_64.img
title CentOS 6 (2.6.32-754.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=/dev/mapper/vg_c610-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=\
en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_c610/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_c610/lv_root rd_NO_DM rh\
gb quiet
initrd /initramfs-2.6.32-754.el6.x86_64.img
4,重啟系統
5,確認結果
# uname -r
4.9.206-36.el6.x86_64
# xl list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1024 2 r----- 28.2
發現內核升級了,并且在dom0上安裝了centos,分配的記憶體是1024M,分配的cpu是2個,
正確的做法是在物理機器上安裝xen,然后在xen上安裝dom0和其他domu,
- 安裝xen之前的的學習環境是:物理機器上裝的是window,在window上裝的virtualbox,在virtualBox上裝的是centos6(內核是2.6.32-754.el6.x86_64),
- 安裝xen之后的的學習環境是:物理機器上裝的是window,在window上裝的virtualbox,在virtualBox上裝的是xen,在xen上裝的dom0,dom0里的系統是centos6(內核是4.9.206-36.el6.x86_64),
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/43574.html
標籤:其他
上一篇:使用Azure CLI創建虛擬機
下一篇:(ubuntu系統)安裝opencv-python后,報錯libSM.so.6: cannot open shared object file: No such file or directory
