star76.jp

CloudStackとKVMのお話

Share...Tweet about this on TwitterShare on FacebookGoogle+

MerryChristmas.jpeg    (・∀・)♪

この記事は、CloudStack Advent Calendar 2014 の12/25分のエントリーです。

 

CloudStackは、Xen ServerやVMWare vSphere、Hyper-Vなど、さまざまなハイパーバイザに対応した仮想化基盤ソフトウェアとして有名ですが、今回はそのハイパーバイザの中でも、KVMについて触れてみたいと思います。

 

KVMの特徴

KVMには、次のような特徴があります。

  • Linuxカーネルに実装

    KVMは、Kernel-based Virtual Machineの略で、Linux自体を仮想マシンの実行基盤として動かします。
    KVMはLinuxカーネルに実装されており、メモリ管理やスケジューリング、ドライバはLinuxカーネルの機能を利用しています。

  • 完全仮想化

    ゲストOSから見ると、ハードウェアは仮想化されているにもかかわらず本物のハードウェアであると認識していますので、このタイプの仮想化は「完全仮想化」と呼ばれます。

  • QEMUとセットで仮想化機能を実現

    KVMのカーネルモジュールは単体では動作しません。
    ハードウェアのエミュレーションや、ゲストOSの起動や停止など、管理するためのフロントエンド部分にQEMUを使います。
    QEMUは、ハードウェアを完全にエミュレーションし、仮想マシンのOSからの命令をフックして処理するため、OS自体に変更を加える必要がないメリットがありますが、パフォーマンスがあまり良くありません。
    そのQEMUを高速化するのが、KVMのカーネルモジュールです。

  • CPUの仮想化支援機能とあわせて使う

    Intel VT、AMD-VといったCPUが仮想化をサポートする機能を利用して、オーバーヘッドが少ない仮想化を実現しています。

 

CloudStackでKVMを使うには

UbuntuにおけるKVMを使ったCloudStack Hostのインストール方法を、KVMに焦点をあてて見ていきます。
詳細のインストール方法は、CloudStack本家のサイトを参照下さい。
 

  1. CPUの仮想化支援機能の確認

  2. まずは、CPUの仮想化支援機能が有効になっているかを確認します。

    ・Intel系CPUの場合

    ・AMD系CPUの場合

    仮想化支援機構のチェック.png

    注意点としては、メーカー製のPCは、仮想化支援機構に対応していても、メーカー出荷時に機能が無効化されている場合があります。私が良く使っているHP Compaq Pro 6300シリーズも、intel VTがデフォルトでOFFとなっており、BIOSで設定変更を行っています。

    Compaq_BIOS設定変更.png

     

  3. Hostの基本設定

  4. hostname,ntp,DNS,リポジトリなどの基本設定を行います。

     

  5. ブリッジの設定

  6. bridge-utils をインストールし、ネットワークの設定をします。
    仮想マシンをネットワークに接続するためのブリッジインタフェースを作成・管理するためのパッケージです。
    設定後は、 brctl show コマンドでブリッジインタフェースの状態を確認できるようになります。

     

  7. cloudstack-agentのインストール

  8. CloudStackにおいて、仮想マシンを起動するHostとして動作させるサーバーには、 cloudstack-agent というパッケージをインストールします。
    cloudstack-agentをインストールすると、KVMを動作させるために必要なパッケージがあわせてインストールされます。

    ・qemu-kvm
    KVMのコマンドラインユーティリティです。
    cloudstack-agentとあわせてインストールされます。
    仮想マシンで使用されるI/Oデバイスのエミュレータがひととおり含まれています。

    ・qemu-img
    イメージを扱うためのパッケージです。
    Ubuntuではqemu-kvmの依存パッケージとして、qemu-imgソフトウェアを含むqemu-utilsがインストールされます。

    cloudstack-agent.png

     

  9. libvirt のインストール、設定

  10. ・libvirt-bin, livbirt0 : (RedHad系ではlibvirtとlibvirt-client)
    libvirtは、KVMやXen,LXCなど様々な仮想化システムの管理を共通化させるオープンソースのライブラリで、KVMはこのlibvirtを介した制御がデフォルトとなっています。
    libvirtd と呼ばれるデーモンを起動することで、リモートからAPIを介してlibvirtのライブラリを実行し仮想マシンをできるようになっています。
    libvirtをインストールすると、仮想マシンを管理するためのシェル(CUI)である virsh が使用できるようになります。
    libvirtd.conf, libvirt-bin, qemu.confなど必要な設定ファイルのコンフィグレーションを行い、サービスを再起動します。

     

  11. apparmorなどの設定

  12. apparmorは、アプリケーション単位でセキュリティルールを設定できるツールです。
    Ubuntuではデフォルトで有効となっていますので、libvirt関連のapparmorは、無効化しておきます。

 

確認してみる

CloudStackの設定がひととおり完了したら、コマンドをたたいてみましょう。
 

brctl show コマンド

作成したブリッジインタフェースの状態を確認します。
brctlshow.png

virsh list コマンド

作成された仮想マシンの一覧を確認します。
— all 引数をつけると、running以外の仮想マシンも表示されます。
virsh list.png

この図では、4つの仮想マシンが作成されており、以下のようになっています。

v- で始まる …コンソールプロキシVM
s- で始まる …セカンダリストレージVM
r- で始まる … 仮想ルータ
i- で始まる … 通常の仮想マシン

 
また、時間のあるときに詳しい解説をしていきたいとおもいます(・∀・)♪

 

Share...Tweet about this on TwitterShare on FacebookGoogle+

Leave a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">