自由気ままに書いちゃおう

好きなことをつらつらと・・・

KVMについて

過去の記事でLPIC304の体験記を書いたのですが、当時学習した内容を少しずつアップしていこうと思います。
※アップ順番はアルファベット順を予定。

今回は、KVM(Kernel-based Virtual Machine)についてです。
※過去の投稿は、一番下にリンクのみ記載しております。

↓LPIC304の体験記はこちら↓

www.guri2o1667.work


↓使用した参考書はこちら↓

徹底攻略LPIC Level3 304教科書+問題集[Version 2.0]対応 徹底攻略シリーズ

徹底攻略LPIC-Level3-304教科書+問題集[Version-2-0]対応-徹底攻略シリーズ


■KVMについて

■特徴
Kernel-based Virtual Machineと呼ばれる、Linux自体をハイパーバイザ(hyporvisor: 仮想化モニタ、仮想化OS)とする仮想マシンソフトウェア。
 
KVMは以下のソフトウェア群から構成されている。
※KVM Kernel Module、qemu-kvmを合わせて、「CPU, I/O, メモリ」が構成されるイメージ
 
 【Linux KVM Kernel Module】
  CPU的役割
  仮想マシンの作成
  仮想マシンへのメモリ割り当て、実行
 
 【qemu-kvm(quick-emulator)】
  ディスクI/O + システムメモリ的役割
  仮想マシン上で使われる一通りのI/O デバイスエミュレータ
  仮想マシンが必要とする容量のメモリ確保

■KVMのセットアップ
 ・kvm.koと呼ばれるカーネルモジュールが必要。
 ・qemuが必要
 ・libvirtライブラリが必要
 ・bridge-utils(NWの仮想ブリッジを管理するUtility)が必要
 ・完全仮想化(HMV)を使用したい場合、CPU仮想化支援機能が必須の為、「kvm-intel.ko」「kvm-amd.ko」が合わせて必要
 
■特徴(箇条書き)
・完全仮想化をサポート
・CPUの仮想化支援機能を前提に設計/開発
・Intel VT 及びAMD-Vが必要
・ハードウェアデバイスのエミュレータが必要
・QEMUが使用されている
・カーネルの一部として組み込まれている為、カーネルのデバイスドライバをそのまま利用できる
・kvm.ko, qemu, libvirt, brige-utilsが必要
・ホストOS上にvirb0という仮想ブリッジとTAPデバイスが作成される
・Libvirtのlibvirtdデーモンによって管理される
 
■設定ファイル
 /etc/kvm

■TUN(namely network TUNnel)とTAP(namely network tap)
TUNはL3で動作し、TAPはL2で動作する。
TUNはルーティングで使用され、TAPはブリッジ作成で使用される。
 
■libvirtにおけるtapデバイスについて
KVMではlibvirtdによって作成される仮想スイッチ(br)を介して、ゲストOSとホストOSが通信可能となる。
ゲストOSの仮想NIC(vmnic)-> ホストOSのvnet0(tap) -> br0 -> ホストOSの物理NIC(vnic) -> 外部ネットワークとなる。
※vmnic,vnicはESXi用語。(イメージがつきやすいように記載した)
 
よって、tapデバイスが作成されるのはホストOS上ということになる。
 
■ネットワークモード(qemuのネットワークモード)
 ・ユーザモード
        KVM内部にプライベートなネットワークを持ち、内部ネットワークからはNAPTされてパケットが出ていく。
    尚、TCP/UDPプロトコルでしか動作しないため、ICMPは動作しない
 
■qemu-kvmコマンドについて
 KVM(QEMU)を管理/操作するための基本ユーティリティ。
 qemu-kvm オプション
 
  主なオプション
  ・-drive サブオプション
     -drive file により、特定のISOファイルを仮想マシンのドライブとしてマウントすることができる。
     パラメータ指定時に使用できるプロトコルは以下の通り。
     ・iscsi
                ・ssh
                ・http(s)
                ・ftp(s)/tftp
                
 
  ・-boot サブオプション
                KVM起動パラメータを指定することができる。OSの起動順序(検索順序)を指定可能(order=~)
 
  ・-append コマンドライン
                指定したコマンドラインを追加(実行)
                (仮想マシン起動時に、追加のカーネルパラメータを指定してブートすることができる。)
 
■各種コマンド
loadvmコマンド
 QEMUモニタにログイン後に実行。
 スナップショットから仮想マシンを復元(リストア)
 
brctlコマンド
    ブリッジを管理するコマンド。
 新規ブリッジ作成および物理IFとの関連付けは以下のやり方。
 
    ① brctl addbr br0
        → 新しいブリッジbr0を作成
 
 ② brctl addif br0 eth0
        → br0ブリッジと、物理IFのeth0を関連付け
 
 ③ ifconfig br0 up
        → ブリッジの起動
 
tunctlコマンド
    TUN/TAPデバイスを作成/管理するためのコマンド。
 
 tunctl -p -t tap1
        → 新しいTAPデバイス「tap1」の作成
 
changeコマンド
    仮想マシンのCDROMドライブにマウントされたイメージを変更
    change ide 1 -cd0 <イメージファイルのパス>
        ※IDE接続の1番目(0番目)のCDROMドライブを対象とする場合


 


■試験料について
15,000円です。
※前は30,000円だったので半額になった。

(2020/1/10更新)
LPIC304関連のブログは下記の通りです。
興味ある方は一度目を通してもらえると、(何かしらの)役に立つ・・・??

↓LPIC304関連記事はこちら(アルファベット順)↓

www.guri2o1667.work

www.guri2o1667.work

 

www.guri2o1667.work

 

www.guri2o1667.work

 

www.guri2o1667.work

 

www.guri2o1667.work

www.guri2o1667.work

 

www.guri2o1667.work

www.guri2o1667.work

 

www.guri2o1667.work

 

www.guri2o1667.work

www.guri2o1667.work

 

www.guri2o1667.work

www.guri2o1667.work

 

www.guri2o1667.work

www.guri2o1667.work

 

www.guri2o1667.work