虚拟化技术初识

  • 进程使用的内存分为RSS常驻内存集,page cache以及anon page;

  • 对于TLB来说是用来加速MMU进行内存单元查找的过程的;

  • CPU通过可编程中断控制器向IO设备提供终端控制向量;

  • 虚拟化技术

  • 虚拟化是用来虚拟物理硬件的技术,可以讲物理硬件虚拟成为多种不同的OS;,虚拟化技术面临的;

  • CPU的虚拟化是通过进行时间片划分,而进行虚拟化的,并且还需要虚拟出一些特权指令使得虚拟机认为自己是运行在ring 0上面的;通常来说CPU执行的指令可以分为三种,普通指令,特权指令,以及可能引起特权指令执行的敏感指令,对于X86平台的的物理机有些敏感指令无法完成虚拟化,虚拟机的内核在尝试运行某些特权指令的时候,物理机内核必须能够捕获到这些指令;

  • 面临的挑战:

    • 1.一般来说操作系统内核运行在Ring 0级别,执行特权指令,用户空间的程序运行在ring 3级别,执行非特权指令;
    • 2.特权级别压缩:通常来说,物理机运行在Ring 0级别,虚拟机运行在Ring 3级别,物理机通过分页或者限制的方式保护物理内存的访问,但是在64 bit下限制不起作用,而且分页机制不区分Ring 0 1 2 3,所以虚拟机只能够运行在Ring 3,并且物理机需要监控虚拟机对于敏感寄存器的访问,为了防止虚拟机运行在Ring 0级别的指令,同时又需要保护降级后的虚拟机不应该被物理机进程影响;
    • 3.地址空间压缩:通常来说物理机使用的内核的地址空间是从0开始的,虚拟机使用的地址空间也应该是从0地址段开始的,这通常需要在物理机和虚拟机之间建立映射关系;
    • 4.中断虚拟化:来自物理机的硬件中断,都应该交给物理机物理机处理,并且虚拟机对于物理硬件的访问,会频繁导致物理机内核陷入中断;
      这里写图片描述
  • memory的虚拟化需要通过空间上面的划分,通过将已经离散的地址空间按照一定类似于MMU的机制映射成为一块整体的地址空间;这里面出现的问题就是在进行地址转换的时候,虚拟机本身的操作系统需完成一次内存地址映射的过程,之后物理机还需要完成一次内存地址映射的过程,这样导致性能低下;所以实现了MMU的虚拟化,虚拟机的MMU实现了从Virtual address --> Guest Physical address的转换,物理机的MMU实现了从Guest Physical Address ---> Host Physical Address的转换.MMU的虚拟化一步实现从Virtual Address --> Host Virtual Address;

    • 这种技术的实现Intel是通过Extend Page Tables,AMD是通过Nested Page Tables,并且通过了标记TLB来避免虚拟机频繁切换时,频繁刷写TLB用来提高TLB缓存的命中率;
  • 网卡的虚拟化:最简单的方式是进行模拟,虚拟主机之间的网络通信可以通过进程间通信的机制来实现,如果需要和外部的主机通信,通常有这样几种机制SNAT 桥接 host only;

    • 通常来说这些虚拟主机都是在一个被物理主机虚拟出来的一个交换机的网络vmnet这个网络内部进行通信的,IP地址为仅主机模式时,也是可以实现和物理主机通信的;
    • 虚拟通道表示的是二层网络上面的专属网络,这个无法和物理主机进行通信,也无法和外部主机进行通信;
    • SNAT:表示的含义是通过源地址转换的机制,来实现和外部主机的通信;这是在三层进行转换的;
    • Bridge:表示的含义是物理机网卡工作在混杂模式,接收任何MAC地址的网络软件包,通过MAC地址的转换是在二层完成的,网桥本质上模拟的就是交换机;这种方式不会自动提供DHCP服务器;
    • 为了提高虚拟机网卡的性能,可以通过将这些设备的驱动做成系统调用,直接交给Virtual进行来调用系统调用;这种技术就是半虚拟化技术,虚拟机是明白自己处于虚拟化环境中;
      这里写图片描述
  • IO设备的虚拟化,通常也是通过模拟的方式来实现的,然后再物理机硬盘上面创建本地回环文件,将这个文件模拟为虚拟机的磁盘使用;这样性能是比较低下的,可以通过提供形象存储设备,来实现数据的存储,可以提高虚拟机的性能;

    • 1.硬件设备的模拟:
    • 2.虚拟化技术:通过系统调用直接交给物理硬件设备;
    • 3.IO透传:表示每一个虚拟机直接使用物理硬件设备,Host OS提供对于硬件的简单管理功能;
  • CPU硬件不支持的虚拟化技术成为模拟;

  • CPU硬件是支持的虚拟化技术成为HVM,硬件辅助的虚拟化技术;

  • 虚拟机了解自己是运行在虚拟化环境中的,称为PV;

  • 通过类似于半虚拟化技术,将CPU的特权指令集合,网卡等硬件设备做成系统调用的方式提供给虚拟机使用,这种机制成为hypervisor Call;半虚拟化技术,需要修改虚拟机的内核,来执行这些;

  • 虚拟化技术之一:PV ON HVM;

  • 虚拟化软件的三个标准

  • 1.等价执行:除了资源上面的可用以及时间上面的不同之处,程序在虚拟化环境中以及真实环境中的执行是完全相同的;

  • 2.性能:指令集中的大部分指令是可以直接运行在CPU上面的;

  • 3.安全:物理机需要能够完全控制系统资源;

  • 硬件虚拟化技术:

    • Intel:通过VT-X,通过提供Ring -1级别来提供虚拟化技术;
    • AMD:AMD-V:也是通过类似的技术来实现的;
  • 虚拟化技术模型

  • Host OS:借助于Host主机的VMM技术,可以提供对于虚拟主机的管理功能;

  • Hypervisor OS:通过将VMM直接安装在物理硬件上面,用来提供对于虚拟主机的管理功能,而不是借助于OS,但是VMM必须提供对于CPU memory IO以及中断的管理;
    这里写图片描述

  • Zen:本身仅仅提供CPU memory以及对于中断的管理,本身不提供对于额外的硬件的管理,在新建立成功之后,需要立即创建虚拟机Linux,用来提供额外的硬件的驱动,并且提供对于虚拟机的管理;第一个创建的主机成为domain 0,这是一个特权主机,主要提供驱动程序,以及对其他主机的管理,对硬件的直接管理,需要借助于Xen;Domain U对于CPU memory Interput的访问是可以直接通过Xen来进行的,对于其他硬件的管理,首先联系Domain 0通过Xen再联系Domain 0的驱动程序,最后交给硬件完成执行;

  • 全虚拟化技术的优势是操作系统内核不用提供特殊的对于Hyper Call的调用机制;

  • Qemu:法国人开发的,并且可以提供跨平台的硬件支持,可以用于创建虚拟软件的设备,Xen提供了专门的管理虚拟机的软件Xend;基于xend的图形化管理工具Openstack; Redhat提供的管理工具是Virsh;

  • 管理软件的框架图
    这里写图片描述

  • 虚拟化技术之KVM

  • 表示的含义是Kernel-based Virtual Machine,也就是基于内核的虚拟机,KVMLinux内核的一个模块,当装载了KVM这个模块之后,就会变成Hypervisor,KVM同样需要利用Linux提供的内核驱动,并且需要结合与其他的管理工具,对于创建硬件的管理需要借助于qemu,KVM对于CPU的管理比Qemu模拟出来的更加高效,可以更好的使用硬件的性能; KVM + Qemu;

  • KVM必须能够泡在64 bits的平台上面,并且要求硬件支持虚拟化;

  • KVM Xen在内核2.6.3以后都被整合进入了内核;Redhat收购了KVM;使用的完全虚拟化技术,通过使用Virtio就支持半虚拟化技术;并且支持透传技术;

  • Xen[剑桥开发]Citrix收购,仅次于Vmware的第二大虚拟化解决方案;

  • Hyper-V:是Windows;

  • 虚拟化技术的分类

  • 完全虚拟化技术

  • 通过VMM监控虚拟机的的kernel运行的指令,并且需要通过Binary Translate来翻译某些特权指令,并且将可能危及其他虚拟机的特权指令翻译为仅仅对当前主机生效的二进制指令,引入硬件辅助虚拟化技术之后,Binary Translate可以通过硬件来实现;

  • 通过完全虚拟化实现的技术可以弥补底层硬件的差异,方便在不同的硬件设备上面迁移;
    这里写图片描述

  • 半虚拟化技术

  • Guest OS的内核是需要清楚地知道自己是运行在虚拟化环境中,并且是运行在VMM之上的,不在直接和硬件交互,VMM通过将某些模块做成Hypervisor Call来提供给Guest OS;
    这里写图片描述

  • Container:表示容器,通过提供用户空间的容器来使用同一个内核,直接完成对于硬件的;

    • OpenVZ;
  • Library virtualizaion

    • Wine:可以支持大多数Windows应用程序;
    • Windows可以使用cywin用来支持Linux应用;
    • Intel通过三种技术VT-X EPT以及IOMMU来支持虚拟化技术;
  • 安装Xen的两种方式:

    • 通过官方提供的Xcp,本身是一个Xen + Linux发行版本安装之后就是一个Domain 0的界面;
    • 或者首先安装一个Linux发行版本,然后安装OS,配置/etc/grub.conf使用Xen作为内核引导进行启动,将Linux的内核文件作为新系统模块来使用;
  • Xen的两种虚拟化解决方案

  • 半虚拟化解决
    这里写图片描述

  • 全虚拟化解决
    这里写图片描述

  • KVM虚拟化

  • KVM必须是64 Bits的虚拟化,并且需要支持硬件虚拟化
    这里写图片描述

  • 需要装载两个模块,根据CPU的类型进行装载
    这里写图片描述

  • 安装KVM需要四个软件包组Vritualzation, Virtualzation Client,Virtualization Plaform,Virtualization Tools;
    这里写图片描述

  • KVM的内核架构
    这里写图片描述

  • 将每一个虚拟机作为一个Linux进程进行管理,虚拟机的CPU相当于Linux内核空间中的一个个线程,提供的内核接口是
    这里写图片描述

  • 通常来说virsh以及qemu都是和这个设备文件打交道的;

  • KVM的管理工具
    这里写图片描述

  • 首先需要安装下面的组

[root@server24 ~]#  yum group install  "Virtualization"  "Virtualization Client" " Virtualization Platform" " Virtualization Tools" -y  //我这里一共安装了171个软件包;
  • 安装KVM成功之后,需要执行
[root@my Desktop]#  service libvirtd start 
Starting libvirtd daemon:                                  [  OK  ]
[root@server24 ~]# chkconfig --add libvirtd 
[root@server24 ~]# chkconfig  libvirtd on
  • 会自动创建一个文件,这个文件表示的含义是一个NAT模型的网桥设备;
    这里写图片描述
  • 创建一个物理桥
[root@server24 ~]# virsh iface-bridge eth0 br0
  • 获取当前主机的连接接口
[root@server24 ~]# virsh uri
qemu:///system
  • 创建一个虚拟机,
[root@my Desktop]# virt-install --connect qemu:///system --virt-type qemu --name rhel5 --ram 512 --disk path=/var/lib/libvirt/images/rhel5.8.img,size=10 --network  --cdrom /iso/rhel-server-5.8-x86_64-dvd.iso 
  • virsh:

    • uri:用于查看当前主机的hypervisor的路径;
    • connect:用于连接某个虚拟主机;
    • define:用于根据xml配置文件;
  • 创建一个虚拟主机

 mkdir /kvm/vml -pv
qemu-img create -f raw /kvm/vml/rhel6.img 8G
losetup -f
losetup /dev/loop4 /kvm/vml/rhel6.img 
kpartx -av /dev/loop4

  • 进行格式化
[root@my Desktop]# mkfs.ext4 /dev/mapper/loop4p1 
[root@my Desktop]# mkfs.ext4 /dev/mapper/loop4p2 
  • 创建两个目录
[root@my Desktop]# mkdir /mnt/{boot,sysroot}
[root@my Desktop]# mount /dev/mapper/loop4p2 /mnt/sysroot/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值