2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

KVMによる仮想環境について

Posted at

●KVM(Kernel-based Virtual Machine)
Linuxカーネルの仮想化機能。

●KVMによる仮想化機能の有効化
完全仮想化を実現するため、仮想化支援機能を搭載したCPUが必要。仮想化支援機能とは仮想化ソフトウェアが行う処理の一部をCPUが分担することで処理を高速化する機能で、Intel VTやAMD-Vで実装。
CPUが仮想化支援機能をサポートしているかどうかを調べるには、lscpuコマンドや「/proc/cpuinfo」ファイルを確認。
lscpuコマンドでは「Virtualization」(日本語では「仮想化」)の値が"VT-x"(Intel VT)または"AMD-V"(AMD-V)と表示されればサポートしています。

「/proc/cpuinfo」ファイルでは「flags」において"vmx"(Intel VT)または"svm"(AMD-V)という値があるかどうかを確認。

また、仮想化支援機能を利用するために、カーネルモジュールkvm(kvm.ko)に加えて、以下のどちらかのカーネルモジュールをホストOSのカーネルにロードする必要がある。これらのモジュールはカーネルに組み込むことも可能。
・kvm_intel(kvm-intel.ko)...Intel VT-xを使用する場合
・kvm_amd(kvm-amd.ko)...AMD-Vを使用する場合

●KVMによる仮想環境の管理

KVMの特徴

・QEMUによるハードウェアエミュレーション
QEMUとはオープンソースのハードウェアエミュレータ。KVMでは、QEMUを利用して仮想マシンの作成、起動、停止などの基本動作を行う。QEMUで実行される仮想マシンはLinuxの1プロセスとして動作するので、他のプロセスと同様に管理できる。また、「/dev/kvm」というデバイスファイルを通じてKVMとやり取り。

・libvirtに対応
libvirtはオープンソースの仮想化管理用のソフトウェア。KVMではデフォルトの管理方法。
libvirtを利用するプログラムとしては、GUIの仮想マシン管理ソリューションであるvirt-managerや、CLIのvirshコマンドなど。

libvirtは数多くの仮想化ソフトウェアに対応。
Oracle VM VirtualBox、VMware ESX/GSXi/Workstation、 Microsoft Hyper-V など

libvirtを用いて仮想環境を管理するためにはlibvirtdデーモンが稼働している必要がある。

●ハイパーバイザー型の実現方法には更に「完全仮想化」と「準仮想化」がある。

■完全仮想化
完全仮想化(Full Virtualization)は、コンピュータのハードウェアをエミュレー卜(模倣)して仮想マシン上に完全な論理コンピュータを実現し、ゲストOSを無修正で動。そのため、ソースコードを自由に書き換えることができないWindowsをゲストOSとしてインストールすることが可能。

■準仮想化(PV:Paravirtualization)は、ハードウェアのエミュレーションが必要ないため、処理のオーバーヘッドが小さく、仮想化環境でも高いパフォーマンスを発揮。準仮想化はゲストOSを修正するか、仮想マシンに特化したデバイスドライバを使うことで実現。KVMやVirtualBoxでは、virtioという準仮想化用のドライバを利用することによって、仮想化環境でのI/Oパフォーマンスを高めることができます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?