Index ソフト・ハード KVM | KVMの構成・方式 |
機能・要件 構成・方式 場所(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」コマンドでは異なる値になる。 |
All Rights Reserved. Copyright (C) ITCL |