基础知识:虚拟机的构成和cpu的虚拟化

1、 计算虚拟化包括了“一虚多”和“多虚一”;现在阶段硬件能力过盛,一虚多”成为主流。

2、 裸金属架构更适合部署在资源池内如VMWARE、CitrixXenServerv、RHEV,适合企业使用,寄居架构适合单机,适合个人折腾。

3、 全虚拟化和半虚拟化各有优缺点。KVM发展迅猛,XEN开始走入暮年。

其实,对于应用来看,虚拟机就是一台X86服务器。所以能运行在X86服务器上的应用,也能运行在虚拟机上。虚拟机的构成和物理机也完全一致,主要是CPU、内存、硬盘,输入、输出设备。但是虚拟机的这些“构件”都是虚拟或共享的,都可以由所在的物理机提供出来的,但是为了实现虚拟机的迁移功能,虚拟机的硬盘最好由和这台物理服务器相连的共享存储提供。

CPU虚拟化技术主要分为两大部分。一是将CPU核运行时间进行切片,通过VMM(虚拟化层管理)调度,将CPU运行时间片分配、调度到不同的虚拟机上,当虚拟机运行完成或超时,将这个时间片控制权交回VMM,再进行下一次的调度。分配给应用的vCPU不是固定在某个CPU上,它只是可以执行命令的一个或几个时间片,这一次分配在这些物理核上,下一次分配在另外一些核上。通过时间片,可以提高物理CPU的利用率。原来物理机的CPU好比是私家车,上下班的时候在路上跑,平时都停在路边;CPU被时间切片被调度后就像加入“优步”的私家车,一直在路上跑,有需求就搭客运营,提高了利用率。

二是CPU需要“欺骗”虚拟机上的操作系统(guest OS)执行敏感指令。CPU是通过Ring级别来进行访问控制的,级别共分4层,RING0,RING1,RING2,RING3。RING0层拥有最高的权限,是个操作系统使用的,可以访问所有层的数据,而其他驱动程序位于RING1、RING2层,RING3可以运行应用。每一层只能访问本层以及权限更低层的数据。如果普通应用程序企图执行RING0指令,则会认为“非法指令”错误信息。但是在虚拟机内,RING0被比guest OS更“低级”的VMM所霸占,只能运行在RONG1。而操作系统的有些指令一定要在RING0执行的,这些指令叫做敏感指令。RING0已经被“控制者”霸占,在执行浙西敏感指令时候就会出现异常而“陷入”,执行一定会出现异常。如何处理“陷入”的敏感指令就是CPU虚拟化需要干的事情。

解决这个冲突,有2种方法:软件模拟和硬件支持(Intel VT-x和AMD SVM)。

软件模拟的方式就是当这些“陷入”的指令被送到VMM层进行模拟并执行,并将执行的结果返回到虚拟机的guest OS。模拟执行的方法有很多种,典型的有解释执行和二进制执行。软件模拟的方法效率相对硬件支持要低,所以在采购资源池的X86服务器都要求采购带有Intel VT-x和AMD SVM标志的64位服务器,因为现在CPU硬件就可以解决这个问题。

以Intel VT-x为例,VT-x提供了一套称作VMX的新的工作模式,工作在该模式下的处理器又具有两类操作模式:VMX root operation和VMX non-root operation。VMM占据VMX root operation,而guest OS使用VMX non-root operation。对操作系统来说,VMX non-root operation模式与传统的x86处理器兼容,最大的差别在于当虚拟机执行一些访问全局资源的指令时将导致虚拟机退出操作(VM-Exit),从而使VMM获得控制权,以便对访问全局资源的指令进行模拟。然后,VMM可以通过虚拟机进入操作(VM-Entry)使虚拟机重新获得控制权。

虚拟化的CPU和物理机的CPU还是有一定的差别。就像上面的例子,物理机的CPU是固定被操作系统占用的,用和不用,都是被一个操作系统控制的,所有CPU配置越大,不会影响应用的执行,只是CPU的利用率越来越低。但是虚拟CPU就不一样了,当你配置的CPU的核数越多,本质上是等待相应核数的时间片,而且VMM的调度程序一定要等到配置的vCPU的核数全部到位后,才能执行,所以在超配的情况下,核数越多,等待的时间越长。在虚拟CPU下,配置的原则是在满足需求的情况下CPU数量越少越好。也可以再看一下我以前写的文章《基础知识——CPU的分配原则》。

还有一个需要注意的,虚拟机的时钟会比实际的慢。因为计算机的时间是通过CPU的主频计算出来的,虚拟机的时间也是靠vCPU计算出来的,而vCPU经常被调度到其他虚拟机上,“时间被偷走了”,虚拟机上的时间走的慢。所以虚拟机最好连接时间同步服务器。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
拟机在我们测试项目中经常用来搭建测试环境,所以 一个虚拟机一般以一系列文件的形式储存在宿主机中,这些文件一般在由Workstation为虚拟机所创建的那个目录中。 这里列出了这些关键文件的扩展名。在这些例子中,<vmname>表示你的虚拟机名字。 (举例格式) 扩展名 文件名 描述 .log <vm name>.log or vmware.log 这个文件记录了VMware Workstation对虚拟机调节运行的情况。当你碰到问题时,这些文件对我们做出故障诊断非常有用。这个文件和虚拟机的配置文件(.vmx)储存在一个目录里面。 .nvram <vm name>.nvram or nvram 这是一个储存虚拟机BIOS状态信息的文件。 .vmdk <vmname>.vmdk 这是一个虚拟磁盘文件,它储存了虚拟机硬盘驱动器里的内容。 一台虚拟机可以由一个或几个虚拟磁盘文件组成。如果你已经特别指定了虚拟磁盘每2GB为一单独文件的话,虚拟磁盘的大小就决定了虚拟磁盘文件的数量。随着数据写入虚拟磁盘,虚拟磁盘文件将变大,直到这些文件为2GB。(如果你在创建虚拟磁盘时已经把所有的空间都分配了,那么这些文件将在初始时就具有最大尺寸并且不再变大了)。几乎所有的虚拟磁盘文件内容关于虚拟机里的磁盘数据,仅仅一小部分是虚拟机的分区信息。 如果虚拟机是直接与物理硬盘所连接而不是虚拟磁盘的话,虚拟磁盘文件则保存着虚拟机能够访问的分区信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值