イメージファイルにゲスト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 2
511
2
-b----
15.3 www 1
511
2
-b----
14.1
|
Sponsored Link |