虛擬化技術xen的簡介和安裝

虛擬化技術的分類:

1,模擬:Emulationhtml

​ Qemu,PearPC,Bochspython

2,徹底虛擬化:Full Virtualization,Native Virtualizationlinux

​ HVM:hardware virtualization machinec++

​ vmware workstation,virtualBox,Parallels desktop(mac),KVM,xendocker

3,半虛擬化:pava-virtualizationshell

​ 必須修改guestOS的內核,讓它知道本身不是容許在物理機器刪上,而是容許在虛擬環境中。centos

​ 使用hypercall調用物理機的cpuapi

​ 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)。

c/c++ 學習互助QQ羣:877684253

本人微信:xiaoshitou5854

相關文章
相關標籤/搜索