Debian 4.0
Sponsored Link

イメージファイルにゲストOSを構築
2008/08/24
[1] これまでLVMの論理ボリュームにゲストOSを構築してきましたが、VMware などのように一つのイメージファイルを作成し、 その中へゲストOSを構築してみます。

これまでのやり方だと、普通にCD/DVDからインストールできる、OS標準の機能でアクセスできる、 処理性能が高い、といった利点がある上、元々のカーネルを利用して普通のLinuxシステムとしても起動できます。 Linuxマルチブート環境をそのまま仮想化して同時実行できるようにしたようなものです。 ただし、このやり方はゲストOSを増やすときに、雛形を作っておいてもそれなりに作業が発生し、多少面倒です。 また他のXen環境にも移行しにくいです。

対して、イメージファイルを作成してそこへ作る場合、OS標準の機能だけでは イメージファイルを利用できないため処理性能は低下しますが、 バックアップをとるのはイメージファイル一つをコピーするだけであったり、 他のXen環境に移行しやすかったりと、管理がしやすいことが利点です。

また、イメージファイルへのインストール方法ですが、通常はこのやり方はCD/DVDからはインストールできないので、 手作業で環境を構築し、さらに yum でベースシステムをネットワークインストールすることになるので時間がかかりますが、 ここではめんどっちぃのでネットワークインストールはせず、 (3) の [3] で作成しておいた雛形を使って作成します。 けっこう手早く終わります。作った後はイメージファイルを名前をかえてコピっておけば少ない時間と労力でゲストOSがポンポン作れます。

ちなみに以下の例ですが、初回のベースシステムをインストールしたときに割り当てた容量では足りないため、 / を20G に, /var を 50G に拡張してあります。論理ボリュームの拡張は LVM管理を参照ください。
ns:~#
mkdir /var/xen

ns:~#
dd if=/dev/zero of=/var/xen/lan.img bs=1 count=1 seek=20G

1+0 records in
1+0 records out
1 byte (1 B) copied, 0.000236 s, 4.2 kB/s
ns:~#
dd if=/dev/zero of=/var/xen/lan.swap bs=1 count=1 seek=1G

1+0 records in
1+0 records out
1 byte (1 B) copied, 8e-05 seconds, 12 kB/s
ns:~#
ns:~#
mkswap /var/xen/lan.swap

Setting up swapspace version 1, size = 1073737 kB
no label, UUID=2f05a602-f7d6-4245-845a-b3efd647b000
ns:~#
mkfs -t ext3 -F /var/xen/lan.img

mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2621440 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
160 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
 
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

 
4096000


Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

ns:~#
mount -o loop /var/xen/lan.img /mnt


ns:~#
cp root.tgz /mnt/
# (3)の[3]で作成した雛形をコピー

ns:~#
cd /mnt

ns:/mnt#
tar zxvf root.tgz

ns:/mnt#
rm -f root.tgz

ns:/mnt#
cp /root/usr.tgz usr/
# (3)の[3]で作成した雛形をコピー

ns:/mnt#
cd usr

ns:/mnt/usr#
tar zxvf usr.tgz

ns:/mnt/usr#
rm -f usr.tgz

ns:/mnt/usr#
cd ../var

ns:/mnt/var#
cp /root/var.tgz ./
# (3)の[3]で作成した雛形をコピー

ns:/mnt/var#
tar zxvf var.tgz

ns:/mnt/var#
rm -f var.tgz

ns:/mnt/var#
cd ../

ns:/mnt#
vi etc/fstab


# 今回は / と swap しか作成していないため、いらない所を削除して以下のようにする

proc
/proc
proc
defaults
0 0

/dev/hda1
/
ext3
defaults,errors=remount-ro
0 1

/dev/hda2
none
swap
sw
0 0

/dev/hda
/media/cdrom0   udf,iso9660   user,noauto
0 0


ns:/mnt#
vi etc/hostname


# ホスト名変更

lan


ns:/mnt#
vi etc/hosts


127.0.0.1
localhost

# 変更

127.0.1.1
lan
.srv.world
lan


ns:/mnt#
vi etc/network/interfaces


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
#iface eth0 inet dhcp
iface eth0 inet static
# IPアドレス変更

address
192.168.0.20

network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
auto eth0

ns:/mnt#
rm -f etc/udev/rules.d/z25_persistent-net.rules

ns:/mnt#
cd

ns:~#
umount /mnt

ns:~#
cp /etc/xen/www /etc/xen/lan

ns:~#
vi /etc/xen/lan


# 以下のように変更

kernel
= "/boot/vmlinuz-2.6.18-4-xen-686"

ramdisk
= "/boot/initrd.img-2.6.18-4-xen-686"

memory
= "512"

name
= "
lan
"

vcpus
= "2"

nicks
= "1"

vif
= [ 'mac=00:16:3e:00:00:
20
,bridge=xenbr0' ]

disk
= [ '
file:/var/xen/lan.img,hda1,w
',

'
file:/var/xen/lan.swap,hda2,w
' ]
root
= "/dev/hda1 ro"


ns:~#
xm create -c lan


Debian GNU/Linux 4.0 lan tty1

lan login:
[2] 作ったイメージファイルを雛形としてとっておきます。
ns:~#
# ホストOS上

ns:~#
cp /var/xen/lan.img /root/root.img

ns:~#
cp /var/xen/lan.swap /root/swap.img

ns:~#
ll

total 891160
-rw-r--r-- 1  root  root
21474836481
 2007-06-03 10:39  root.img

-rw-r--r-- 1  root  root
44442338
 2007-06-24 01:55  root.tgz

-rw-r--r-- 1  root  root
1073741825
 2007-06-24 07:08  swap.img

-rw-r--r-- 1  root  root
76528492
 2007-06-24 01:56  usr.tgz

-rw-r--r-- 1  root  root
75088604
 2007-06-24 01:57  var.tgz
[3] イメージファイルのゲストOSを追加してみます。
ns:~#
cp root.img /var/xen/rx7.img

ns:~#
cp swap.img /var/xen/rx7.swap

ns:~#
mount -o loop /var/xen/rx7.img /mnt

ns:~#
vi /mnt/etc/hosts


127.0.0.1
localhost

# 変更

127.0.1.1
rx7
.srv.world
rx7


ns:~#
vi /mnt/etc/hostname


# ホスト名変更

rx7


ns:~#
vi /mnt/etc/network/interfaces


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
#iface eth0 inet dhcp
iface eth0 inet static
# IPアドレス変更

address
192.168.0.21

network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
auto eth0

ns:~#
rm -f /mnt/etc/udev/rules.d/z25_persistent-net.rules

ns:~#
umount /mnt

ns:~#
cp /etc/xen/lan /etc/xen/rx7

ns:~#
vi /etc/xen/rx7


# 以下のように変更

kernel
= "/boot/vmlinuz-2.6.18-4-xen-686"

ramdisk
= "/boot/initrd.img-2.6.18-4-xen-686"

memory
= "512"

name
= "
rx7
"

vcpus
= "2"

nicks
= "1"

vif
= [ 'mac=00:16:3e:00:00:
21
,bridge=xenbr0' ]

disk
= [ '
file:/var/xen/rx7.img,hda1,w
',

'
file:/var/xen/rx7.swap,hda2,w
' ]
root
= "/dev/hda1 ro"


ns:~#
xm create -c rx7


Debian GNU/Linux 4.0 rx7 tty1

rx7 login:

ns:~#
# ホストOS上

ns:~#
xm list

Name
ID Mem(MiB) VCPUs State Time(s)

Host
0
510
2
r-----
50.6

lan
3
511
2
-b----
14.8

rx7
4
511
2
-b----
16.8

mail
2
511
2
-b----
15.3

www
1
511
2
-b----
14.1
関連コンテンツ