虛擬化技術介紹、Xen的簡單實現

虛擬化是什么?

虛擬化是一種資源管理技術, 是將計算機的各實體資源, 如服務、網絡、內存及存儲等, 予以抽象、轉換后呈現出來, 打破實體之間的不可切割的障礙, 使用戶可以比原本的配置更好的方式來應用這些資源。這些資源的新虛擬部分是不受現有資源的架設方式, 地域或物理配置所限制。一般情況下, 虛擬化資源包括計算能力和數據存儲 —<轉自維基百科>

為什么需要虛擬化?

虛擬化技術在近幾年來非常的火熱, 實際上在上個世紀60年代, 就已經有了虛擬化的實現。由于計算機的發展遵循了摩爾定律數十年之久。 在二十一世紀初時, 單臺計算機的性能已經非常的強大了, 大多數服務器的計算資源都有大量的空閑, 所以虛擬化的技術從重新進入人們的視野…

虛擬化技術主要有以下幾個優點:

  1. 計算資源能夠得到充分的利用

  2. 簡化物理網絡架構, 便于管理

  3. 減少基礎運維工作頻度

  4. 易于實現運維自動化、平臺化

什么時候會使用虛擬化?

虛擬化無處不在,每天都聽到的云計算就是以虛擬化技術為基礎。阿里云、騰訊云等眾多提供云服務、VPS的廠商哪家沒有使用虛擬化? 我們使用的虛擬機, VMWare Wokstation, VirtualBox, VMWare ESXI… 也都是虛擬化。甚至于很多學校、公司使用的云桌面, 也都是虛擬化技術實現的。還有現在炙手可熱的Docker技術, 也是虛擬化。作為一個運維, 你可以不懂云計算, 大數據, 但是你必須了解虛擬化, 這個無處不在的技術!

虛擬化類型簡介

模擬:

在底層的硬件上運行OS, OS上通過虛擬化模擬器軟件來模擬一個硬件環境, 可以模擬不同平臺的環境, 著名的模擬器: PearPC, Bochs, QEMU

完全虛擬化: (Full Virtualization):

CPU、內存不做模擬, 只對其進行分配和管理, 可通過BT, HVM等技術進行加速, 只能模擬本機CPU; 著名的軟件: VMWare Workstation, VirtualBox, KVM…

半虛擬化: (Para Virtualization)

在底層硬件上安裝VMM(Virtual Machines Monitor)來管理各虛擬機, 各虛擬機的內核需要修改, 從而知道自己是虛擬機, 通過特殊方式調用驅動和特權指令; 著名的軟件: Xen, VMWare ESXI, UML …

OS虛擬化:

每一個虛擬機只有用戶空間, 所有的虛擬機共享一個內核, 更加的節省資源, 更接近原生性能; 著名的實現: OpenVZ, Docker, Solaris Containers, FreeBSD jails…

Hypervisor是什么?

Hypervisor意為監視器, 宿主機通過Hypervisor來管理各虛擬機

從另一個角度來解釋, 虛擬化技術分為兩種類型:

  • Type-I: Hypervisor運行在硬件上: 如: VMWare ESXI, Xen…

  • Type-II: Hypervisor運行在OS上: 如: VMWare Workstation, VirtualBox…

Xen是什么?

Xen是一款開源的虛擬機監視器, 由劍橋大學開發, 它能夠在單個計算機上運行多達128個擁有完全功能的操作系統。在無HVM技術的CPU上, Xen必須對虛擬機的操作系統進行修改。

Xen可以分別實現半虛擬化和完全虛擬化, 甚至可以實現PV On HVM

  • 半虛擬化下的Xen只有較少的性能損失, 因為要修改系統,所以不能支持全部的操作系統

  • 完全虛擬化的Xen, 通過VT-X, AMD-V等HVM技術來實現, 這樣就能夠實現虛擬未經修改的系統, 并且性能可能比半虛擬化更好

  • PV On HVM: 由于半虛擬化對于IO設備的提升很大, 但是HVM對系統的兼容性、性能更佳。所以Xen還能夠實現半虛擬化IO設備、硬件輔助虛擬化CPU、內存等..

Xen的架構

介紹Xen的架構之前我們先了解一些Xen中的相關術語

  • Hypervisor: Xen的虛擬機監視器, 負責CPU、內存的虛擬化

  • Domain: Xen運行的虛擬機 
    Dom0: 特權域, 負責分配I/O資源(通過QEMU), 管理DomU 
    DomU: 用戶域, 運行指定的OS

Xen技術的架構

Xen通過Dom0主機負責I/O資源的分配、 管理和配置DomaU, 底層的Hypervisor分配CPU和內存資源

blob.png

Xen半虛擬化架構

blob.png

Xen全虛擬化架構

blob.png

如何獲取Xen?

RHEL5中, Xen是默認的虛擬化方案, 在RHEL6以后使用KVM來代替Xen

Xen對Linux內核的要求

Linux 2.6.37之后才原生支持Xen, Linux 3.0后才針對Xen進行關鍵優化

獲取Xen4centos

Xen4centos項目提供了眾多rpm來實現、并支持rhel6/Centos6運行Xen

通過阿里云的鏡像站來獲取xen4centos的一系列rpm包

[root@node1 ~]# yum-config-manager --add-repo="http://mirrors.aliyun.com/centos/6.7/xen4/x86_64/"

安裝Xen并配置一個busybox虛擬機

安裝xen

[root@node1 ~]# yum install xen -y 

修改grub 
因為安裝xen會自動安裝linux 3.X的內核, 我們還需要對其進行一些修改, 使得使用xen進行啟動

[root@node1 ~]# vim /etc/grub.conf  #修改第一個title為如下
title CentOS (3.18.12-11.el6.x86_64)
   root (hd0,0)
   kernel /xen.gz dom0_mem=1024M cpufreq=xen dom0_max_vcpus=2 dom0_vcpus_pin
   module /vmlinuz-3.18.12-11.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root  KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto quiet rhgb quiet
    module /initramfs-3.18.12-11.el6.x86_64.img

GIF.gif

添加disk image

[root@node1 ~]# mkdir -pv /data/xen -pv   #創建一個文件夾專門存放xen相關的文件
[root@node1 ~]# cd /data/xen/
[root@node1 xen]# qemu-img create -f raw -o size=2G busybox.img  #創建一個2Graw設備
Formatting 'busybox.img', fmt=raw size=2147483648

[root@node1 xen]# mkfs.ext4 busybox.img  #格式化為ext4分區

編譯安裝busybox

自行下載busybox
[root@node1 ~]# yum groupinstall "Development Tools" "Server Platform Development"  #安裝開發包組
[root@node1 ~]# yum install glibc-static  #安裝靜態c庫
[root@node1 ~]# tar xf busybox-1.22.1.tar.bz2
[root@node1 ~]# cd busybox-1.22.1
[root@node1 busybox-1.22.1]# make menuconfig
[root@node1 busybox-1.22.1]# make && make install

GIF2-iloveimg-compressed.gif

將busybox復制進image

[root@node1 busybox-1.22.1]# mount -o loop /data/xen/busybox.img /mnt/ 
[root@node1 busybox-1.22.1]# cp -a  _install/* /mnt/
[root@node1 /]# cd /mnt/
[root@node1 mnt]# mkdir dev proc sys home

測試能否成功chroot

GIF.gif

編輯配置文件

[root@node1 xen]# vim busybox
name = "busybox-01"
kernel = "/boot/vmlinuz-2.6.32-573.el6.x86_64"
ramdisk = "/boot/initramfs-2.6.32-573.el6.x86_64.img"
extra = "root=/dev/xvda1  selinux=0 init=/bin/sh"
memory = 128
vcpus = 2
disk = [ '/data/xen/busybox.img,raw,xvda,rw'

創建虛擬機

[root@node1 xen]# xl create busybox
Parsing config from busybox
DEBUG libxl__blktap_devpath 76 aio:/data/xen/busybox.img
DEBUG libxl__blktap_devpath 81 /dev/xen/blktap-2/tapdev0
[root@node1 xen]# xl list
Name                                        ID   Mem VCPUs  State   Time(s)
Domain-0                                     0  1024     2     r-----      29.0
busybox-01                                   4   256     1     -b----       0.6

GIF5.gif

總結

本文對虛擬化技術做了簡單介紹, 以及簡單的通過Xen創建了虛擬機, 后續我還會介紹更多高級的內容

文章內容淺嘗輒止, 大家有更好的見解可以提出, 覺得我寫的不錯, 可以點一波贊~(≧▽≦)/~ 
作者: AnyISaIln QQ: 1449472454 
感謝: MageEdu

原創文章,作者:Net18-AnyISalIn,如若轉載,請注明出處:http://www.www58058.com/17164

(3)
Net18-AnyISalInNet18-AnyISalIn
上一篇 2016-05-31
下一篇 2016-05-31

相關推薦

  • 馬哥教育網絡班21期-第八周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 設備 使用場景 功能 區別 集線器 局域網 共享同一網絡 不能分隔沖突域 網橋 局域網 連接不同網段,拓展局域網 端口少,可以分隔沖突域 二層交換機 局域網 連接不同局域網段,數據交換 端口更多,可以分隔沖突域,速率更快 三層交換機 局域網,廣域網 路由,高速數據交換,分隔廣播域…

    Linux干貨 2016-09-08
  • Cobbler實現多系統自動化安裝

    Cobbler介紹:  Cobbler能夠快速建立多系統同時安裝的網絡系統安裝環境;傳統的pxe+dhcp+tftp+kickstart僅能夠提供單一系統安裝,功能過于簡單;如果遇到安裝不同操作系統時就遇到瓶頸;而cobbler正好解決了這一問題。Cobbler是增強版的網絡系統安裝。 Cobbler由不同的組件配合完成系統安裝,各組件之間配合如下…

    Linux干貨 2015-08-11
  • Linux系統文件管理

    1、Linux的文件類型:       –:普通文件;       d:目錄文件;       b:塊設備:     &nbsp…

    Linux干貨 2016-08-04
  • 再不自動化就晚啦!優云教你4步打造基于CentOS的產品鏡像

    隨著Linux程序的增多,軟件的安裝過程中經常出現如下問題: 1、硬件配置類似或者相同時,批量安裝系統和軟件,希望實現自動化安裝,減少安裝時間和人為出錯。 2、工程實施人員在不同客戶現場進行系統和軟件安裝(硬件配置不同),由于硬件有差別,不容易實現自動化。 筆者針對以上場景,從提高生產效率,減少誤操作的立場,提出如下解決方案,希望能達到拋磚引玉的目的,并能與…

    系統運維 2016-07-16
  • 集群基本介紹

    Linux Cluster: Cluster:計算機集合,為解決某個特定問題組合起來形成的單個系統; Linux Cluster類型: LB:Load Balancing,負載均衡;主機來平均訪問的壓力。由負載均衡器和多個后端主機分擔主。 HA:High Availiablity,高可用,靠冗余節點實現;提高服務的可用性,有多個負載均衡器(和備份)來接收來自…

    Linux干貨 2016-10-30
  • Linux用戶和組的相關命令(二、組的相關命令)

    用戶和組之間息息相關。創建用戶時 ,Linux系統會默認生成一個與用戶名相同的組,這個組是用戶的私有組,也是用戶的主組。對用戶來說,主組有且只有一個,但是可以有零個或多個附加組??梢栽诮M內設置組管理員來管理組內的用戶列表,組管理員可以刪除用戶列表內的組員。組管理員不唯一,可以有零個或多個。 關于組及其屬性和組密碼及其屬性的有關信息保存在/etc/group和…

    2017-07-22
欧美性久久久久