土曜日, 8月 15, 2009

RHEL 5.4, CentOS5.4 でKVM 入門編 (第2回、バーチャルマシンの作成からゲストOSのインストールまで)

[概要]
KVMでのバーチャルマシンの作成からOSインストールまでの手順を説明しています。
RHEL 6, CentOS6, ubuntu 10.10, 11.04については、こちらをご覧ください。

[詳細]
前回はホストのインストールについて説明しました。引き続き、今回は、バーチャルマシンの作成から、OSのインストールについて説明します。
KVMで仮想化環境を管理する方法、ツールはいくつもありますが、入門編ではディストリビューションに添付されているVirtual Machine Manager(virt-manager, VMM)を使ってバーチャルマシンの作成、管理を行います。
"virt-manager"はRed Hat社が中心になって開発している仮想化環境の管理ツールのひとつで、Xen, Qemu(KVM含む)の複数の仮想化環境を一括して管理することが出来ます。
また、VMMをサポートするユーティリティには、"Virt Install","Virt Clone","Virtual Machine Viewer"などがあります。これらについては、基礎編で扱いたいと思います。

  1. virt-managerの起動
    virt-managerの起動は、ターミナルでvirt-managerと入力するか、メニューバーから"仮想マシンマネージャー"を選択して行います。

  2. virt-managerへのホストの追加
    起動直後のvirt-managerには、1台もホストが登録されいません。そこで自身のサーバをvirt-managerに登録します。
    1. "ファイル" → "接続を追加"を選択します。

    2. "接続を追加"の画面では、ハイパーバイザーに"QEMU"、接続には"ローカル"を接続します。

      "Autoconnect 起動時"は、virt-managerの起動時に自動的に仮想環境に接続するかを否かを選択します。
      特に接続したくない理由がなければ、チェックを入れて自動で接続するようにしましょう。

    3. 接続が作成されると下記のように表示されます。

  3. バーチャルマシンの作成
    よいよバーチャルマシンの作成を行います。作成はウィザードを使って簡単に行うことが出来ます。
    1. ウィザードの起動
      作成した接続を選択し、右クリックで"新規"を選択するか右下にある"新規"のボタンを押すと、ウィザードが起動し手順の説明画面が表示されます。


      説明画面の"進む"を押して、バーチャルマシンの設定を開始します。

    2. バーチャルマシン名の入力
      バーチャルマシン名は、ホスト上で一意である必要がありますが、ゲストOSのマシン名とは必ずしも一致させる必要はありません。

    3. 仮想化方式の決定
      仮想化の方式を決定します。
      RHEL5.4で提供されているKVMの環境では完全仮想化(Fully virtulized)のみ選択出来ます。
      CPUアーキテクチャーは、"x86_64" (64bit), "i686" (32bit)のどちらかを選択します。
      ハイパーバイザーは、"KVM"を選択してください。

    4. インストール方法の選択
      ここでは、インストール元と、OSについての選択を行います。

      "OSタイプ"では次の中から選択します。
      "Linux", "Windows", "Solaris", "UNIX", "Other","Generic"
      UNIXには"Free BSD"と"Open BSD"、Otherには"MS-DOS"と"Netware"が登録されています。
      OSの種別はそれぞれOSタイプについて、バージョンやディストリビューションを選択します。


      インストール元は、下記の3つの中から選びます。
      • ローカルインストールのメディア
        ホストに接続しているCD/DVDドライブ、もしくはOSのISOイメージからインストールするときに選択します。
      • ネットワークのインストールツリー
        ネットワーク上にある展開されたインストールイメージ(インストールツリー)を使ってインストールを行う場合に選択します。ただし、ネットワークインストールに対応したOSである必要があります。なお、ネットワーク・プロトコルは、http/https, ftp, nfsが使用できます。
      • ネットワークブート
        PXE (Preboot eXecution Environment)ブートを利用して、OSのインストールもしくは、バーチャルマシンのディスクレスでの運用を行います。
    5. インストール・メディア/インストール・ソースの指定
      "ローカルインストールのメディア"の場合は、インストール・メディアを、"ネットワークのインストールツリー"の場合は、インストール・ソースを指定します。なお、PXEブートはネットワーク上からブートイメージをダウンロードするので、メディアやソースを指定する項目はありません。
      • ローカルインストールのメディアの場合
        さらに、メディアを下記のどちらかから選択します。

        • ISOイメージ
          OSのインストール媒体のISOイメージのパスを指定します。
        • CD-ROM/DVDデバイス
          CD-ROM/DVDなどの光学デバイスのパス指定を指定します。(e.g. /dev/cdrom, /dev/hdc)


      • ネットワークのインストールツリーの場合
        3つのパラメータを設定する項目があります。それぞれ、次の内容を登録します。


        • インストール メディア URL (必須)
          • NFS
            nfs:サーバ名:インストールツリーのパス
            (ex.) nfs:imgsv/exports/CentOS5.2x64
          • http,https/ftp
            プロトコル:サーバ名//インストールツリーのパス
            (ex.) http://imagesv/exports/CentOS5.2x64, ftp://imagesv/exports/CentOS5.2x64

        • キックスタート URL (オプション)
          RedHat系のインストール自動化機能であるキックスタートを使用してインストールする際には、ここに設定ファイルのURLを指定します。
        • カーネルパラメータ (オプション)
          メモリサイズやインストールモードの指定など、インストーラのカーネルが使用するパラメータを指定します。

    6. ストレージの設定
      バーチャルマシンをインストールする仮想ディスクを指定します。
      ホストマシンのデバイスを直接使用する場合には、"Block Device(partitoin)"を、バーチャル・ディスクを使用する場合には"File (disk image)"を選択します。


      "File (disk image)"を選択した場合には、あわせてバーチャル・ディスクのサイズと、作成するディスクを指定サイズ分を一度に確保するか否かの選択を行います。
      なお、"一度に確保しない"を選ぶと、バーチャルマシン上でディスクが不足したときに、適宜ディスクを確保しますので、ディスクを節約することが出来ます。この機能は一般的にシン・プロビジョニングと呼ばれています。

    7. ネットワークの設定
      使用するネットワークを指定します。VMMではデフォルトで仮想ネットワークを1つ作成します。このネットワークはNATとして機能しています。バーチャルマシンはこのネットワーク経由して外部のネットワークと通信することが出来ます。なお、"仮想ネットワーク"の追加、"共有物理装置"については基礎編で説明しますのでここでは割愛します。"default"の仮想ネットワークを選択してください。


      MACアドレスを手動で設定する場合には"Set fixed MAC address..."をチェックし、MACアドレスを入力してください。


    8. メモリとCPUの設定
      バーチャルマシンのメモリの容量とCPUの数を指定します。
      メモリの容量は、バーチャルマシン起動時に確保する容量と、最大で確保される容量(これはゲストOSから認識されるメモリ容量)を指定する項目がありますが、KVMの場合、起動時から最大容量が確保されます。
      また、CPUの数は最大で16まで指定可能ですが、パフォーマンスの観点から論理ホストのCPUの数を超えない数にすることをお勧めします。



    9. 構成の確認
      設定した構成の確認を行い誤りがなければ"完了"を押してください。バーチャルマシンの作成が開始されます。

  4. コンソールの起動
    バーチャルマシンの作成が終わると、コンソールが自動で起動し、OSインストール画面が表示されます。
    以後は、通常のPCへのOSインストールするときと同じように、作業してください。



    インストール終了後は、このコンソールから通常のPCと同じように利用できます。
  5. virt-manager上での確認
    virt-managerで、作成したバーチャルマシンが動作していることを確認します。
    "localhost"の下にバーチャルマシンが表示されていることを確認します。

以上で、KVMの環境でのバーチャルマシンの作成、OSのインストールの説明は終了です。次回からは、仮想化環境の管理に必要なvirt-managerの詳しい説明に移ります。

月曜日, 8月 10, 2009

RHEL 5.4 でKVM 入門編 (第1回、インストール)

[概要]
Red Hat Enterprise Linux 5.4 Beta版より、添付されたKVMのインストールについて説明しています。
CentOS6, RHEL6の方はこちらを、ubuntuの方はこちらをそれぞれご覧ください。

[詳細]
Red Hat Enterprise Linux 5.4 Beta版より、仮想化環境としてXenに加えて、KVM (Kernel-based Virtual Machine)が実装されました。
KVMはLinux kernelに2.6.20より標準で実装されている仮想化環境で、カーネルのモジュールとして動作します。
また、KVMはハイパーバイザとしてのみ働き、自身ではPCのエミュレートの機能は持っておらず、QEMUというエミュレータがKVMとやり取りを行って、バーチャルマシンを提供しています。KVMの使用については、Intel-VTかAMD-Vを実装したCPU必要です。

KVMはRHEL 5.3以前でもソース・コードのコンパイル、もしくは、ディストリビューション以外で提供されているパッケージをインストールすることで使用することはできましたのですが、Red Hat社がKVMへの主な出資者であるQumranet社がに買収し、KVMをメインの仮想化環境として扱うとしたことで、ディストリビューションに含まれました。

それでは、今回は一足早くRHEL 5.4のβ版を使用して、KVMの設定方法と簡単な操作方法を説明して行きたいと思います。

  1. RHEL 5.4のインストール
    KVMのインストールは、通常のOSのインストールの中で、KVMのパッケージを選択することで行います。
    OSインストールについては、KVMに関するポイントの部分を、中心にそのほかは、かいつまんで説明します。
    1. インストール番号の入力
      インストール番号を入力していないと、KVMのパッケージをインストール時に選択することが出来ません。

    2. パッケージの選択
      ソフトウェア選択のカスタマイズを"今すぐカスタマイズ"を選択して、KVMのパッケージを選択します。

  2. Kernelの切り替え
    インストール直後は下記のようにXenが起動するようになっていますので、KVMのために通常のカーネルに変更する必要があります。

    [root@vm-host03 ~]# uname -a
    Linux vm-host03 2.6.18-155.el5xen #1 SMP Fri Jun 19 17:14:49 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
    [root@vm-host03 ~]# lsmod | grep kvm
    [root@vm-host03 ~]# xm list
    Name ID Mem(MiB) VCPUs State Time(s)
    Domain-0 0 864 2 r----- 66.4
    [root@vm-host03 ~]#


    kvmを使用するために、"/boot/grub/grub.conf"を編集して、Xen用のカーネルから通常のカーネルに切り替えます。
    "defaul"値を、"0"から"1"に変更します。これで、次回からは通常のカーネルで起動します。

    [root@vm-host03 ~]# vi /boot/grub/grub.conf
    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE: You have a /boot partition. This means that
    # all kernel and initrd paths are relative to /boot/, eg.
    # root (hd0,0)
    # kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
    # initrd /initrd-version.img
    #boot=/dev/sda
    default=1
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title Red Hat Enterprise Linux Server (2.6.18-155.el5xen)
    root (hd0,0)
    kernel /xen.gz-2.6.18-155.el5
    module /vmlinuz-2.6.18-155.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    module /initrd-2.6.18-155.el5xen.img
    title Red Hat Enterprise Linux Server-base (2.6.18-155.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-155.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    initrd /initrd-2.6.18-155.el5.img
  3. リブート
    変更を反映させるためにOSのリブートを行います。
  4. 動作確認
    念のため、動作カーネル、kvm関連モジュールの動作xenの不活性の確認を行います。

    • 動作しているカーネルのバージョン"2.6.18-155.el5"の末尾にxenの文字列がないことを確認します。

      [root@vm-host03 ~]# uname -a
      Linux vm-host03 2.6.18-155.el5 #1 SMP Fri Jun 19 17:06:31 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
    • KVM用カーネル・モジュールがロードされていることを確認します。

      [root@vm-host03 ~]# lsmod | grep kvm
      kvm_intel 85992 0
      kvm 222368 2 ksm,kvm_intel

      AMDのCPUでは、"kvm_intel"のかわりに"kvm_amd"がロードされます。

これでKVMを使用する準備が整いました。次回はバーチャルマシンの作成からOSのインストールまでを説明します。