機能・要件 
 構成・方式 
    場所(CentOS7) 
    マシンLinux 
    構成ソフトウェア 
    必要パッケージ 
    QEMU/KVM構造 
    KVMのモード 
    仮想CPU 
    仮想メモリ 
    仮想ディスク 
    ストレージプール 
    仮想ネットワーク 
 の動作 
 タスク 
 導入 

 仮想化 
 場所(CentOS7)
 ・ストレージプール(仮想マシンのイメージの保管場所)
/var/lib/libvirt/images (デフォルト)
 ・仮想マシンの設定ファイル
/etc/libvirt/qemu/

 ハイパーバイザとなるマシンLinux
 ・マシンLinuxは、KVMのモジュールが組み込まれていることを除けば普通のLinuxと同じ。
モジュールの代表例はデバイスドライバ

 Linux KVMを構成するソフトウェア
 ・Linuxカーネル
 ・KVMのカーネルモジュール
 ・qemu-kvm(ユーザモードのプログラム)
 ・仮想マシン
 ・libvirtd
 ・virt-manager(仮想マシンマネージャ)
仮想マシンを管理するlibvirtプロジェクトのGUIインタフェース
仮想マシンのGUIインストール時に使用するコンソールとして使用
(極力コマンドで行う。)
virsh

 必要なパッケージ
 ・libvirt
仮想化ソフト管理用の共通API
 ・python-virtinst
 ・qemu-kvm
qemu-kvm:ハードウェアエミュレータ
メモリやディスクI/Oをエミュレート
(CPUエミュレートはCPUの仮想化支援機能で行う。)
 ・bridge-utils
仮想ブリッジのユーティリティ
(仮想ブリッジの作成はNetworkManagerから行う。)
(NetworkManagerが入っている環境ではネットワーク関連は全てこれから行う。)
 ・virt-install
インストールメディアなどから新しい仮想マシンを作成する。

 QEMU/KVMの構造
 ・KVMカーネルモジュール(デバイスドライバ)の導入
Linux Kernelがハイパーバイザとなる。
 ・QEMUというプロセス1つがゲストシステム1つに対応する。
複数のゲストシステムを起動する場合、同数のQEMUプロセスが起動する。
 ・QEMUは、マルチスレッドプログラム
ゲストシステムの一つの仮想CPUは、QEMUプロセス内の一つのスレッド
 ・QEMUのプロセススレッドは、Linux Kernelからは、
  他の一般的なユーザプロセスと同様に扱われる。
ゲストシステムのVirtual CPUに対応するスレッドなどのスケジューリングも
他のプロセススレッドと同様にLinux Kernelのスケジューラが担当する。

 KVMの持つモード
 ・既存のカーネル・モード
コード実行に対する特権モードのこと
 ・ユーザー・モード
特権のないモード(カーネルの外側で実行されるプログラム用) を表している。
 ・ゲストという新しいプロセス・モードを Linux に導入
ゲストOSのコードを実行するためのモード(実行対象となるのは入出力以外のコード)
ゲスト・モード内には標準の2 つのモードが含まれる。
ゲストOSはゲスト・モードで実行されていても、そのカーネルとユーザー空間の
アプリケーションに対しては標準カーネルとユーザー・モードをサポートする。
ゲストOSのユーザー・モードは、単独で管理される入出力の実行を目的とする。
ゲストOSからの入出力の実行は、QEMU によって行われる。

 仮想CPU
 ・複数の仮想CPUを割り当て
1つのプロセス内で複数の処理を平行して行うマルチスレッドの仕組みを利用

 仮想メモリ
 ・「割り当てを変更」と「最大割り当て」両方に同じ値を設定しておく。

 仮想ディスク
 ・ディスクイメージ
DVD、HDなどの記憶装置のデータを、ファイルシステムの構造や制御情報などと
一緒に丸ごと写しとって一つのファイルする。
 ・参考(wiki)

 ストレージプール
 ・libvirtにある、VMイメージやファイルシステムの場所を抽象化するための便利な機能
 ・デフォルトでは仮想マシンのイメージの保管場所(ストレージプール)は、
  /var/lib/libvirt/images
 ・仮想ゲストを新規作成するときに、デフォルトのプールが定義される。
# virsh pool-list
名前 状態 自動起動
-------------------------------------------
default 動作中 はい (yes)

 ・ストレージプールを使わなのであれば、qemu-imgで、デスクイメージを作成して、
  ディスクイメージを指定する。
# qemu-img create -f qcow2 /var/lib/libvirt/images/centos7.img 5G

 仮想ネットワーク
 ・仮想マシンの仮想NIC⇔ホストLinuxのTAPデバイス(仮想NIC)⇔仮想ブリッジ⇔物理NIC
 ・複数の仮想ブリッジの構成も可能
 
 ・TAPデバイスのMACアドレス
kernelがMACをブリッジデバイスへ自動的に割り当てているだけ。
libvirtは先頭を「0xFE」にする。
「tunctl」コマンドでは異なる値になる。