虚拟化技术—基础(1)

https://www.cnblogs.com/fqxy/p/9828796.html



本文围绕下面3个问题进行对虚拟化技术展开讨论:

1、虚拟化技术实现方式有哪些?虚拟化技术分哪些?

2、请分别通过kvm、xen工具来实现虚拟化系统的部署?

3、请描述openstack、kvmqemu-kv、libvirt及xen之间的关系。

虚拟化诞生和发展



1961年 IBM709机实现了分时系统,将CPU占用切分为多个极短(1/100sec)时间片,每一个时间片都执行着不同的任务。通过对这些时间片的轮询,这样就可以将一个CPU虚拟化或者伪装成为多个CPU,并且让每一颗虚拟CPU看起来都是在同时运行,这就是虚拟机的雏形。后来的system360机都支持分时系统。 
    1972年 IBM正式将system370机的分时系统命名为虚拟机。 
    1990年 IBM推出的system390机支持逻辑分区,即将一个cpu分为若干份(最多10份),而且每份cpu都是独立的,也就是一个物理cpu可以逻辑的分为10个cpu。

直到IBM将分时系统开源后,个人PC终于临来了虚拟化的开端,后来才有了上述的虚拟机软件的发展。所以至今为止仍然有一部分虚拟机软件应用来了分时系统作为虚拟化的基础实现。

虚拟化是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。

虚拟化技术的目的



虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件,简单来说就是将底层资源进行分区,并向上层提供特定的和多样化的执行环境。

虚拟化的原理



在OS中加入一个虚拟化层(VMM),虚拟化层可以对下层(HostOS)硬件资源(物理CPU、内存、磁盘、网卡、显卡等)进行封装、隔离,抽象为另一种形式的逻辑资源,再提供给上层(GuestOS)使用。所以你可以理解VMM其实就是联系HostOS和GuestOS的一个中间件,当然虚拟化可以将一份资源抽象为多份,也可以将多份资源抽象为一份。

通过虚拟化技术实现的虚拟机一般被称之为GuestOS(客户),而作为GuestOS载体的物理主机称之为HostOS(宿主)。

虚拟机 Virtual Machine



满足下面几个条件的OS就是虚拟机:

  • 由VMM提供的高效(>80%)、独立的计算机系统
  • 拥有自己的虚拟硬件(CPU、内存、网络设备、存储设备)
  • 对于上层软件,虚拟机就是真实的机器
  • Virtual Machine Monitor

虚拟化技术实现方式有哪些?



现在市场上最常见的虚拟化软件有VMWare workstation(VMWare)、VirtualBox(Oracle)、Hyper-V(Microsoft)、KVM(Redhat)、Xen等,这些软件统称之为VMM(Virtual Machine Monitor),使用不同的虚拟化实现。而这些虚拟化实现的方式可以分为:

  • 全虚拟化也成为原始虚拟化技术,该模型使用虚拟机协调guest操作系统和原始硬件,VMM在guest操作系统和裸硬件之间用于工作协调,一些受保护指令必须由Hypervisor(VMM 虚拟机管理程序)来捕获处理。既VMM会为GuestOS抽象模拟出它所需要的包括CPU、磁盘、内存、网卡、显卡等抽象硬件资源,所以全虚拟化的GuestOS并不会知道自己其实是一台虚拟机。全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为Hypervisor需要占用一些资源。典型的全虚拟化软件有:VMWare、Hyper-V、KVM-x86(复杂指令集)。

全虚拟化的两种实现方式:  1、基于二进制翻译的全虚拟化;

2、基于扫描和修补的全虚拟化。

  • 半虚拟化:是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的guest操作系统集成了虚拟化方面的代码。该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。典型的半虚拟化软件有:Xen、KVM-PowerPC(简易指令集)半虚拟化除了修改内核外还有另外一种实现方法–在每一个GuestOS中安装半虚拟化软件:VMTools、RHEVTools。

 半虚拟化需要guest操作系统做一些修改,使guest操作系统意识到自己是处于虚拟化环境的,但是半虚拟化提供了与原操作系统相近的性能。

虚拟化技术分哪些类?


  • 主机虚拟化:

完全虚拟化:vmare workstation,kvm,xen(hvm)

半虚拟化:xen,uml

模拟:qemu

  • 用户空间虚拟化(容器):

lxc,openvz,Solaris Containers,FreeBSD jails

  • 库虚拟化:

WINE Cywin

  • 应用程序虚拟化:

jvm,pvm,……

kvm工具来实现虚拟化系统的部署(2)


kvm部署环境准备:

操作系统
CentOS Linux release 7.2.1511 (Core)

ip 地址 192.168.2.231 
软件包:yum安装 yum install -y
关闭防火墙和selinux
systemctl stop iptables.service

vim /etc/sysconfig/selinux 文件里改成SELINUX=disabled

一、前期准备



1、检查CPU虚拟化支持,如果有vmx 或者svm就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法使用KVM虚拟机。

2、确保BIOS里开启VT:  Intel(R) Virtualization Tech [Enabled]  使用如下命令:


1

2

3

4

[[email protected] ~]# lsmod |grep kvm

kvm_intel             162153  0

kvm                   525259  1 kvm_intel

[[email protected] ~]# modprobe  kvm-intel

  

3、启动libvirtd:


1

2

3

4

5

[[email protected] ~]# systemctl start libvirtd;systemctl enable libvirtd

[[email protected] ~]# systemctl list-unit-files|grep libvirtd

libvirtd.service                            enabled

libvirtd.socket                             static 

[[email protected] ~]#

二、桥接网络



使用桥接网络,虚拟机即可与其他机器互相访问。  1.复制ifcfg-em1 为 ifcfg-br0,并将ifcfg-br0改为如下配置

然后我们重启网络:


1

2

3

[[email protected] network-scripts]# service network restart

Restarting network (via systemctl):                        [  OK  ]

[[email protected] network-scripts]#

  

三、安装软件包:

1、安装kvm



1

2

3

4

5

6

7

8

9

10

11

[[email protected] ~]#  yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager libvirt-python  bridge-utils  -y

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

 * base: mirrors.cn99.com

 * extras: mirrors.cn99.com

 * updates: mirrors.aliyun.com

Package 10:qemu-kvm-1.5.3-105.el7_2.7.x86_64 already installed and latest version

Package libvirt-1.2.17-13.el7_2.5.x86_64 already installed and latest version

Package virt-install-1.2.1-8.el7.noarch already installed and latest version

Package virt-manager-1.2.1-8.el7.noarch already installed and latest version

Nothing to do

qemu-kvm 主要的KVM程序包kvm相关安装包及其作用

python-virtinst 创建虚拟机所需要的命令行工具和程序库

virt-manager GUI虚拟机管理工具

virt-top 虚拟机统计命令

virt-viewer GUI连接程序,连接到已配置好的虚拟机

libvirt C语言工具包,提供libvirt服务

libvirt-client 为虚拟客户机提供的C语言工具包

virt-install 基于libvirt服务的虚拟机创建命令

bridge-utils 创建和管理桥接设备的工具

2、安装x-windows,使用图形化界面管理虚拟机

[[email protected] ~]# yum groupinstall "X Window System" -y


四、创建vm

[[email protected] ~]# mkdir -pv /var/kvm/images
mkdir: created directory ‘/var/kvm’
mkdir: created directory ‘/var/kvm/images’
[[email protected] ~]# mkdir -pv /var/kvm/images
mkdir: created directory ‘/var/kvm’
mkdir: created directory ‘/var/kvm/images’

virt-install --network bridge:br0 --name vm1 --ram=1024 --vcpus=1 --disk path=/var/kvm/images/vm1.img,size=10 --graphics none --location ‘http://ftp.iij.ad.jp/pub/linux/centos/7/os/x86_64/‘ --extra-args="console=tty0 console=ttyS0,115200"
#详细每个参数的意义可以查看扩展资料
#安装过程会让你选择textmode 还是vnc,选择textmode继续安装吧
#如果网络会有问题的话,尽量选择用--cdrom /path/to/centos7.iso

xen工具来实现虚拟化系统的部署(3)



环境准备同kvm

开始安装:

yum -y install centos-release-xen
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Xen.repo
yum --enablerepo=centos-virt-xen -y update kernel
yum --enablerepo=centos-virt-xen -y install xen
vi /etc/default/grub
# change memory amount for Domain0 (specify proper value on your system)
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=4096M,max:4096M cpuinfo com1=115200,8n1 .....
/bin/grub-bootxen.sh
reboot

后面参考kvm过程,xen过程略;

openstack、kvm、qemu-kvm、libvirt、xen的关系



KVM是最底层的hypervisor,它是用来模拟CPU的运行,它缺少了对network和周边I/O的支持,所以我们是没法直接用它的。QEMU-KVM就是一个完整的模拟器,它是建基于KVM上面的,它提供了完整的网络和I/O支持. Openstack不会直接控制qemu-kvm,它会用一个叫libvit的库去间接控制qemu-lvm, libvirt提供了夸VM平台的功能,它可以控制除了QEMU的模拟器,包括vmware, virtualbox xen等等。所以为了openstack的夸VM性,所以openstack只会用libvirt而不直接用qemu-kvm。libvirt还提供了一些高级的功能,例如pool/vol管理。

原文地址:https://www.cnblogs.com/xiaodoujiaohome/p/11558637.html

时间: 2024-10-11 05:23:25

虚拟化技术—基础(1)的相关文章

49 Linux操作系统原理、虚拟化技术基础原理

04 虚拟化技术基础原理 一.配置虚拟化网络 1.编辑配置文件 #关闭NetworkManager [[email protected] ~]# service NetworkManager stop [[email protected] ~]# chkconfig NetworkManager off    [[email protected] ~]# chkconfig --list NetworkManager NetworkManager  0:关闭  1:关闭  2:关闭  3:关闭

53 kvm及libvirt、使用virsh管理kvm虚拟机、网络虚拟化技术基础、网络名称空间netns用法详解

01 kvm及libvirt [[email protected] ~]# yum install libvirt libvirt-client python-virtinst virt-manager virt-install -y [[email protected] ~]# yum -y install qemu-kvm [[email protected] ~]# systemctl start libvirtd.service #创建桥 [[email protected] ~]# v

50 xen虚拟化技术基础、xen虚拟化技术进阶

01 xen虚拟化技术基础 配置环境: node1 192.168.1.61 CentOS6.6 [[email protected] ~]# uname -r 2.6.32-504.el6.x86_64 [[email protected] ~]# cd /etc/yum.repos.d/ [[email protected] yum.repos.d]# vim xen4.repo [xen4centos] name=Xen4 for CentOS 6 baseurl=ftp://192.16

虚拟化技术基础

摘要 虚拟化是云计算系统中的一种基础技术,可以说当前一个云计算服务必定是构建在虚拟化的基础上的.本文首先介绍了不同抽象层次的虚拟化技术,之后对应用广泛的系统级虚拟化和操作系统级虚拟化进行了更详细的分类和描述,最后介绍了各种典型虚拟化方案的具体实现. 虚拟化技术简介 首先,什么是计算机?现在使用的计算机都离不开冯诺依曼体系结构,如图1所示,有输入设备.输出设备.存储器.cpu这就算是完整的计算机硬件环境了(当然还需要网卡.显卡等等).虚拟化技术就是在一台机器上模拟出独立的cpu.存储器等使得同一台

虚拟化技术基础原理详解

DISK : IO调度模式 CFQ deadline anticipatory NOOP /sys/block/<device>/queue/scheduler Memory: MMU TLB vm.swappiness={0..100},使用交换分区的倾向性,默认60% overcommit_memory=2过量使用内存 RAM,swap overcommit_ratio=50 允许使用交换分区的比例 所有的swap +RAM*ratio swap=4G RAM=8G 可以使用为4+8*50

虚拟化技术基础原理(一)

虚拟化技术: 虚拟化技术类型: 主机虚拟化:xen, kvm, virtualbox, ... 容器(用户空间隔离): lxc(LinuX Container), openvz, ... 系统库虚拟化:wine, ... 应用程序级虚拟化:jvm, pvm,... 主机虚拟化: CPU: 模拟:emulation, 虚拟机的arch与物理平台的arch可以不相同:qemu: 虚拟:virtualization 完全虚拟化(full-virt) BT: 二进制转换 (软件) HVM:硬件辅助的虚拟

虚拟化技术基础原理

1.cpu虚拟化 模拟:emulation     软件方式实现,上层架构和底层可以不一样:需要模拟环0,1,2,3 虚拟:virtulization  上层架构和底层要保持一致 完全虚拟化(full-virtulization):宿主机完全虚拟出一个完整的平台,guest不清楚自己运行在虚拟话环境中:只需要模拟环0,假设各guest的内核运行在环1(实际上不可能运行在环1,因为环1没有特权指令) BT:二进制翻译(软件) HVM:硬件辅助的虚拟化(硬件),模拟出环-1,host的内核运行在环-

[HCNA Cloud]虚拟化技术基础

原文地址:http://blog.51cto.com/juispan/2097092

KVM虚拟化技术(一)

KVM虚拟化技术(一) =============================================================================== 概述: =============================================================================== 虚拟化技术基础 1.介绍 ★cpu虚拟化: ☉模拟:emulation ☉虚拟:virtulization 完全虚拟化(full-virtuliza