KVM仮想化関連の理論

1.関連する概要

  • 仮想化テクノロジー:仮想化テクノロジーを使用してコンピューターを複数の論理コンピューターに仮想化し、1台のコンピューターで同時に複数の論理コンピューターを使用できるようにします。
  • 同時に、各論理コンピュータは異なるオペレーティングシステムを実行でき、アプリケーションプログラムは相互に影響を与えることなく相互に独立したスペースで実行できるため、コンピュータの作業効率が向上します。

2.KVMの概要

* KVM (Kernel-based Vritual Machine)——基于内核的虚拟机
* KVM是基于虚拟化打展的X86硬件的开源Linux原生的全虚拟化方案(要求cpu支持Intel-VT-x或AMD-V)
* KVM内嵌于内核模块中,模拟处理器和内存以支持虚拟机运行
* 虚拟机被实现为常规的Linux进程,由标准Linux调度程序进行调度;
* 虚拟机的每个虚拟CPU被实现为一个常规的Linux进程。这使得KMV能够使用Linux内核的已有功能
* 但KVM本身不执行任何模拟。需要客户空间程序(虚拟机)通过/dev/kvm (此虚拟设备需要开起硬件辅助虚拟化才能看到)接口设置一个客户机虚拟服务器的地址 空间,
* 并且由Qemu模拟/O (ioctl) 进行调度资源和维护管理
* Libvit: KVM的管理工具,除了可以管理KVM这类VMM,还可以管理Xen, VirtualBox, 甚至OpenStack底层
* Libvirt包含3个组件:后台daemon程序libvirtd. API库、 命令行I具virsh

KVM仮想化アーキテクチャと3つのモード

  • ゲストモード(guestOS):VMのOSはGuestOSです

  • クライアントがオペレーティングシステムで実行されるモード。クライアントはカーネルモードとユーザーモードに分けられます。

  • ユーザーモード:仮想マシン管理用のユーザースペースツールをユーザーに提供し、ユーザーに代わってI / Oを実行します。Qemuはこのモードで動作します(Qemuの主な機能)

  • Linuxカーネルモード:CPUとメモリをシミュレートし、クライアントモードの切り替えを実現し、クライアントモードの導入に対処します。KVMはこのモードで実行されます。これはKVM原則です。

  • ゲスト:CPU(vCPU)、メモリ、およびドライバー(コンソール、ネットワークカード、I / Oデバイスドライバーなど)を含むゲストシステムは、
    KVMによって制限付きCPUモードで実行されます。
    KVMカーネルモジュールは、仮想マシンの操作をサポートするためにプロセッサとメモリをシミュレートします
    。Qemuは主にI / Oを処理し、
    デバイスの入力と出力専用の仮想マシン管理ioctl(定義)システム呼び出し用のユーザースペース/ dev / kvmツールlibvirtを顧客に提供します。運用
    libvirt:KVM管理ツール
    上記は完全な仮想化プラットフォームを構成します

可以简单理解为:
KVM驱动提供处理器、内存的虚拟化,以及客户机I/O的拦截,guest的I/O被拦截后,交由Qemu处理
Qemu利用接口libkvm调用(ioctl)虚拟机设备接口/dev/kvm来分配资源、管理、维护虚拟机

KVMワークフロー

用户模式的Qemu利用接口libkvm 通过 ioctl系统调用进入内核模式。KVM驱动为虚拟机创建虚拟CPU和虚拟内存,然后执行VMLAU-NCH指令进入客户模式,装载Guest OS并运行。Guest OS运行过程中如果发生异常,则暂停Guest OS的运行并保存当前状态同时退出到内核模式来处理这些异常。
内核模式处理这些异常时如果不需要V/O则处理完成后重新进入客户模式。如果需要V/O则进入到用户模式,则由Qemu来处理I/O,处理完成后进入内核模式,再进入客户模式

3.仮想化テクノロジーの開発

1961年,IBM709机器实现了分时系统,将CPU占用切分为多个极短的时间片(1/100sec)每一个时间片执行不同的工作,通过对这些时间片进行轮询从而将一个CPU伪装成多个CPU

1972年,IBM正式将system370机分时系统命名为虚拟机

1990年,IBM推出的system390机支持逻辑分区(将一个CPU分为多份,相互独立,也就是逻辑分割)

Xen 2003年问世,是一个外部的hypervisor/VMM程序(虚拟机管理程序),能够控制宿主机和给多个客户机分配资源

KVM:2007年问世,现已内置在kernel内核中的
Xen 支持的虚拟化技术:全虚拟化,半虚拟化
KVM支持的虚拟机化技术:全虚拟化

4、3種類の仮想化

  • 完全仮想化:すべての物理ハードウェアリソースはソフトウェアによって抽象化され、最終的に呼び出されます
    • 使用方法:ハイパーバイザー(VMM)ソフトウェアを使用する場合、原則は基盤となるハードウェアとサーバーの間に抽象化レイヤーを確立することです。コアベースの仮想マシンは、CPU命令をキャプチャできるLinuxシステム用のオープンソースハイパーバイザー(VMM)です。 。ハードウェアコントローラーおよび周辺機器にアクセスするための指示の仲介役として機能します。
  • 準仮想化:オペレーティングシステムを変更する必要があります
  • パススルー:物理ハードウェアリソースを直接使用します(サポートが必要ですが、まだ完全ではありません)

5つ目は、仮想化の利点です

  • 一元管理(リモート管理、メンテナンス)
  • ハードウェア使用率の向上(ピーク値などの物理リソースの使用率が低い、仮想化によって「アイドル」容量が解決される)
  • マシン/リソース構成を動的に調整します(仮想化により、システムのアプリケーションハードウェアとサービスハードウェアが分離され、柔軟性が向上します)
  • 高い信頼性(追加の機能とソリューションを展開して、透過的な負荷分散、移行、リカバリレプリケーションなどのアプリケーション環境を改善できます)

第六に、仮想化のデメリット

  • 高い初期費用(初期ハードウェアサポート)
  • ハードウェアの使用率を削減します(特定のシナリオ-非常にリソースを大量に消費するアプリケーションなどは、仮想化に適さない場合があります)
  • エラーの影響範囲が大きくなります(ローカルの物理マシンがダウンすると、仮想マシンが使用できなくなる可能性があり、同時に、仮想マシン内のすべてのファイルが破損する可能性があります)
  • 複雑な実装構成と複雑な管理(管理者の運用と保守およびトラブルシューティングの難しさ)
  • 特定の制限(仮想化テクノロジーにはさまざまな制限があり、仮想化をサポート/互換性のあるサーバー、アプリケーション、ベンダーと組み合わせて使用​​する必要があります)
  • セキュリティ(仮想化テクノロジー自体のセキュリティリスク)

おすすめ

転載: blog.csdn.net/weixin_51614581/article/details/114595938