虚拟化基础知识

虚拟化的起源

发展由来

  • 60年代在大型机上虚拟技术已经有所应用
  • 99年在小型机上已经出现逻辑分区的应用
  • 2000年x86平台虚拟技术开始出现(VMWare)
  • 2001年x86平台虚拟化技术在服务器上应用

虚拟化技术动力

  • CPU速度越来越快,超出软件对硬件性能的要求
  • INTEL和AMD在CPU里加入虚拟指令
  • 企业成本压力
  • 环保压力
  • 不断增长的业务压力

传统架构资源利用率低

传统架构下,APP:OS:Phy=1:1:1。这样就造成资源利用率低,为了不造成资源浪费,会增加APP部署。进而产生的影响就是不同应用之间的资源抢占,隔离性差。而OS只提供应用运行的环境,不能解决一时问题。

为了在不造成冲突的前提下提高资源利用率,最好是在一个OS上部署一个APP,于是就出现了虚拟化的技术。在一台主机上部署多个虚拟客户机并安装OS,每个OS安装一个APP,这样就解决了问题。APP:OS:Phy=n:n:1。

为什么需要操作系统

应用运行时需要用到多种资源,CPU、内存、IO等。而每个应用都会认为这些资源全部是自己可用的,这时多个应用之间就会出现资源使用冲突。这是因为没有一个调控机制。这时就需要一个操作系统。

操作系统把CPU抽象化,让应用认为自己拿到了CPU。当应用想要使用CPU这些资源时,就发动系统调用:System Call,由操作系统进行资源分配。

在单核单线程时,如果要让两个应用同时运行,这时操作系统就会对CPU进行时间片分片。

指令集

硬件CPU可以模拟,而指令集是让CPU干活的命令。如果虚拟机能够全部使用指令集,那么有一些特殊指令如关机,被发送给CPU,就会导致真实机器受影响。

在经典虚拟化里面,如果虚拟机想要使用一些特殊的指令集,真机操作系统检测到了,就立即捕获这个指令请求,然后将指令的结果模拟给虚拟机。这种虚拟化需要对真机操作系统做改造。

而在x86架构中,除了特权指令集合普通指令集,还有一个敏感指令集,它不是特权指令但可能会触发特权指令的执行。这种敏感指令很难捕获,却必须捕获。目前有三种方式解决x86的敏感指令问题:全虚拟化,半虚拟化,硬件辅助虚拟化。

发表评论

电子邮件地址不会被公开。 必填项已用*标注