仮想化環境KVMのシステム管理、監視
仮想化環境の運用管理
仮想化は、もはやx86サーバー・システムでは当たり前の技術となっています。物理サーバーのリソースを有効利用できるのはもちろんのこと、運用管理の簡素化や調達コストの削減など、さまざまなメリットをもたらします。
サーバー仮想化ソフトとしては、VMware、Hyper-V、XenServerなどが有名です。Linuxにおいては、XenとKVMがよく使われています。最初に、XenがLinuxカーネルに取り込まれ、OS付属の仮想化ソフトとして着目されました。現在では、Fedoraプロジェクトや米Red Hatの方針により、KVMが主流になりつつあります。
ただし、KVMは、Xenと同様に、運用管理に関して独特のノウハウが必要です。仮想化によるメリットを享受するまでに、敷居があるのも否めません。
そこで、本連載では、LinuxのKVM環境のための運用管理ツールとして広く使われているvirt-managerとVNCを取り上げ、(2010年12月時点で最新の)Red Hat Enterprise Linux 6とUbuntu 10.10向けに、KVM環境の構築・運用管理手法を紹介します。
KVM仮想マシン管理ツール「virt-manager」を使いこなす
KVMは、Red Hat Enterprise Linux 6.0やUbuntu 10.xに搭載されている仮想化技術です。OS付属の仮想化機能であるため、仮想マシンの構築や基本的な運用を、OSの機能だけで行うことが可能です。KVMそのものは、標準のLinuxカーネルにマージされています。このため、カーネルのビルドなども不要です。
KVMの仮想マシンを構築する方法はさまざまです。GUIを使って構築するやり方や、コマンド・ラインで構築するやり方があります。Red Hat Enterprise Linux 6の場合は、GUIベースのvirt-managerを使うやり方が一般的です。Virt-managerは、Red Hat Enterprise Linux 6に標準で付属しているGUIツールであり、対話形式によって仮想マシンを構築・管理できるので、初心者向きといえます。
まずは、virt-managerを使った仮想マシンの作成手順を説明します。virt-managerはGUIツールですが、起動時にはコマンド・ラインからvirt-managerコマンドで起動させます。
# virt-manager
ストレージ・プールの初期設定
Red Hat Enterprise Linux 6のコマンド・ラインからvirt-managerを起動すると、virt-managerのGUIウインドウが現れます。初期設定として、まずは仮想マシンのイメージ・ファイルを保管するディレクトリを指定します。一般的には、仮想マシンのライブ・マイグレーションを行うことを考慮し、外部ストレージにマウントしたディレクトリ・パスを指定します。
外部ストレージは、Red Hat Enterprise Linux 6が正式にサポートしているFC(Fibre Channel)ストレージやiSCSIストレージでなければなりません。ここでは、iSCSIストレージ上の/workを仮想マシンのイメージ・ファイルの保存先として設定します。
仮想マシンを保存するディレクトリを指定するためには、virt-managerの「編集」から「ホストの詳細」を選択します。ホストOSに関する設定ウインドウが現れるので、「ストレージ」タブをクリックすると、仮想マシンのイメージ・ファイルを保存するディレクトリなどを決めるためのプール設定があります。
デフォルトのプール「default」では、イメージの保存先が「/var/lib/libvirt/images」になっています。この「default」プールは通常、ローカル・ディスク用のストレージ・プールとして利用するものです。ライブ・マイグレーションなどの運用を行う場合には、別途、共有ストレージ用のストレージ・プールを作成することを勧めます。
図1: Red Hat Enterprise Linux 6に付属するvirt-managerを使って仮想マシンのイメージ・ファイルを保管するストレージ・プールを設定している様子。デフォルトではプール「default」が存在する。(クリックで拡大) |
新たなプールとして、iSCSIストレージ上にマウントされた/workを作成する場合には、「ストレージ」タブ中の左下にある、プラス印のボタンをクリックします。「新規ストレージプールを追加」というウインドウが新たに現れるので、名前を付けます。
今回は、workにします。ストレージ・タイプは「dir: Filesystem Directory」を指定します。「進む」をクリックすると、「ターゲットパス」を入力する個所があるので、仮想マシンのイメージ・ファイルを格納するディレクトリ・パス「/work」を入力し、「完了」をクリックします。これでストレージ・プールの準備ができました。
図2: 新規ストレージ・プール「work」を追加する(左)。ストレージ・プール「work」のターゲット・パスを/workに設定する。仮想マシンのイメージ・ファイルは/workに格納される(右)。(クリックで拡大) |
作成したストレージ・プールに、仮想マシンのイメージ・ファイルを作成します。ストレージ・タブ中のウインドウ中央下あたりにある「新規ボリューム」をクリックします。「新規ストレージボリュームを追加」というウインドウが現れるので、仮想マシンのイメージ・ファイルとなる名前を入力します。
ここでは、イメージ・ファイル名を「rhel60vm01.img」にするので、名前として「rhel60vm01」を入力し、フォーマットには「raw」を選択します。ストレージ・ボリュームに割り当てる容量は、今回は9000Mバイトとしました。
図3: ストレージ・プール「work」に、ストレージ・ボリュームを割り当てる。仮想マシンの名前と最大容量を指定する。上図では、イメージ・ファイルの最大サイズとして、9000Mバイトを指定している。(クリックで拡大) |
以上で、KVMのストレージ・プールとストレージ・ボリュームの割り当てが完了し、仮想マシンを作成する準備が整いました。共有ストレージ用の/workをストレージ・プールとして利用し、そこに保管されるrhel60vm01.imgファイルを仮想マシンのイメージ・ファイルとして利用することになります。
仮想マシンの作成
仮想マシンの作成を行うには、virt-managerのlocalhost(QEMU)という項目にマウスを当て、右クリックを行い「新規」を選択します。
図4: Red Hat Enterprise Linux 6に付属のvirt-managerで仮想マシンを作成する様子。対話形式で簡単に作成できる。 |
作成する仮想マシンには、それぞれ名前を付けて管理します。今回、仮想マシンの名前は「rhel60vm01」としました。OSなどのインストール時には、物理メディアからインストールすることも可能ですが、ファイル・サーバー上にあるISOイメージをマウントすると便利です。
図5: 作成する仮想マシンに、分かりやすい名前を付ける。インストール・ソースは、物理メディア以外にも、ISOイメージ、HTTP、FTP、NFS、PXEブートが選択可能である。 |
ISOイメージはファイルサーバーの/rootに暫定的に保管したものを使用します。仮想マシンとしてRed Hat Enterprise Linux 6.0をインストールするため、仮想マシンのOSタイプに「Linux」を選択し、「バージョン」はRed Hat Enterprise Linux 6を選択します。
図6: Red Hat Enterprise Linux 6に搭載されているvirt-managerでは、仮想マシンとしてRed Hat Enterprise Linux 6を利用できる。技術的には、Linuxだけでなく、WindowsやFreeBSDも仮想マシンとして作成することができる。(クリックで拡大) |
仮想マシンに割り振るメモリー容量とCPU数を指定します。ここでは、rhel60vm01に2Gバイトのメモリーと1つのCPUを割り当てます。ホストOS側で利用可能な最大メモリー容量とCPU数が、目安として表示されます。サーバー仮想化では、仮想マシン1台あたり、ホストOSの物理CPUコアを最低1つ以上割り当てるのが一般的と言われています。
ディスクは、外部ストレージを割り当てるのが一般的です。外部ストレージは、FCストレージやiSCSIストレージなどが挙げられます。先に設定しておいたストレージ・プール「work」に作成した仮想マシン用のイメージ・ファイル「/work/rhel60vm01.img」を指定し、「進む」をクリックします。
図7: 仮想マシンに割り当てるメモリー容量とCPU数を指定する。ディスク・イメージ・ファイルには、共有ストレージ用のストレージ・プール「work」で指定したディレクトリ/workに保管されるrhel60vm01.imgを指定する。(クリックで拡大) |
「高度なオプション」では、MACアドレスなどの設定のほか、「仮想ネットワーク」の設定において、仮想マシンがホストOSとどのようにネットワーク通信を行うかを設定できます。
仮想マシンの作成前に、インストール・ソースとなるメディア、CPU、メモリー、ストレージ、OSの種類、アーキテクチャに間違いがないかを確認します。誤りがなければ「完了」をクリックします。これで、仮想コンソール・ウインドウが起動し、Red Hat Enterprise Linux 6のインストーラが起動するはずです。あとは、インストーラの指示に従います。
図8: 仮想マシンに割り当てるメモリー容量とCPU数を指定する。ディスク・イメージ・ファイルには、共有ストレージ用のストレージ・プール「work」で指定したディレクトリ/workに保管されるrhel60vm01.imgを指定する。(クリックで拡大) |
Virt-managerを使って遠隔から管理する
Virt-managerは、複数のKVM仮想マシンを遠隔から集中管理することが可能です。遠隔地にあるKVMのホストOSにはIPアドレスが割り振られており、KVMが稼働する環境であれば、virt-managerのGUIから、それらのKVMホストを簡単に登録することが可能です。
遠隔地にある複数のKVMホストをVirt-managerに登録するには、virt-managerのメインウインドウの「ファイル」から「接続を追加」を選択します。「接続を追加」のウインドウが現れるので、「ハイパーバイザー」に「QEMU/KVM」を選択し、「接続」に「SSHでのリモートトンネル」を選択します。遠隔地にあるKVMホストが表示されるので、virt-managerで管理したいホストを選択します。
下図の例では、遠隔地にあるKVMホストが6台表示されていることが分かります。遠隔地のKVMホストへの接続に成功すると、virt-managerのメインウインドウにKVMホストとKVM仮想マシンが表示されます。下図では、遠隔にあるKVMホストが複数登録され、KVMホストで稼働しているKVM仮想マシンの状態を集中管理している様子が分かります。
図9: 遠隔地にある複数のKVMホストの候補がvirt-managerから見えている様子(左)。複数のKVMホストを登録できるが、KVMホストが異なる種類のOSの場合、virt-managerから管理できる項目が異なる場合があるため、注意が必要である(右)。(クリックで拡大) |
Virt-managerは、OS付属のGUIツールなので、豊富な機能は望めません。しかし、KVM仮想マシンの作成が容易である点や、virshコマンドによる管理に精通していない初心者でも、簡単にKVM仮想マシンの管理ができ、直観的な操作が可能である点で優れています。
また、ライブ・マイグレーション機能や、仮想マシン用イメージ・ファイルのクローン(複製)を作成する機能も搭載しています。このように、仮想化環境の管理者が普段利用する基本的な機能を、一通り備えています。
特に、複製機能は便利です。ホスティングなどの業務で仮想マシンの配備を行う場合に、特に威力を発揮します。システムの新規配備を迅速に行いたい場合に有用です。
Ubuntu 10.10におけるKVM環境の構築と運用
Red Hat Enterprise Linux 6におけるKVM仮想マシンの導入は、先述のvirt-managerを使えば簡単に行うことが可能です。一方、Ubuntuのサーバー版の場合は、KVMの仮想マシンの導入などの操作を行うにあたって、遠隔からVNCで接続します。
KVMのホストOS側では、仮想マシンのインストーラを起動する際に、VNCサービスが起動するようにします。一方、接続元のクライアント側では、遠隔にあるWindows PCなどからフリー・ソフトのVNCクライアント・ソフトウエアを使ってVNCサービスに接続し、仮想マシンのインストーラのGUIを表示させます。
図10: Ubuntuサーバーに搭載されているKVM環境には、VNCで接続する。クライアントPCにVNCクライアントとなるVNCビューワをインストールしておく必要がある。(クリックで拡大) |
KVMホストOS(Ubuntu 10.10)側の作業
Ubuntuに対して、rootアカウントで作業できるようにしておきます。セキュリティの観点からはsudoを利用するのが一般的ですが、ここではテスト環境を想定し、rootアカウントで作業を行います。
Ubuntuのインストール後にrootアカウントでログインできるようにするためには、まずは一般ユーザーでログインし、sudo su -を入力します。rootアカウントになったら、passwdコマンドを使ってrootアカウントにパスワードを付与します。こうすることで、rootアカウントにパスワード付きでログインできるようになります。
testuser01>$ sudo su - [sudo] password for testuser01: # passwd Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully #
KVM仮想マシンの作成
KVM仮想マシンのイメージ・ファイルを作成します。イメージ・ファイルはddコマンドで作成できます。KVMは、ddイメージ以外にも、スナップショットが可能なqcow2形式などを利用できますが、今回は、単純にddイメージを作成します。
ddイメージ・ファイルを/workに保管します。イメージ・ファイルは8Gバイトを想定します。仮想マシン上にUbuntu 10.10サーバー版をインストールするので、イメージ・ファイル名は、ubuntu10.10vm01.imgにします。
# df # mkdir /work # cd /work/ # dd if=/dev/zero of=./ubuntu10.10vm01.img bs=1G count=8
Ubuntu 10.10サーバー版のCD-ROMからインストールを行いますので、ホストOSの物理DVD-ROMドライブのドライブ名を確認 します。
# ls -l /dev/dvd lrwxrwxrwx 1 root root 3 2010-12-02 10:29 /dev/dvd -> sr0
ホストOSの物理DVD-ROMドライブに、仮想マシン用の物理CD-ROMメディアを挿入し、正常にマウントできるかを確認しておきます。
# mount /dev/sr0 /mnt/ # df # umount /mnt
KVMホストOS側で、KVMを使って仮想マシンのインストーラを起動します。Ubuntuにはkvmコマンドが用意されています。これを使うことで、KVM仮想マシンの構築や画面表示などが可能です。
# kvm -hda /work/ubuntu10.10vm01.img \ -cdrom /dev/sr0 \ -boot d \ -m 512 \ -vnc 192.168.1.214:1(実際には1行で入力)
今回kvmコマンドに指定したオプションの意味は、それぞれ以下の通りです。
オプション | 動作 |
---|---|
-hda /a/b/c/d.img | /a/b/c/d.imgファイルに仮想マシン・イメージを作成する |
-cdrom /dev/sr0 | ホストOSの物理DVDドライブ/dev/sr0を読み込む |
-boot d | -cdromオプションで与えたメディアからブートする(上記では物理DVDドライブからブート) |
-m 512 | KVMの仮想マシンに512MBのメモリーを割り当てる |
-vnc 192.168.1.214:1 | リモートのVNCクライアントからの接続を許可する |
上記のコマンドを実行すると、ホストOS(IPアドレスは192.168.1.214)に対して、リモートのVNCクライアントから5901番ポートでアクセスし、VNC経由で仮想マシンのインストーラのGUIを表示します。なお、-vnc 192.168.1.214:2と指定した場合は、5902番ポートでアクセスします。
物理CD-ROMメディアではなくisoイメージを指定することも可能です。以下がその例です。
# kvm -hda /work/ubuntu10.10vm01.img \ -cdrom /data/ubuntu-10.10-server-amd64.iso \ -boot d \ -m 512 \ -vnc 192.168.1.214:1(実際には1行で入力)
リモートのWindows PCなどにインストールしたVNCクライアントから5901番ポートでアクセスし、仮想マシンのインストーラが起動しているかどうか確認します。
図11: リモートのWindows PCにインストールしたフリー・ソフトのVNCクライアントから、UbuntuサーバーのKVMホストOSが提供する仮想マシンのインストーラ画面にアクセスしている様子(上図のVNCクライアント・ソフトは、Windows版のReal VNCビューワ) 。(クリックで拡大) |
KVM仮想マシンの起動、操作
KVMホストOS上で、kvmコマンドを使い、インストールしたKVM仮想マシンを起動させます。
# kvm -hda /work/ubuntu10.10vm01.img \ -boot c \ -m 512 \ -net nic \ -net tap,script=/etc/qemu-ifup \ -vnc 192.168.1.214:1 (実際には1行で入力)
KVM仮想マシンは、VNC経由で操作できます。Ubuntu 10.10のサーバー版は、標準ではX Window Systemが搭載されていないので、仮想マシンが起動した後は、sshやVNC経由で操作することになります。
図12: リモートのWindows PCにインストールしたフリー・ソフトのVNCクライアントからKVM仮想マシンを操作している様子。日常の運用は、このVNCビューワなどで行う。(クリックで拡大) |
導入が容易で自社の目的に合った管理ツールを選ぶ
以下では、KVM仮想マシンや仮想化ホストを一元管理するツールを紹介します。
KVMの管理ツールで、OS標準のVirt-managerよりも高機能なものを開発しようと、多くのコミュニティが精力的に取り組んでいます。ところが、データ・センターや大規模クラウド環境を見据えたオープンソースのソフトウエアとなると、依然として導入方法の調査や構築作業に手間がかかる傾向があります。
一方、ベンダーが提供する有償のソフトは機能が豊富です。企業のプライベート・クラウド構築に適した運用自動化の仕組みなどが備わっています。仮想マシンの起動、停止、画面操作だけでなく、仮想マシンと物理マシンの負荷状況を一元的に管理して過去の負荷データから将来を予測できます。コンソリデーションによるコスト削減シミュレーション機能を備えるものや、セルフポータルからユーザーが欲しい環境をマウス・クリックだけで配備できるものもあります。
構築の手間ができるだけかからず、機能面においてもクラウド・コンピューティングを見据えた管理ツールを選択しなければなりません。
ベンダーの有償ソフト以外にも、コミュニティが開発している優秀なオープンソースが数多く存在します。ベンダー提供の無償ツールや有償ソフトとオープンソースを組み合わせて利用すると効果的です。
クラウド・コンピューティングにおいては、特殊なソフトをクライアントにインストールすることなく、Webブラウザだけで利用できることが望まれます。また、複数の仮想化環境を一元管理して、必要に応じて物理リソースと論理構成を半自動的に配備できなければなりません。
非常に多くの課題をクリアしなければなりませんが、まずはクラウド・コンピューティングに到達する前段階の「仮想化の一元管理」を目指しましょう。以下では、複数の仮想化環境を一元管理するツールを紹介します。
Virt-managerを補完する、無料の仮想化管理ツール「convirt」
OSに標準で付属しているVirt-managerでも、ある程度の管理が可能です。このうえでさらに、遠隔からの集中管理機能を補完するのに適したソフトが、オープンソースの仮想化管理ツール「convirt」です。遠隔地にあるKVMホストとXenホストを管理できます。
convirtは、Red Hat Enterprise LinuxやUbuntuには含まれていません。このため、別途ダウンロードしてインストールします。バージョン1.1ベースのものはRPMパッケージが用意されてるので簡単に導入できますが、最新のバージョン2.0では、インストール・スクリプトを実行する必要があり、幾分面倒です。
図13: KVM対応の一元管理ソフト「Convirt」。KVM仮想マシンの起動、停止、配備、リストアなどの、仮想化環境で必要な機能を備えている。(クリックで拡大) |
Webブラウザ経由で操作できる仮想化管理ソフト
Webブラウザ経由でKVM仮想マシンやVMwareなどを集中管理できるツールに、OpenQRMがあります。複数の仮想化技術が混在した環境を管理するのに適したツールです。
現時点では、CentOS 5用のRPMパッケージが用意されています。2010年12月時点では、最新版4.7が存在し、tar ballからRPMパッケージをビルドして利用できます。データベースにMySQLを採用していますが、設定自体は非常に簡単です。
主に、GUIによる設定がメインになります。サーバー仮想化ソフトとして、KVM、Xen、VMwareを利用できます。ヘテロジニアスな仮想化環境を一元管理できる無償ソフトとして、開発者やIT管理者の間で知名度が向上しています。
ベンダーが提供しているツールでは、オープンソースのNagiosとRRDtoolを組み込んだ、有償のHP Insight Control for Linuxなどがあります。物理ホストや仮想ホスト、仮想マシンを一元的に管理し、KVMのゲストOSの管理や、ドライバの配布などが可能です。
Insight Control for Linuxは、オープンソースのNagiosやRRDtoolが組み込まれているため、それらオープンソースを利用する環境を構築する手間を省きます。さらに、大量の仮想マシンを直観的な操作で一元管理できるようになっています。Insight Control for Linuxの稼働OSもLinuxであるため、Windowsの知識がない場合や、物理マシンがLinuxで標準化されている場合に特に有用です。
HP Insight Control for Linuxは、isoイメージをHPのWebページからダウンロードできます。60日間の評価用ライセンス・キーも入手できます。評価用のライセンス・キーで、機能の制限なく、Insight Control for Linuxのすべての機能を評価できます。
図14: オープンソース・ソフトウエアのNagiosとRRDtoolが組み込まれているHP Insight Control for Linuxの画面。データベース・エンジンもオープンソースのPostgreSQLを採用している。ユーザーは、Webブラウザから、物理ホスト、仮想化ホスト、仮想マシンを一元管理できる。(クリックで拡大) |
以上、KVMを含めた仮想化環境における、監視システムの基本的な構築手法と管理ソフトを解説しました。
オープンソースのkvmコマンド、VNC、virshコマンドなどによる仮想マシンの操作は、仮想化システムの管理者やコスト削減を目的としたIT部門にとっては、敷居が高く感じられます。
しかし、クラウド対応の高機能ソフト、EucalyptusやOpenQRMなども、バージョンアップを繰り返して日々進化しています。Linux系のクラウド・システムにおいて、注目が集まってきています。
本連載では、仮想化システムの構築・運用・監視について、非常に基本的で典型的な手法に限って解説しています。ところが、実際のシステムを運用する場合、サーバーだけでなく、仮想マシンを保存する外部ストレージの設定やバックアップ手法の検討、仮想マシンの災害対策なども設計する必要があります。少ない工数でシステムの状態を詳細に管理・監視するためには、Red Hat Enterprise Virtualizationや、実績のあるVMware、Hyper-V、XenServerなども検討すべきです。
KVMは、Linux OS付属の仮想化機能であり、ユーザーに魅力的な機能とコスト削減を提供します。このうえで、KVMを補完するように、EucalyptusやOpenQRM、有償のInsight Control for Linuxなどがあります。これらのメリットを最大限得られるよう、目的と手段、運用コストをよく考えたうえで、導入してみてください。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- CentOS 7の仮想化、Docker、リソース管理(前編)
- リファレンスを狙うVirtual Machine Manager
- ハイパーバイザー選択の戦略
- さまざまな新機能を搭載したRHEV 3.5
- [入門編] Ubuntu Serverとその他のサーバーOSを比較する
- OpenStack運用管理編(GUI管理、テナントの作成、テナントでのWebサービス提供の確認まで)
- OSSを活用したLinuxのデータ・バックアップ
- レッドハット、仮想化プラットフォーム「Red Hat Enterprise Virtualization 3.1」を提供開始
- Xen管理ツールに必要な機能を考える
- Red Hat Enterprise Linux 7のインストールについて確認しよう