Xenで仮想環境を構築

新年ですが、普通に技術の話題です。

Xen徹底入門」を参考にXenの構築を行ってみました。ちょっと調べたら、この本に書いてないようなツールもあるようなので、それを確認しながらの作業です。

この本は個人でXenを使って開発をするときに使うような、お手軽な構成から、複数マシンを使って構築するような大きな構成まで、幅広く言及されてます。VNETやマイグレーションの話題までしっかりと載っているので、会社でXenを使おうと思っているような人も、手元に置いておくと便利かもしれません。

Xen徹底入門
Xen徹底入門
平 初 (著)
長谷川 猛 (著)
宮本 久仁男 (著)
大島 孝子 (著)
¥ 3,444 (税込)


CentOSによるDomain-0の構築

今回作るのはCentOSの準仮想化環境になります。まずはXenのDomain-0の構築です。

基本的には普通にCentOSをCDなりDVDなりを使ってインストールするのと同じです。ただ、インストールするソフトウェアの部分で、「仮想化」という項目があるので、その部分にチェックを入れてインストールするだけです。この部分は特別難しいことはありません。

それ以外の部分は基本的にどんな構成でも良いのですが、Xenのベースとなる部分ですので、なるべく無駄なものを入れずに構築した方が、重さ的にもセキュリティ的にもいいと思います。僕は最小構成+仮想化でインストール。GUIとかはなーし、という感じです。

あとは普通にCentOS用の設定をするだけです。別にXen用の特殊な設定とかはまだ必要なし。僕の場合、以下の設定をしてます。
まずは、ルートだけだといろいろ面倒なので、作業用のユーザの作成。

# adduser user
# passwd user
# visudo
user  ALL=(ALL)  ALL

ネットワーク関連の設定。

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.***.***
NETMASK=255.255.255.0
BROADCAST=192.168.***.255
GATEWAY=192.168.***.1
HWADDR=**:**:**:**:**:**
IPV6INIT=yes
IPV6_AUTOCONF=yes
ONBOOT=yes
PEERDNS=no
DHCP_HOSTNAME=******
$ sudo vi /etc/resolv.conf
search
nameserver 192.168.***.*
$ sudo /etc/init.d/network restart

sshの設定。

$ sudo vi /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
UsePAM no

最後にyumのアップデート。

$ sudo yum update

本来なら、この後必要のないサービスを消したりする必要があるのですが、開発環境なので、とりあえずこんな感じで。

Domain-U (ファイル)

まずはストレージとしてファイルを使っての、Domain-Uの作り方です。本には書いてなかった野ですが、virt-installというツールを使うと、とてもお手軽に作れます。

$ sudo /user/sbin/virt-install -nographics -n xen-file-test
Would you like a fully virtualized guest (yes or no)? no
How mach RAM should be allocated (in megabytes)? 256
What would you like to use as the disk (file path)? /home/xen/test/imgfile
How large would you like the disk (/home/xen/test/imgfile) to be (in gigabytes)? 2
Would you like to enable graphics support? (yes or no) no
What is the install location? ftp://ftp2.riken.jp/Linux/centos/5/os/i386

使用するRAMのサイズは最低で256Mになっています。これは後述しますが、後で直接設定をいじることでもっと少ない値にも変更可能です。

ストレージとして使うファイルは前もってddなどで作っておけば、そのパスを指定すれば自動的にそのファイルを使ってくれます。パスにファイルが存在しないときは作成するファイルサイズを聞かれるので、サイズを指定すればその大きさのファイルを作ってくれます。

install locationはネットワークインストールに使うソースフォルダのパスです。www.centos.org - centos.org contentから選んできます。

あとは、CUIのインストール画面が出てくるので、普通にインストールすればOKです。CUIの画面が若干見にくく、チェックしたところと違うところにチェックがついてるー、なんてことによくなりますが、地道に設定してください。

ネットワークインストールなので若干時間がかかりますが、後は待ってればOK。

Domain-U (パーティション)

ストレージとしてパーティションを使う場合も非常に簡単です。まずはDomain-Uで使うパーティションを作成しておきます。

$ sudo /sbin/fdisk /dev/sda
コマンド (m でヘルプ): n
コマンドアクション: e
Selected partition 4
最初 シリンダ (1384-19452, default 1384): Using default value 1384
終点 シリンダ または +サイズ または +サイズM または +サイズK (1384-19452, default 19452): Using default value 19452
コマンド (m でヘルプ): n
最初 シリンダ (1384-19452, default 1384): Using default value 1384
終点 シリンダ または +サイズ または +サイズM または +サイズK (1384-19452, default 19452): +10240M
コマンド (m でヘルプ): w

今回は拡張パーティション(sda4)と論理パーティション(sda5)を切ってます。論理パーティション(sda5)上にインストールします。

$ sudo /usr/sbin/virt-install -nographics -n xen-part-test
Would you like a fully virtualized guest (yes or no)? no
How mach RAM should be allocated (in megabytes)? 256
What would you like to use as the disk (file path)? /dev/sda5
Would you like to enable graphics support? (yes or no) no
What is the install location? ftp://ftp2.riken.jp/Linux/centos/5/os/i386

パーティションの場合は、そのままパーティションのパスを指定すればOKです。それ以外はファイルの場合と同じ。

パーティションの場合も設定をして、しばらくまてばできあがります。簡単です。

作成後に設定を変更

virt-installによるデフォルトのインストールだと、最小RAMが256Mだったり、ネットワークはブリッジ接続になっていたりします。この設定だと困る、という場合は、作成後にも設定の変更を行うことができます。

設定は、/etc/xen/ドメイン名にあります。この設定ファイルを直接編集してドメインの再起度をすればOK。

$ sudo vi /etc/xen/xen-part-test
$ sudo /usr/sbin/xm shutdown xen-part-test
$ sudo /usr/sbin/xm create xen-part-test

Domain-Uを自動起動

再度にDomain-UをDomain-0起動時に同時に自動起動する方法です。

$ sudo ln -s /etc/xen/xen-part-test /etc/xen/auto/

/etc/xen/auto/以下に設定ファイルへのリンクを貼っておけば、自動的に起動してくれます。