Xen環境domUの構築

作成日:2016/07/23
最終更新日:2020/07/05

Xen環境domUの構築

作成日:2016/07/23
最終更新日:2020/07/05

概要

先日作成したXen環境にdomUを追加します。

fstab

今回はsda3にディスクイメージを作成して使用することにします。 sda3は/usr/local/xen/smallにmountすることにします。

起動時に自動的にmountするために/etc/fstabに情報を記述します。 fstabを確認すると、以下のようになっていました。

コマンド1. /etc/fstabの内容確認
user@HOST:/etc$ cat fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=066a8ceb-edaa-4a40-90ec-b809e327d66e /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda2 during installation
UUID=670bb0b3-26fd-42fc-b61b-36d20b76c2bf none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
user@HOST:/etc$ 

デバイスファイルを記述するのではなく、UUIDを指定するようです。 UUIDを調べるにはblkidコマンドを使用します。 以下のコマンドを発行してsda3のUUIDを調べます。

コマンド2. /dev/sda3のUUIDの確認
$ sudo blkid /dev/sda3
/dev/sda3: UUID="c151299c-11fd-4655-8c98-729de8ab134c" TYPE="ext4" PARTUUID="90909090-03"
$

得られた情報を元にfstabの末尾に追記します。 今回は以下のように追記しました。

ソース1. /etc/fstabの変更内容
# /usr/local/xen/small on /dev/sda3
UUID=c151299c-11fd-4655-8c98-729de8ab134c /usr/local/xen/small	ext4	errors=remount-ro	0	0

ディレクトリが無いので、ディレクトリを作成します。

コマンド3. mountするディレクトリの作成
sudo mkdir /usr/local/xen
sudo mkdir /usr/local/xen/small

なお、手動でmountするには以下のコマンドを発行します。

コマンド4. 手動によるmount
sudo mount UUID=c151299c-11fd-4655-8c98-729de8ab134c /usr/local/xen/small

設定完了後再起動します。

コマンド5. 再起動
sudo reboot

自動でmountされていることをdfコマンドを発行して確認します。

コマンド6. mountされていることの確認
df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              144540       0    144540   0% /dev
tmpfs              32744    2016     30728   7% /run
/dev/sda1       20511356 2329104  17117292  12% /
tmpfs             163700       0    163700   0% /dev/shm
tmpfs               5120       0      5120   0% /run/lock
tmpfs             163700       0    163700   0% /sys/fs/cgroup
/dev/sda3       41153856   49032  38991288   1% /usr/local/xen/small
tmpfs              32744       0     32744   0% /run/user/1000

domUの構築

今回、domUはHDDイメージファイル上に構築することにします。

VMの計画

今回は以下のサイズで生成することにします。

表1. ディスクサイズ
ファイル名 サイズ用途
usr/local/xen/small/sda1.img10GB/

HDDイメージの生成

以下のコマンドを発行し、HDDイメージを作成します。

コマンド7. HDDイメージファイルの作成
cd /usr/local/xen/small
sudo dd if=/dev/zero of=./sda1.img bs=4M count=1 seek=2560

domUの設定ファイルの作成

OSのインストール用にdomUの設定ファイルを作成します。 今回はUbuntu 16.04をネットワークインストールしました。 Xen用のカーネルなどが公開されているのでそれを用いてinstallします。

OSのインストールに用いた設定ファイルをリンクします。

domUへのOSのインストール

以下のコマンドを発行しdomUを生成します。 -cオプションを付与するとターミナルがdomUのシリアルコンソールに 接続されます。

コマンド8. domUの生成
sudo xl create -c ./ubuntu-16_04_install.cfg

この状態で、テキストベースのインストーラが起動するのでOSの インストールをします。

domUの停止

OSのインストールが完了するとdomUのシリアルコンソールから抜けます。 この時点でdomUはまだ起動しているので、以下のコマンドを発行して終了 します。

コマンド9. domUの停止
sudo xl shutdown ubuntu-16_04

domUの起動

domUを以下のコマンドを発行してdomUを起動します。 設定ファイルを変更してインストールした環境に入れるようにします。

コマンド10. domUの起動
sudo xl create -c ./ubuntu-16_04.cfg

起動したら、通常のサーバーと同じように環境設定を行います。

エラー対策

以下のログが出力され、domUを起動できませんでした。

コマンド11. エラーログの内容
  [Errno 28] No space left on device
  Error writing temporary copy of ramdisk
  libxl: error: libxl_bootloader.c:637:bootloader_finished: bootloader failed - consult logfile /var/log/xen/bootloader.4.log
  libxl: error: libxl_exec.c:118:libxl_report_child_exitstatus: bootloader [7590] exited with error status 1
  libxl: error: libxl_create.c:1144:domcreate_rebuild_done: cannot (re-)build domain: -3
  libxl: error: libxl.c:1610:libxl__destroy_domid: non-existant domain 4
  libxl: error: libxl.c:1568:domain_destroy_callback: unable to destroy guest with domid 4
  libxl: error: libxl.c:1495:domain_destroy_cb: destruction of domain 4 failed

どうやら、/runが置かれているtmpfsのサイズが小さいようなので 以下のコマンドを発行し増やしました。domUを数多く立ち上げる 場合にはもっとサイズを大きくする必要がありそうです。

コマンド12. tmpfsの拡張
sudo mount -t tmpfs tmpfs /run -o size=100M,mode=1777,remount