* Xen [#h23f7ebd]
#contents

* Xenとは? [#h23f7ebd]
ここでは解読性を向上させるために、Xen特有のHypervisorとDomain0のことを「ホストOS」、DomainUのことを「ゲストOS」と呼ぶことにとしている。
** ホストOSのInstall [#v465175b]
ここでは、まっさらなマシン上にXENを導入する手順を説明する。
-CentOS 5.3を利用
-インストール時のパッケージ選択では、Base と Virtualization のみを選択。
-さらに「Customize software selection」を選択し、Virtualizationの中の以下の項目を解除する。
--Virtualization-en-US
--gnome-applet-vm
--virt-manager         <- GUIベースでのゲストOS作成支援ツール

***OSイメージの取得 [#ndee296c]
 # wget http://ftp.iij.ad.jp/pub/linux/centos/5.7/isos/i386/CentOS-5.7-i386-netinstall.iso
* ホストOSへのXENの導入確認 [#r2275395]
ホスト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

***xm listのStateの解説 [#m7af986c]
|>|State領域の状態の説明|
|r|稼働中であり、CPUを使用している状態です|
|b|I/O待ち、またはタスクがなくCPUを使用していない状態です|
|p|一時停止中。xm pauseコマンドによってこの状態になります|
|s|シャットダウン中。但し、完全にシャットダウンした後は一覧には表示されない|
|c|不具合によって稼働不能となった状態|
|d|上記、c状態になるまでの経過状態|


* ゲストドメイン の作成 [#ged407df]
先に、イメージファイルの場所を作っておく
 # 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

** オプションの説明 [#hf326c9f]
- --paravirt
もし、完全仮想化をするなら、ここを
 --hvm
とする

- --nonsparse
状況に合わせてimageファイルサイズを大きくしていくSparse形式を無効にする。パフォーマンス的に、無効にした方が良い。

- --vcpus=1
CPUの数はあえて1にする。2にすると、CPUが2つあくまで動作を保留し、逆に挙動が遅くなることがあるらしい(ネットでの発言を見ただけ)

- --ram=256
メモリはMegabyte単位で指定

- --file-size=10
ディスクサイズはGigabyte単位で指定

* ゲストOS から ホストOS への復帰 [#d4695e7b]
キーボードで、
 CTRL+]
を押す。

* ホストOS からゲストOSの操作 [#w70950d9]
現在登録されているドメインの一覧表示
 # 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)などの表示がされない。あくまで起動しているものだけが表示される。

**その他のゲストOSコマンド [#ac9196c5]
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

**ゲストOSの複製 [#n0a76202]
xenでは、ゲストOSの設定ファイルを、/etc/xen/ゲストOS名、に保存しており、また、ゲストOSのディスクイメージを、/xen/images/ゲストOS名に保存する。(上記設定の場合)そこで、停止しているゲストOSを以下の手順で複製する。

 # cp /etc/xen/ゲストOSの設定 /etc/xen/新ゲストOSの設定
 # cp /xen/images/ゲストOSのイメージ /xen/images/新ゲストOSのイメージ

***設定ファイルの修正 [#idf86260]
 # 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でも認識できるようになる。


* ゲストOS の自動起動 [#of8c8ed9]
 # ln -s /etc/xen/centos53 /etc/xen/auto/centos53

*起動中のゲストOSの容量を増やす [#heab298b]
 # 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

など、詳細は[[ここ:http://d.hatena.ne.jp/sayounaraarigatou/20100226/1267207590]]




*注意点およびトラブルシューティング [#c73993fb]
+ゲストOSに物理HD(/dev/sda等)を割り振ることは、非常に慎重に対応する必要がある。またfdiskを利用したMBRパーテーションではなく、partedコマンドを利用したgptフォーマットに対応していないようだ。なんどもHDDが使い物にならなくなっている。
+当然のことながら、物理HDを複数でマウントすると確実にHDが破壊される。この点については理論上ロックをかけられないことから運用でカバーする必要がある。

*Centos6 [#ca89defb]
6からは、xenではなくkvmベースの仮想化が基本としてインストールされている。そのため、xmコマンドがインストールされていないため、以下のコマンドで利用する。
|コマンド|機能|h
|virt-top|各仮想化されたマシンのCPU時間などの確認を行う。|
|||
|virt-df|df コマンドを同じ|
|virt-tar|tar コマンドと同じ。HOST側からbackupを取るときなどに利用|
|virt-ls|ls コマンドと同じ|

*参考リンク [#c258eedd]
-[[ITpro Xenによる仮想化システム構築術:http://itpro.nikkeibp.co.jp/article/COLUMN/20060621/241362/?ST=virtual]]
-[[atmark 実践! Xenで実現するサーバ統合:http://www.atmarkit.co.jp/flinux/rensai/xen03/xen03b.html]]
-[[XENのマニュアル(英語):http://tx.downloads.xensource.com/downloads/docs/user/]]