ここでは解読性を向上させるために、Xen特有のHypervisorとDomain0のことを「ホストOS」、DomainUのことを「ゲストOS」と呼ぶことにとしている。
ここでは、まっさらなマシン上にXENを導入する手順を説明する。
# wget http://ftp.iij.ad.jp/pub/linux/centos/5.7/isos/i386/CentOS-5.7-i386-netinstall.iso
ホストOSが導入されたら、ログインしたのち以下のコマンドで、XENが正しくインストールされているか確認する。最初にプロセスの起動を行う。すでに起動していれば問題ない。
# service xendomains start
XMコマンドで確認する。
# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 1500 2 r----- 12.5
上記のように表示されれば、無事インストールは終了したと見てよい。また、念のためにホストOSインストール後は、yumを最新にしておく。
# yum update -y
またゲストOSを導入する前に、SELinuxをOFFにしておくとインストールが早くなる場合があるため、ここではSELinuxをOFFにしておく、必要であれば後でONにしておくこと。
# setenforce permissive
State領域の状態の説明 | |
r | 稼働中であり、CPUを使用している状態です |
b | I/O待ち、またはタスクがなくCPUを使用していない状態です |
p | 一時停止中。xm pauseコマンドによってこの状態になります |
s | シャットダウン中。但し、完全にシャットダウンした後は一覧には表示されない |
c | 不具合によって稼働不能となった状態 |
d | 上記、c状態になるまでの経過状態 |
先に、イメージファイルの場所を作っておく
# mkdir /xen/images
# virt-install -n srv-name <- ゲストOSの名前を設定する。 --nographics <- GUIを利用しない -p <- 準仮想化で作成する --vcpus=1 <- 設定するCPU数 -r 256 <- メモリを256MBに設定 -s 8 <- 割当ディスク容量はGigabyte単位で指定 --nonsparse -f /xen/images/server.domain.com.img <- 仮想サーバの作成ファイル -l http://ftp.riken.jp/Linux/centos/5.3/os/i386 <-Install元ファイル場所
※上記コマンドは、1行として利用する。(区切はスペースを利用)
例:virt-install -n proxy --nographics -p --vcpus=1 -r 256 -s 8 --nonsparse -f /xen_images/proxy.img -l http://ftp.riken.jp/Linux/centos/5/os/i386
--hvmとする
キーボードで、
CTRL+]
を押す。
現在登録されているドメインの一覧表示
# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 7624 4 r----- 111.8 centos53 2 255 1 -b---- 14.8
※ゲストOSが起動していない場合には、ゲストOS名(ここではcentos53)などの表示がされない。あくまで起動しているものだけが表示される。
centos53というドメインにコンソールを切り替える
# xm console centos53
コンソールにつながらないときは、xenconsoledが落ちている場合がおおいので、
# xenconsoled
で起動。ps ax コマンドで起動確認。
centos53というドメインの終了
# xm shutdown centos53
centos53というドメインの起動
# xm create -c centos53 <- -c を付けるとそのままゲストOSにコンソール移動
centos53というドメインの強制終了
# xm destroy centos53
centos53というドメインの削除。但し、正常に動いたことがない。現在、削除の方法が不明。
# virsh unregister domain-name <- domain IDでも可 (undefineかも)
domain情報の表示
# virsh dominfo domain-name
xenでは、ゲストOSの設定ファイルを、/etc/xen/ゲストOS名、に保存しており、また、ゲストOSのディスクイメージを、/xen/images/ゲストOS名に保存する。(上記設定の場合)そこで、停止しているゲストOSを以下の手順で複製する。
# cp /etc/xen/ゲストOSの設定 /etc/xen/新ゲストOSの設定 # cp /xen/images/ゲストOSのイメージ /xen/images/新ゲストOSのイメージ
# emacs /etc/xen/新ゲストOSの設定
このファイルの「uuid」「name」「disk」「vif」を修正する。uuidとvifの番号はユニークである必要があるため、番号を修正する。
ホストOSで認識しているデバイスをゲストOSでも認識させる。
# emacs /etc/xen/<guestos-name> disk = [ "tap:aio:/xen_images/www.img,xvda,w" , "phy:sdb1,sdb1,w" ]
この後ろに追加した"phy:sdb1,sdb1,w"で、/dev/sdb1 をゲストOSでも認識できるようになる。
# ln -s /etc/xen/centos53 /etc/xen/auto/centos53
# cd /xen-images <- 自分が保存しているxenのイメージの場所 # dd if=/dev/zero bs=1M count=0 seek=8192 of=./zero.img <- 8GB追加予定 # mv guestos.img guestos.img.bak # cat guestos.img.bak zero.img > guestos.img <- 結合 # losetup -f /dev/loop0 # losetup /dev/loop0 guestos.img # losetup -a # fdisk -lu /dev/loop0
など、詳細はここ
6からは、xenではなくkvmベースの仮想化が基本としてインストールされている。そのため、xmコマンドがインストールされていないため、以下のコマンドで利用する。
コマンド | 機能 |
virt-top | 各仮想化されたマシンのCPU時間などの確認を行う。 |
virt-df | df コマンドを同じ |
virt-tar | tar コマンドと同じ。HOST側からbackupを取るときなどに利用 |
virt-ls | ls コマンドと同じ |