随分前から、仮想化が流行ってる。流行ってはいるが、仮想化と言うキーワードが本当に美味しいところはどういうところなのであろう?
俺自身内心疑問に思ってる部分が有る。仮想化という言葉が出てきたのも、CPUの高速化、メモリの肥大化、HDDの大容量化が進んだからこそ、仮想化という言葉が出てきたのだと思う。
元々、サーバマシンは、一品一様の考えが有、ウェブサーバはウェブサーバとして一台、メールサーバはメールサーバとして一台・・・。ってな具合にワン機能ワンサーバの考えが有った。しかし、これでは、サーバマシンばかりになり、一台一台の管理の利便性も悪いし、とにもかくにも電力の消費が著しく多くなるのも問題だ。
そこで、インターネットサーバの省エネ、省スペース等でコストダウンを図るのには仮想化の意味が出てきそうだ。したがって、ここではDebian4.0 etch(& lenny対応) を使ってXenをインストールして、仮想化の魅力を実感してみようと思う。
俺の場合は、自分のサーバを現在全て1サーバ1機能としている。そのため、Xenを使ってサーバの台数を減らして省電力化、省スペース化を実現してみたい。
付録1
仮想化テストマシン環境)
# more /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 3
model name : Pentium II (Klamath)
stepping : 3
cpu MHz : 418.822
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu tsc msr pae mce cx8 mtrr mca cmov mmx up
bogomips : 1505.59
# lspci
00:00.0 Host bridge: Intel Corporation 440LX/EX – 82443LX/EX Host bridge (rev 03)
00:01.0 PCI bridge: Intel Corporation 440LX/EX – 82443LX/EX AGP bridge (rev 03)
00:04.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 01)
00:04.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:04.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01)
00:04.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 01)
00:09.0 Ethernet controller: 3Com Corporation 3c905 100BaseTX [Boomerang]
00:0c.0 VGA compatible controller: Matrox Graphics, Inc. MGA 1064SG [Mystique] (rev 02)
付録2
Xenの中核のコマンドであるxmコマンドのヘルプを掲載。
# xm -h
Usage: xm <subcommandオプション> [Domain-U名]
Control, list, and manipulate Xen guest instances.
xm full list of subcommands:
console Domain-Uへコンソールアタッチする
create Domain-Uを <ConfigFile> に合わせてクリエートする(作成する)
destroy 緊急にDomain-Uを終了させる
domid Domain名をDomain IDに変換する
domname Domain IDをDomain名に変換する
dump-core Dump core for a specific domain.
list List information about all/some domains.
mem-max Set the maximum amount reservation for a domain.
mem-set Set the current memory usage for a domain.
migrate Migrate a domain to another machine.
pause Pause execution of a domain.
reboot Reboot a domain.
rename Rename a domain.
restore Restore a domain from a saved state.
save Save a domain state to restore later.
shutdown Shutdown a domain.
sysrq Send a sysrq to a domain.
top Monitor a host and the domains in real time.
unpause Unpause a paused domain.
uptime Print uptime for a domain.
vcpu-list List the VCPUs for a domain or all domains.
vcpu-pin Set which CPUs a VCPU can use.
vcpu-set Set the number of active VCPUs for allowed for
the domain.
dmesg Read and/or clear Xend’s message buffer.
info Get information about Xen host.
log Print Xend log
serve Proxy Xend XMLRPC over stdio.
sched-credit Get/set credit scheduler parameters.
sched-sedf Get/set EDF parameters.
block-attach Create a new virtual block device.
block-detach Destroy a domain’s virtual block device.
block-list List virtual block devices for a domain.
block-configure Change block device configuration
network-attach Create a new virtual network device.
network-detach Destroy a domain’s virtual network device.
network-list List virtual network interfaces for a domain.
vtpm-list List virtual TPM devices.
vnet-list List Vnets.
vnet-create Create a vnet from ConfigFile.
vnet-delete Delete a Vnet.
labels List <type> labels for (active) policy.
addlabel Add security label to domain.
rmlabel Remove a security label from domain.
getlabel Show security label for domain or resource.
dry-run Test if a domain can access its resources.
resources Show info for each labeled resource.
makepolicy Build policy and create .bin/.map files.
loadpolicy Load binary policy into hypervisor.
cfgbootpolicy Add policy to boot configuration.
dumppolicy Print hypervisor ACM state information.
# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 239 1 r—– 2725.1
michan 2 128 1 -b—- 123.1
sub3 3 128 1 -b—- 126.4
1.Xenインストールと運用
1)Xenの主要なモジュールをaptする
# apt-get update
# apt-get install xen-linux-system-2.6.18-6-xen-686(lennyの場合、xen-linux-system-2.6.26-1-xen-686) libc6-xen xen-tools bridge-utils udev(lennyの場合)
Domain-Oを有効にするため、念のため再起動する(必要ないかも知れない)。
# reboot
再起動後、Domain-Oが出来てるかどうか確認する。
# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 367 1 r—– 1295.2
2)仮想ブリッジを設定する
設定ファイルを編集してXenの仮想ブリッジを有効にする。
# vi /etc/xen/xend-config.sxp
省略
# (network-script ‘network-bridge netdev=eth1’)
(network-script ‘network-bridge netdev=eth0’) ←コメントアウトして、デバイスは ifconfig -a で使用されてるデバイスを記載する
# The bridge is named xenbr0, by default. To rename the bridge, use
#
# (network-script ‘network-bridge bridge=<name>’)
#
# It is possible to use the network-bridge script in more complicated
# scenarios, such as having two outgoing interfaces, with two bridges, and
# two fake interfaces per guest domain. To do things like this, write
# yourself a wrapper script, and call network-bridge from it, as appropriate.
#
(network-script network-dummy)
省略
再起動してXenの仮想ブリッジを有効にする。
# reboot
3)Domain-U全体の設定をする
# vi /etc/xen-tools/xen-tools.conf
dir = /home/xen ←Domain-Uのディレクトリの設定
debootstrap = 1 ←lennyの場合、install-method=debootstrap
size = 4Gb # Disk image size. ←Domain-Uのディスクサイズの設定
memory = 128Mb # Memory size ←Domain-Uのメモリサイズの設定
swap = 128Mb # Swap size ←Domain-Uのスワップサイズの設定
fs = ext3 # use the EXT3 filesystem for the disk image. ←Domain-Uのファイルシステムの設定
dist = etch # Default distribution to install. ←Domain-UのOSの設定
image = sparse # Specify sparse vs. full disk images.
gateway = 192.168.255.1
netmask = 255.255.255.0
kernel = /boot/vmlinuz-2.6.18-6-xen-686 ←lennyの場合、kernel=/boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-2.6.18-6-xen-686 ←lennyの場合、initrd=/boot/initrd.img-`uname -r`
arch = i386 ←lennyの場合、CPUタイプを記載
mirror = http://ftp.us.debian.org/debian/
4)実際にDomain-Uを作る
■ゲスト1を作る(Debian4.0etch ホスト名:michan)
# xen-create-image –ip 192.168.255.8 –hostname michan
やり直しによる上書きの場合は、–forceオプションを付ける。
General Infomation
——————–
Hostname : michan ←ホストネーム
Distribution : etch ←OS
Fileystem Type : ext3 ←ファイルシステム
Size Information
—————-
Image size : 4Gb ←Domain-Uのディスクサイズ
Swap size : 128Mb
Image type : sparse
Memory size : 128Mb ←Domain-Uのメモリサイズ
Kernel path : /boot/vmlinuz-2.6.18-6-xen-686
Initrd path : /boot/initrd.img-2.6.18-6-xen-686
Networking Information
———————-
IP Address 1 : 192.168.255.8 ←IPアドレス
Netmask : 255.255.255.0 ←ネットマスク
Gateway : 192.168.255.1 ←このネットワークのGateway
Creating swap image: /home/xen/domains/michan/swap.img
Done
Creating disk image: /home/xen/domains/michan/disk.img
Done
Creating ext3 filesystem on /home/xen/domains/michan/disk.img
Done
Installing your system with debootstrap mirror http://ftp.us.debian.org/debian/
Done
Running hooks
Done
No role script specified. Skipping
Creating Xen configuration file
Done
All done
Logfile produced at:
/var/log/xen-tools/michan.log
設定ファイルを解かり易くするため、リネームする。
# mv /etc/xen/michan.cfg /etc/xen/michan
実際に、ゲスト1(Domain-U)へアクセスする。
# xm create -c michan
途中省略
Debian GNU/Linux 4.0 michan tty1
michan login: root
rootでログインしてもはじめはパスワード無しでログインして、rootのパスワードを作成する。
# passwd root
Enter Password : xxxxxxxxxx
ゲストOS(Domain-U)からホストOS(DomainO)へ戻るには、以下のコマンドを打つ!
# ctrl +]
改めて、コンソールログインするにはホストOS(DomainO)側から、
# xm console michan
Debian GNU/Linux 4.0 michan tty1
michan login:
■ゲスト2を作る(Debian4.0etch ホスト名:sub3)
# xen-create-image –ip 192.168.255.111 –hostname sub3
General Infomation
——————–
Hostname : sub3
Distribution : etch
Fileystem Type : ext3
Size Information
—————-
Image size : 4Gb
Swap size : 128Mb
Image type : sparse
Memory size : 128Mb
Kernel path : /boot/vmlinuz-2.6.18-6-xen-686
Initrd path : /boot/initrd.img-2.6.18-6-xen-686
Networking Information
———————-
IP Address 1 : 192.168.255.111
Netmask : 255.255.255.0
Gateway : 192.168.255.1
Creating swap image: /home/xen/domains/sub3/swap.img
Done
Creating disk image: /home/xen/domains/sub3/disk.img
Done
Creating ext3 filesystem on /home/xen/domains/sub3/disk.img
Done
Installing your system with debootstrap mirror http://ftp.us.debian.org/debian/
Done
Running hooks
Done
No role script specified. Skipping
Creating Xen configuration file
Done
All done
Logfile produced at:
/var/log/xen-tools/sub3.log
# mv /etc/xen/sub3.cfg /etc/xen/sub3
# xm create -c sub3
途中省略
Debian GNU/Linux 4.0 sub3 tty1
sub3 login:
# xm console sub3
Debian GNU/Linux 4.0 sub3 tty1
sub3 login:
同じく、はじめのログインはrootのパスワード無し、rootのパスワードを作成する。
# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 239 1 r—– 2591.7
michan 2 128 1 —— 57.8
sub3 3 128 1 -b—- 90.4
5)Domain-U ゲスト1、ゲスト2の自動起動設定
# mkdir /etc/xen/auto
# ln -s /etc/xen/michan /etc/xen/auto/
# ls -l /etc/xen/auto
total 0
lrwxrwxrwx 1 root root 17 2008-11-11 23:57 michan -> /etc/xen/michan
※ sub3も同要領で登録する。
2.バックアップの方法(Domain-U ゲスト1のバックアップの場合)
1)ゲスト1(michanホスト)のイメージファイルの確認
# ls -al /home/xen/domains/michan/
total 884852
drwxr-xr-x 2 root root 4096 Nov 10 01:00 .
drwxr-xr-x 4 root root 4096 Nov 10 03:35 ..
-rw-r–r– 1 root root 4294967296 Nov 10 01:00 disk.img
-rw-r–r– 1 root root 134217728 Nov 10 01:00 swap.img
# cd /etc/xen/
2)Domain-Uリスト確認
# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 239 1 r—– 2905.2
michan 2 128 1 -b—- 172.3
sub3 3 128 1 -b—- 175.2
# ls
michan sub3 xend-pci-permissive.sxp
scripts xend-config.sxp xend-pci-quirks.sxp
3)Domain-Uゲスト1の設定ファイルの内容確認
# cat michan
kernel = ‘/boot/vmlinuz-2.6.18-6-xen-686’
ramdisk = ‘/boot/initrd.img-2.6.18-6-xen-686’
memory = ‘128’
root = ‘/dev/sda1 ro’
disk = [ ‘file:/home/xen/domains/michan/disk.img,sda1,w’,
‘file:/home/xen/domains/michan/swap.img,sda2,w’ ]
name = ‘michan’
vif = [ ‘ip=192.168.255.8’ ]
on_poweroff = ‘destroy’
on_reboot = ‘restart’
on_crash = ‘restart’
4)バックアップするために、Domain-Uを一端シャットダウンする
# xm shutdown michan -w
Domain michan terminated
All domains terminated
-wオプションは完全にシャットダウンするまで応答を返さないことを意味する。
シャットダウンしたことを確認する。
# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 239 1 r—– 2912.3
sub3 3 128 1 -b—- 175.4
5)バックアップディレクトリを作成する
# cd /home/xen/domains/
# mkdir images-backup
# mkdir images-backup/michan
6)バックアップ(コピー)する
# cp -v michan/*.img ./images-backups/michan/
7)バックアップされてるか確認する
# ls -l images-backup/
-rw-r–r– 1 root root 4294967296 Nov 10 01:00 disk.img
-rw-r–r– 1 root root 134217728 Nov 10 01:00 swap.img
8)設定ファイルをバックアップする
# cp -v /etc/xen/michan ./images-backup/michan
9)バックアップ作業が終了したので再び、michan Domain-Uを起動する
# xm create -c michan
以上
コメント