虛擬化是什么?
虛擬化是一種資源管理技術, 是將計算機的各實體資源, 如服務、網絡、內存及存儲等, 予以抽象、轉換后呈現出來, 打破實體之間的不可切割的障礙, 使用戶可以比原本的配置更好的方式來應用這些資源。這些資源的新虛擬部分是不受現有資源的架設方式, 地域或物理配置所限制。一般情況下, 虛擬化資源包括計算能力和數據存儲 —<轉自維基百科>
為什么需要虛擬化?
虛擬化技術在近幾年來非常的火熱, 實際上在上個世紀60年代, 就已經有了虛擬化的實現。由于計算機的發展遵循了摩爾定律數十年之久。 在二十一世紀初時, 單臺計算機的性能已經非常的強大了, 大多數服務器的計算資源都有大量的空閑, 所以虛擬化的技術從重新進入人們的視野…
虛擬化技術主要有以下幾個優點:
計算資源能夠得到充分的利用
簡化物理網絡架構, 便于管理
減少基礎運維工作頻度
易于實現運維自動化、平臺化
什么時候會使用虛擬化?
虛擬化無處不在,每天都聽到的云計算就是以虛擬化技術為基礎。阿里云、騰訊云等眾多提供云服務、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和內存資源
Xen半虛擬化架構
Xen全虛擬化架構
如何獲取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
添加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 #創建一個2G的raw設備
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
將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
編輯配置文件
[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
總結
本文對虛擬化技術做了簡單介紹, 以及簡單的通過Xen創建了虛擬機, 后續我還會介紹更多高級的內容
文章內容淺嘗輒止, 大家有更好的見解可以提出, 覺得我寫的不錯, 可以點一波贊~(≧▽≦)/~
作者: AnyISaIln QQ: 1449472454
感謝: MageEdu
原創文章,作者:Net18-AnyISalIn,如若轉載,請注明出處:http://www.www58058.com/17164