KVM周りについてのメモ

what-is-kvm

KVMとは?QEMUやlibvirtの違いって何なの?
な状態だったので、今一度調べてみたので、メモを残します

先に参考情報

コンピュータを構成する3台要素

要素 担当
CPU KVMカーネルモジュール
システムメモリ QEMU
I/Oデバイス QEMU

KVMとは

KVM は Kernel-based Virtual Machine の略
Linuxカーネルに搭載されている、仮想化を支援する機能(モジュール)

KVMはモジュールでしかなく、単体では機能しないので、
QEMUのようなエミュレータが必要になる

KVMを使うためには、CPUが仮想化に対応している必要がある
Intel製 -> Intel VT-x(Virtualization Technology)
AMD製 -> AMD-V(AMD Virtualization)

[root@intel-server]# lsmod | grep kvm
kvm_intel             282624  0
kvm                   663552  1 kvm_intel

KVMはもともと、イスラエルのQumranet社が開発したOSSで、
2006年10月にアナウンスされた後、たった2カ月後の
2006年12月に、Linux Kernelにマージされて話題になったらしい

QEMUとは

QEMU は 汎用なオープンソースのマシンエミュレータ・バーチャライザー

QEMUは単体で仮想マシンの作成・起動・管理を一通り対応できるが、
CPUの処理まで全てソフトウェア的に再現すると、性能が劇的に低下する

KVM経由で、実CPUに仮想マシン上のプログラムを直接実行させることで、
仮想マシンの実行速度を向上させるようにしている

QEMUはフランスの著名なソフトウェア開発者、
ファブリス・ベラール(Fabrice Bellard)氏が開発を創始し、
GPLに基づいてオープンソースソフトウェアとして公開されている

libvirtとは

libvirt は 仮想マシンを管理するソフトウェア群で、
APIライブラリ, libvirtd, virsh を含んでいる

libvirtは様々な仮想化プロバイダ/ハイパーバイザを管理する共通の手段を提供する
KVM/QEMU, Xen, LXC, OpenVZ, VirtualBox など、サポート範囲が広い

OpenNebula は 仮想マシンの管理に libvirt を使って
設定の一部を特定のハイパーバイザに依存しないようにしているらしい

[蛇足] libvirtdを使ってみる

前準備
# 作業用コンテナを作成
docker run -it --rm --privileged=true --name tmp centos:centos7.9.2009 /bin/sh

## NOTE: --privileged=true がなければ
## Failed to create controller cpu for group: Read-only file system となる


# KVM周りのパッケージをインストール
yum install -y qemu-kvm libvirt virt-install

# libvirtd, virtlogd を起動する
/usr/sbin/libvirtd -d
/usr/sbin/virtlogd -d
KVM/QEMUで作ったVMを動かそうとしてみるも、、

下記のやり方だとKVMが正しく動作してないようで、
コンテナでKVM動かしてみる実験はここで一旦断念した

# VMを作成
virt-install \
  --network=none \
  --name test-vm1 \
  --vcpus 1 \
  --memory 1024 \
  --disk path=/var/lib/libvirt/images/test-vm1.img,size=20 \
  --location 'http://ftp.iij.ad.jp/pub/linux/centos/8-stream/BaseOS/x86_64/os/' \
  --os-type linux \
  --os-variant rhel8.0 \
  --graphics none \
  --console pty,target_type=serial \
  --extra-args 'console=tty0 console=ttyS0,115200n8'

## NOTE: WARNING KVM acceleration not available, using 'qemu'
## ...
## Reached target Basic System
## ここでハングした

コメント

タイトルとURLをコピーしました