記事のディレクトリ
サーバの仮想化技術
1.歴史的発展
乳児期 - 1960
1959年6月、クリストファー・ストレイチーは初めての国際会議での情報処理の「大高速コンピュータのタイムシェアリング」というタイトルの学術報告書を発表し、「仮想」という概念を提案した
1965年8月に、IBMはシステムを導入しました/ 360モデル67とリモートユーザーの複数の最も原始的な仮想マシン技術であると同時に高性能コンピューティングデバイスを共有することができTSSタイムシェアリングシステム
開発期間 - 前世紀、70から90年
1972年に、IBMは、スケーラブルなメインフレームを作成するために使用される仮想マシン技術を発表し、IBM 360/40、このようVMM(仮想マシンモニタ、仮想マシンモニタ)などの技術によりIBM 67分の360メインフレームは、物理的なハードウェア上で生成されました多くのオペレーティングシステムは、スタンドアロン仮想マシンを実行することができます
仮想化技術の助けを借りて、高価なメインフレーム・サービスは、ユーザーが高価なメインフレームのリソースをフルに活用するために、ハードウェアロジック、および「マルチタスク」を分割することができます
アウトブレイク - 今
メインフレームやUNIXプラットフォームの仮想化技術は、開発にx86プラットフォームを継続しますが、アーキテクチャや性能の欠陥に起因して、仮想化絶縁しながら、
x86アーキテクチャの人気は、人々がより広範に仮想化技術の応用を検討し始めましたx86プラットフォームインテル、AMDは、仮想化技術を作り、マルチコアプロセッサの登場と相まってx86プロセッサは、x86プラットフォームに急速に発展している命令セット変更
、1999年には、x86の台湾向けのVMwareフラットXは、最初の商用仮想化を開始しましたソフトウェアVMware Workstationは、今から、仮想化技術は、x86仮想化技術の時代を開いて、祭壇のメインフレームダウン最後に持っています
仮想化のためのX86アーキテクチャ最初は適していません
これらの命令は、仮想環境で実行されたときに非特権命令に敏感な17 x86アーキテクチャの存在は、システムが異常発生することがあり
1.敏感な命令とは何ですか?
x86アーキテクチャに最初に、例えば、x86アーキテクチャ4学年の合計。大きな特権0から3まで、小さいです。オペレーティングシステムは、リング0、リング1 RING2のサポートとドライブデバイス、リング3で実行中のアプリケーション上で実行されます。キーの中には、唯一の演算命令リング0で行うことができます。特権命令と呼ばれます。VMMのモデルでは、ゲスト・オペレーティング・システムは、非リング0モードで、つまり、非特権モードで実行されています。したがって、VMM及び処理によって処理リング0を捕捉する必要性によって必要とされる元の命令の一部。これらの命令は、敏感な指示と呼ばれています。すべての機密命令は特権命令であることを。
2.できないのはなぜx86アーキテクチャのサポートシステムの仮想化の始まり?
上記の寝具の後、私たちのために重要な問題ダウン。
x86アーキテクチャは、欠陥を持っています。命令のx86アーキテクチャに敏感な部分が非特権命令に、特権命令ではありません。この問題が発生します。非特権命令ではリング1〜リング3を実行することができます。VMMは、命令を処理しません。これは、問題が生じます。VMMシステムは、命令の実行が非特権レベルを行った望んでいました。仮想レイヤで実行中の仮想制御ソフトウェアからの指示。医学部かのように、あなたと座ってコードをノック、あなたはそれをどのように感じていますか?これが問題の核心です。
しかし、その後、インターとAMDはx86アーキテクチャの不足を補うために、そのような相互のVT(仮想化技術)とAMDのSVM(仮想マシンをセキュア)技術として、自社の技術の多くを強化しています。
3.ソリューション
道
解決策1:BT(バイナリ変換、バイナリ変換)
BTの組み合わせと完全仮想化を実現する技術の実装を直接、ゲストオペレーティングシステムが完全に物理的なハードウェアうちから仮想化レイヤーによって抽出することができ、この時間は、ゲスト・オペレーティング・システムは、仮想あったかどうかを認識していない、完全に変更する必要はありません。
全虚拟化是迄今为止唯一不需要硬件或操作系统协助来进行敏感和特权指令虚拟化的技术,
Hypervisor(管理程序)可以翻译所有的操作系统特权指令,并保存在缓存里备用,而用户级的指令完全可以全速直接执行。
全虚拟化提供了最好的虚拟机隔离和安全性,简化了客户操作系统迁移和移植能力。
VMware ESX Server就是通过全虚拟化技术来实现的最好案例。
工作原理
1.Guest OS指令段在执行前进行整段翻译,将其中的敏感非特权指令替换为Ring0中2执行对应特权指令
2.非特权指令直接执行
3.特权指令首先被陷入到VMM,VMM通过一系列的模拟操作来实现此特权指令,然后返回给Guest OS,Guest OS从上次被中断的地方继续执行
优缺点
优点:
Guest OS无需修改,Guest OS感知不到是否发生了虚拟化优点
缺点:
当负载较大、敏感指令频繁被执行时性能低下
办法二
解决方法2:半虚拟化(Para—Virtualization)
如图所示,半虚拟化需要修改操作系统内核,替换掉不
能虚拟化的指令,通过超级调用(hypercall)直接和底层的虚拟化层hypervisor来通讯,hypervisor同时也提供了超级调用接口来满足其他关键内核操作,比如内存管理、中断和时间保持。
工作原理
1.在Hypervisor上运行的Guest OS已经集成了与半虚拟化有关的代码,使得Guest OS能够非常好地配合Hypervisor来实现虚拟化
2.Hypervisor提供Hypercall接口来满足Guest OS的关键内核操作,如内存管理、中断和时间同步等
优缺点
优点:
性能非常接近物理机
缺点:
不支持未修改的操作系统,兼容性和可移植性差
详细介绍
半虚拟化和全虚拟化不同,全虚拟化不需要修改上面的操作系统,敏感的操作系统指令直接通过BT进行处理。半虚拟化的价值在于降低了虚拟化的损耗,但是半虚拟化的性能优势很大程度上依赖于运行的负载。
由于半虚拟化不支持未修改的操作系统(例如: Windows
2000/XP),它的兼容性和可移植性差。在实际的生产环境中,半虚拟化也会导致操作系统支持和维护的艰难,因为半虚拟化往往要深入修改操作系统内核。
开源的Xen项目是半虚拟化的代表,它可以通过修改Linux的内核来实现CPU和内存的虚拟化,通过定制的操作系统驱动来实现I/O的虚拟化。
为了实现全虚拟化,需要构建复杂的BT技术,这往往比直接修改客户操作系统来启用半虚拟化更艰难。VMware实际上已经在产品中使用了半虚拟化的一些技术,来构建VMware Tools和优化虚拟设备驱动。
VMware tools服务为VMM Hypervisor提供了 一个后门服务,用来同步时间、记录日志和客户操作系统关机等。Vmxnet是半虚拟化的I/O设备驱动程序,它可以和hypervisor共享数据结构。这些半虚拟化技术的应用改善了设备的兼容能力,提高了数据吞吐速率,降低了CPU利用率。
需要重点澄清的是:VMware tools 服务和vmxnet设备驱动并不是CPU半虚拟化解决方案,它们紧紧对客户操作系统进行了微小的、非关键的修改,并不需要修改客户操作系统内核。
办法三
硬件辅助虚拟化解决非特权敏感指令无法陷入问题的解决思路:引入VMX模式(Virtual Machine eXtension)
VMX模式
示されているように、敏感と特権命令は、BTまたは半仮想化技術の必要性を排除し、自動的にハイパーバイザー上で実行します。保存されているゲストオペレーティングシステムの状態VT-X (仮想マシン制御構造、仮想マシン制御構造)またはAMD-V (仮想マシンの制御ブロック、仮想マシン制御ブロック)。2006年の市場からのIntel VTやAMD-VのCPUのサポート、唯一の新システムは、ハードウェア支援による仮想化機能が含まれています。
画像は、x86アーキテクチャのハードウェア支援による仮想化を示します
ゲストオペレーティングシステムの変換損失と厳格なプログラミングモデルへのハイパーバイザーが必要であるため、第一世代のハードウェア支援による仮想化のパフォーマンスが理想的ではない、非常に多くの場合、BT技術のVMwareの優れたパフォーマンス。
最初のハードウェア支援による仮想化プログラムの第一世代は、ゲストオペレーティングシステムの変換ロスにハイパーバイザーを高め、ソフトウェアの柔軟性を減らし、小さなスペースを残したが、正式にこれに基づいて、VMwareは、のみまれに使用こうした64ビットオペレーティングシステムのサポートなど、世代ハードウェア支援による仮想化、Intelプラットフォーム上で、VMwareはIntelのVT-xのを使用する場合。
主流の製品のハイパーバイザ