虚拟化技术基础原理详解

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%=8G

   充分使用物理内存;1.swap=RAM,swappiness=0;

                                2.overcommit_memory=2,overcommit_ratio=100,vm.swappiness=0

tcp_max_tw_buckets:只能调大

  tw:连接个数,主动断开端

    established-->tw


IPC:

      message  消息队列

          msgmni

          msgmax

          msgmnb


      shm共享内存

          shmall

          shmmax

          shmmni


监控内存和cpu的命令

sar ,dstat ,vmstat ,mpstat ,iostat ,top,free ,iotop ,uptime,

cat/proc/meminfo,ss,netstat,lsof,strace

blktrace,blkparse,btt,

压力测试工具

dd,iozone,io-stress,fio



   

      虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

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

在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件



1974年,Popek和Goldberg在一篇论文中定义了“经典虚拟化(Classical virtualization)”的基本需求,他们认为,一款真正意义上的VMM至少要符合三个方面的标准:

◇ 等价执行(Equivalient execution):除了资源的可用性及时间上的不同之外,程序在虚拟化环境中及真实环境中的执行是完全相同的;
◇ 性能(Performance):指令集中的大部分指令要能够直接运行于CPU上;
◇ 安全(Safety):VMM要能够完全控制系统资源;

1.1 x86平台实现虚拟化技术的挑战

x86处理器有4个特权级别,Ring 0 ~ Ring 3,只有运行在Ring 0 ~ 2 级时,处理器才可以访问特权资源或执行特权指令;运行在 Ring 0级时,处理器可以运行所有的特权指令。x86平台上的操作系统一般只使用Ring 0和Ring 3这两个级别,其中,操作系统运行在Ring 0级,用户进程运行在 Ring 3 级。
 

1.1.1 特权级压缩(ring compression)

为了满足上面所述的需求,VMM自身必须运行在Ring 0级,同时为了避免GuestOS控制系统资源,GuestOS不得不降低自身的运行级别而运行于Ring 3(Ring 1、2 不使用)。

此外,VMM使用分页或段限制的方式保护物理内存的访问,但是64位模式下段限制不起作用,而分页又不区分Ring 0,1,2。为了统一和简化VMM的设计,GuestOS只能和用户进程一样运行在 Ring 3。VMM必须监视GuestOS对GDT、IDT等特权资源的设置,防止GuestOS运行在Ring 0级,同时又要保护降级后的GuestOS不受Guest进程的主动***或无意破坏。

1.1.2 特权级别名(Ring Alias)

设计上的原因,操作系统假设自己运行于ring 0,然而虚拟化环境中的GuestOS实际上运行于Ring 1或Ring 3,由此,VMM必须保证各GuestOS不能得知其正运行于虚拟机中这一事实,以免其打破前面的“等价执行”标准。例如,x86处理器的特权级别存放在CS代码段寄存器内,GuestOS却可以使用非特权PUSH指令将CS寄存器压栈,然后POP出来检查该值;又如,GuestOS在低特权级别时读取特权寄存器GDT、LDT、IDT和TR时并不发生异常。这些行为都不同于GuestOS的正常期望。

1.1.3 地址空间压缩(Address Space Compression)

地址空间压缩是指VMM必须在GuestOS的地址空间中保留一段供自己使用,这是x86虚拟化技术面临的另一个挑战。VMM可以完全运行于自有的地址空间,也可以部分地运行于GuestOS的地址空间。前一种方式,需在VMM模式与GuestOS模式之间切换,这会带来较大的开销;此外,尽管运行于自己的地址空间,VMM仍需要在GuestOS的地址空间保留出一部分来保存控制结构,如IDT和GDT。无论是哪一种方式,VMM必须保证自己用到地址空间不会受到GuestOS的访问或修改。

1.1.4 非特权敏感指令

x86使用的敏感指令并不完全隶属于特权指令集,VMM将无法正确捕获此类指令并作出处理。例如,非特权指令SMSW在寄存器中存储的机器状态就能够被GuestOS所读取,这违反了经典虚拟化理论的要求。

1.1.5 静默特权失败(Silent Privilege Failures)

x86的某些特权指令在失败时并不返回错误,因此,其错误将无法被VMM捕获,这将导致其违反经典虚拟化信条中的“等价执行”法则。

1.1.6 中断虚拟化(Interrupt Virtualization)

虚拟化环境中,屏蔽中断及非屏蔽中断的管理都应该由VMM进行;然而,GuestOS对特权资源的每次访问都会触发处理器异常,这必然会频繁屏蔽或启用中断,如果这些请求均由VMM处理,势必会极大影响整体系统性能。

1.2  X86平台虚拟化

完整意义上的计算机由硬件平台和软件平台共同组成。根据计算机体系结构理论,其硬件平台包括CPU、内存和各种I/O设备;而软件平台则包括BIOS、操作系统、运行时库及各种应用程序等。对于主机虚拟化技术来讲,其主要负责虚拟硬件平台及BIOS,而操作系统、运行时库及各种应用程序可以使用以往在物理平台上各种现有技术及产品。


full-virtualization 完全虚拟化,虚拟机以为自己运行在真实机器上

  CPU不支持硬件虚拟化技术,模拟特权指令;简称模拟

  CPU支持硬件虚拟化技术,VMM运行ring -1;而guestOS运行在ring 0; 简称HVM(Hardware-asistant VM)

para-virtualization 半虚拟化,虚拟机知道自己运行在虚拟化上 简称PV

 CPU IO  MEMORY


PV on HVM


虚拟化模型,

1.Vmware workstation 在操作系统上安装VMM

   Vmware workstation有:Vmware Server

2.VMWare ESX 在硬件上直接安装VMM,此时的VMM相当于精简的系统,只为VMM提供服务。

   VMWare ESX免费版的有:VMWare ESXi简装版

3.Xen,在硬件上安装Xen,然后再Xen上安装操作系统,比如Linux,操作系统在这里称作为Dom0=特权域。然后Dom0提供管理界面,主要对CPU,memory,interrupt提供虚拟技术



KVM基于内核的虚拟化(完全虚拟化)

KVM+QEMU 只能运行在支持硬件虚拟化的CPU上,只能跑64位系统

QEMU虚拟化的CPU效果没有KVM好


KVM-virtio(IO设备的半虚拟化技术)




Container:

在系统上提供多个用户空间,直接和硬件内核交互。

有点性能好,缺点没有完全虚拟化和半虚拟化隔离效果好

OpenVZ



wine 在Linux上虚拟windows库

cywin在windows上虚拟linux库



Intel:IOMMU


x86:平台虚拟化技术

   Intel:VT-x,EPT,IOMMU







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章