やかん部@FLATz

[サーバ]の記事一覧

Xenで作る仮想サーバ構築入門(10分コース)

2009年10月03日(土)09:00|amakata|やかん部, サーバ, 技術情報このエントリをdel.icio.usに追加このエントリをはてなブックマークに追加

こんにちは。天方です。


最近、お客様のサーバ構築や、会社の開発環境を構築する場合には、環境を仮想化することがほとんどになってきました。


以前は、VMWareServerで構築することが多かったのですが、最近はXenを使った仮想化を行っています。


サーバを仮想化すると、障害が起こったときやサーバ増強時に、手軽に環境を引越したりできるのがいいですね。


今回は、自分なりに、Xenの簡単な入門をまとめてみたので、ここに公開したいと思います。


仮想化とは?


ここでいう仮想化とは、簡単にいうと、一つのコンピュータのハードウェアに複数のOSを同時に動かすために、仮想的なコンピュータを作る、すなわちコンピュータを仮想化するということです。


仮想化にはさまざまな方法があって、XenやVMWare Serverの動作を比較する際によく出てくるのが下の、完全仮想化、準仮想化の違いです。完全仮想化の場合には、汎用OS上にVM(仮想マシン)をつくり、その中でOSを動作させるのに対して、準仮想化では汎用OSを必要としないのが特徴です。


  • 完全仮想化
    OS上に仮想マシンを構築するソフトウェアを利用してゲストOSを動作させる。

    [  OS  ] [  OS  ]
    [  VM  ] [  VM  ]
    [     汎用OS    ]
    [  ハードウェア ]
    例:VMWare Server等

  • 準仮想化
    汎用OSを必要とせず、仮想マシンモニタ(VMM)を利用してOSを動作させる

    [  OS ]  [  OS  ]
    [      VMM       ]
    [ ハードウェア  ]

    例: Xen

Xenの基本的な概念


Xenではドメイン-Xという風に仮想マシンのことを呼びます。Domain-0は特別な仮想マシンでVMMが動作するドメインになります。Domain-0以外のドメインをDomain-Uと呼びます。


  • Domain-0(1個)
    ホストOSを動作させる
  • Domain-U(0~n個)
    ゲストOSを動作させる

※CPU/メモリはすべていったんDomain-0に割り当てられ、
※Domain-Uを作ってCPU/メモリを順次Domain-0から割り当てていく


[ Domain-U ] [ Domain-U ]
[            Domain-0          ]
[            ハードウェア       ]


Xenではネットワークも仮想化されます。標準で仮想イーサデバイスや、仮想HUB(ブリッジ)や仮想ルータがサポートされています。


Xen組み込みのネットワークのブリッジには xenbr0,xenbr1 といった名前がついてます。
Xenの組み込みネットワーク以外にlibvirtというライブラリのネットワークも使えます。こちらは virbr0,virbr1 という名前が付いています。


これらのネットワークデバイスを設定することで、Domainをネットワークに接続することができます。


Xenのインストール


CentOS5にXenを導入する手順を以下に示します。基本的にすべてroot権限で実行します。


  • Domain-0の構築

  • 仮想環境用ライブラリとXenのインストール
    yumをつかってインストールします


# yum groupinstall Virtualization
# yum install kernel-xen


  • Xen用仮想ディスク用デバイスのモジュール登録
    Xen用のデバイスのモジュールを登録します


# echo alias scsi_hostadapter xenblk >>/etc/modprobe.conf


  • kernelの設定の切り替え
    kernelをXen用のものに切り替えます


# vi /etc/sysconfig/kernel
DEFAULTKERNEL=kernel-xen


  • grubの設定の切り替え
  • grubで起動するカーネルの種類を指定します。カーネルの番号等は、インストールしたkernelの番号によって変わるので注意してください。


# vi /etc/grub/grub.conf
root@host01 [~]# cat /boot/grub/grub.conf
... 省略 ...
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-128.1.10.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-128.1.10.el5
module /vmlinuz-2.6.18-128.1.10.el5xen ro root=/dev/sda2
module /initrd-2.6.18-128.1.10.el5xen.img
... 省略 ...
# reboot


これで再起動されるとDomain-0が動いている状態となります。


状況確認


  • カーネル
    実際にカーネルがXenに切り替わっているかどうかをチェックできます。「2.6.18-128.1.10.el5xen」のように末尾にxenが付いていればXen用のカーネルで動作していることになります。


# uname -a
Linux host01.itareri.jp 2.6.18-128.1.10.el5xen #1 SMP Thu May 7 11:51:15 EDT 2009 i686 i686 i386 GNU/Linux


  • DomainUの構築

CentOSではvirt-installというコマンドでDomain-0からCentOSを簡単にインストールできます。



# virt-install --paravirt --name=VM_CentOS_1 --vcpus=1 --ram=256 --file=/var/lib/xen/VM_CentOS_1 --file-size=20 --location=http://ftp.riken.jp/Linux/centos/5/os/i386/ --bridge=virbr0 --nographics


それぞれのオプションの意味は下記となります。


–paravirt 準仮想化
–name     VMの名前
–vcpus    CPU数
–ram       メモリ(MB)
–file      仮想ディスクイメージファイル位置
–file-size 仮想ディスクサイズ(GB)
–location  OSをインストールするためのロケーション
–bridge    仮想ネットワークの接続先を指定
–nographics コンソールベースでのインストール


コマンドがうまく動作したら、通常のCentOSのインストーラの手順に従って作業を実施します。


VMの操作


Xenの 単純なコマンドについて紹介します。これらのコマンドはDomain-0で実行します。


  • VMリスト取得


# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0     1508     2 r-----   7548.5
VM_CentOS_1                                7      255     1 -b----   1852.0


  • VMのコンソールに接続


# xm console VM_CentOS_1


  • VMのコンソール接続を解除

Ctrl + ] で解除できます。

続きを読む


監視ツールZABBIXのビルドでcURLの設定にはまる

2009年05月28日(木)09:15|amakata|やかん部, サーバ, 技術情報このエントリをdel.icio.usに追加このエントリをはてなブックマークに追加

こんにちは天方です。


最近、CentOS5(64bit) に サーバの監視ツールとしてZABBIXをインストールしました。


ZABBIXは死活監視、負荷のグラフ生成、死活アラートなど一通りの機能がそろっていて、日本語にも対応しているのがいいですね。


64bitのOS用のZABBIXのrpmがなかったので、ソースをビルドしていれようとしたのですが、その際、なぜかZABBIXのconfigureで落ちてしまいます。


具体的には


checking for curl-config... /usr/bin/curl-config

checking for the version of libcurl... 7.15.5

checking for libcurl >= version 7.13.1... yes

checking for main in -lcurl... no

configure: error: Not found libcurl library

という形で落ちてしまいます。


しばらく悩んだのですが、
これはcURLのpkg-configの設定ファイルの問題でした。


/usr/lib64/pkgconfig/libcurl.pc


Libs: -L${libdir} -lcurl -L/usr/kerberos/lib64 -lssl \
-lcrypto -ldl -lz   -lgssapi_krb5 -lkrb5 -lk5crypto \
-lcom_err -lidn -lssl -lcrypto  -lz
の行をとりあえず

Libs: -L${libdir} -lcurl

のようにすることでconfigureが通りました。
ライブラリが入っている状況で、理由に検討がつけられず結構時間つかいました orz

続きを読む


Page 1 of 3123»

このページの先頭へ