KVM



KVM

概要


Kernel-based Virtual Machine - Wikipedia
Kernel-based Virtual Machine (KVM) は、Linuxカーネル仮想化基盤。Linuxカーネル 2.6.20 以降に標準搭載されている。

Intel VTまたはAMD-Vを使ったネイティブ仮想化をサポートしている。またLinuxおよびWindowsをゲストOSとして、準仮想化を限定的にサポートしている。これには準仮想ネットワークドライバ、ゲストOSの仮想記憶管理の動作を変更するバルーンドライバ、Linuxゲスト向けのCPU最適化などが含まれる。KVMは今のところローダブル・カーネル・モジュールとして実装されている。

KVM上で動作するゲストOSは幅広く、各種Linux、BSD、Solaris、Windows、Haiku、ReactOS、AROS Research Operating System などが動作する。また、パッチを当てれば Mac OS X が動作する。

KVM自体はAPICなど一部を除いて周辺装置のエミュレーションをしない。/dev/kvm インタフェースを使うユーザープログラムがゲストのアドレス空間を設定し、周辺装置のエミュレーションを提供し、ゲストのI/OをホストのI/Oにマッピングする。この機能を担うプログラムとしては、QEMU(0.10.0 以降)がある。



準仮想化

  • 【VPS(KVM)】準仮想化ドライバー(virtio)とはなんですか? -お名前.comヘルプセンター
    • 準仮想化方式は、完全仮想化方式と比較してデバイスへのアクセス速度で有利であることが多いため、 お名前.comのKVMプランでは、完全仮想化方式と「virtio」が利用可能な準仮想化方式の両方をご用意しております。
    • OS再インストールの際に、利用するOSに合せてvirtioのON、OFFを選択してください。運用途中でもON,OFFは可能です。なお、virtioの詳細な情報につきましては、お客様にてお調べくださいますようお願いします。
  • さくらのクラウド、virtio対応につきまして | さくらのクラウドニュース
    • これまで「さくらのクラウド」ではディスクの接続方式として完全仮想化によるIDE デバイスをご利用いただいておりましたが、本日よりIDEに加えて準仮想化によるvirtioでのご利用が可能となりました。
    • ※ 使用されるOSによってはドライバを別途インストールする必要がございます。
    • IDE ではデバイスの仕様上ディスクに対して同時に複数の I/O を発行することができませんでしたが、virtioではそれが可能になります。

  • virtio: Linux の I/O 仮想化フレームワーク
    • Linux カーネルは多様な仮想化方式をサポートしています。このサポートの幅は、仮想化技術の進化、そして新しい仮想化方式の発見 (例えば lguest など) に伴って広がっていくはずです。では、こうした Linux 上で機能する仮想化方式では、どのようにしてベースとなる Linux カーネルを I/O 仮想化に利用しているのでしょうか?その答えは virtio です。
    • 一言で言うと、virtio は準仮想化ハイパーバイザー内のデバイスを抽象化する層です。
    • まずは、完全仮想化と準仮想化という 2 つの異なる仮想化方式について簡単に説明しておきます。完全仮想化では、ゲスト・オペレーティング・システムはベア・メタル上にある (つまりハードウェア上で実行される) ハイパーバイザー上で直接動作します。この場合、ゲスト・オペレーティング・システムは、仮想化が行われていることを認識することはありません。また、この仮想化構成で機能するためにゲスト・オペレーティング・システムに手を加える必要もありません。それとは逆に準仮想化では、ゲスト・オペレーティング・システムはハイパーバイザー上で動作していることを認識します。さらに、ゲスト・オペレーティング・システムには、ハイパーバイザーとのインターフェースを効率化するためのコードが組み込まれます
    • 完全仮想化方式の場合、ハイパーバイザーはデバイス・ハードウェアをエミュレートしなければなりません。これは、最下位レベルでの (例えば、ネットワーク・ドライバーの) エミュレーションになります。この抽象化レベルでエミュレーションをすると、明確ではあるものの、最も非効率的で極めて複雑な作業になります。一方、準仮想化方式ではゲスト・オペレーティング・システムとハイパーバイザーが連携して動作することができるので、エミュレーションが効率化されます。ただし準仮想化方式の場合、ゲスト・オペレーティング・システムは、仮想化が行われていることを認識することになり、仮想化構成で機能するためにはゲスト・オペレーティング・システムに手を加える必要があるという欠点があります。
    • virtio の代わりとなる手段
      • この領域における選択肢は virtio だけではありません。Xen では準仮想化デバイス・ドライバーを提供していますし、VMware にもゲスト・ツールという代替手段があります。

  • Virtio - KVM
    • Virtio was chosen to be the main platform for IO virtualization in KVM
    • The idea behind it is to have a common framework for hypervisors for IO virtualization

KVM のネスト


  • ひとこと
    • KVM on KVM なネスト=入れ子が可能
    • ただし、基盤のホストOSでの設定が必要で、VPS では可否があるようです
    • /proc/cpuinfoflags :vmx があればネスト可能だそうです
    • 下記記事によると、KDDI の CloudCore VPSでは可能の由

vmx が無い例
# cat /proc/cpuinfo
~~~~~~~~
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx lm constant_tsc unfair_spinlock pni ssse3 cx16 hypervisor lahf_lm





記事から
  • 次世代のクラウドのためのネストされた仮想化
    • 2012年 9月 20日
    • 「ネストされた仮想化」と呼ばれるこの技術は、より深いソリューション・スタックを可能にし、例えばゲスト仮想マシンをゲスト・ハイパーバイザー上に配置し、そのゲスト・ハイパーバイザーを、クラウドが選択したハイパーバイザー上で実行するといったことを可能にします。
    • 完全仮想化と準仮想化
      • ハイパーバイザーの形態には、透過的な完全仮想化ハイパーバイザーから半透過的な準仮想化ハイパーバイザーまで、複数の形態があります。どの形態が最適であるかについての議論は今でも続いていますが、興味深い点は、ほとんどのハイパーバイザーがゲスト・ツールの追加という方法で準仮想化をサポートすることです。ゲスト・ツールは、ゲスト・オペレーティング・システムの I/O 処理の効率を高めるために、ゲスト・オペレーティング・システムの内部にインストールされるため、ほとんどのハイパーバイザーは完全仮想化の機能も準仮想化の機能も提供することとなり、完全仮想化と準仮想化の違いはそれほど重要でなくなってきています。


  • @IT編集部のblog : 仮想マシン上で仮想マシンを動かす3つのメリット
    • 2009/10/16 頃
    • 先週末、Linuxカーネルの仮想環境モジュール「KVM」を開発している米レッドハットのアヴィ・キヴィティ氏にお話しを聞く機会がありました。
    • 講演後に少し話を聞いたのですが、1つ、とても面白い試みだなと思ったことがあります。それは「Nested VMX」という実装作業中のアイデアです。
    • 何をするかというと、ハイパーバイザ上で稼働する仮想マシンの中で、さらにハイパーバイザを動かし、さらにその仮想化マシンの上でハイパーバイザを……、と好きなだけ仮想化をネストさせるというものです。そんなことができるのかと、ちょっと驚きですが、理論的には本当に好きなだけネスト可能なのだそうです


  • 最終更新:2013-12-02 19:48:41

このWIKIを編集するにはパスワード入力が必要です

認証パスワード