■vmplayer内のWheezyにXenを導入
WheezyでのXenはどんなものかと。NICが使えないのでコンソールのみ。
雰囲気だけです。
■Xen関連のパッケージの確認
$ echo "xen-linux-system-`uname -r` xen-utils-common xen-tools libvirt-bin uuid-runtime qemu-kvm" | \
for list in `xargs`;do echo -n "$list,";apt-cache show "$list" | grep ^Descript | awk -F\: '{print $2}' | head -1;done
xen-linux-system-3.2.0-4-amd64, Xen system with Linux 3.2 on 64-bit PCs (meta-package)
xen-utils-common, Xen administrative tools - common files
xen-tools, Tools to manage Xen virtual servers
libvirt-bin, libvirt ライブラリ用のプログラム
uuid-runtime, runtime components for the Universally Unique ID library
qemu-kvm, x86 ハードウェアの完全仮想化
■Xenの導入
$ echo "xen-linux-system-`uname -r` xen-utils-common xen-tools libvirt-bin uuid-runtime qemu-kvm" | \
sudo apt-get install -y `xargs`
■コマンドの確認
$ echo "xen-linux-system-`uname -r` xen-utils-common xen-tools libvirt-bin uuid-runtime qemu-kvm" | \
for list in `xargs`;do echo "[ $list ]";dpkg -L "$list" | grep bin/ | grep -v doc/;done
[ xen-linux-system-3.2.0-4-amd64 ]
[ xen-utils-common ]
/usr/sbin/xen
/usr/lib/xen-common/bin/xen-toolstack
/usr/lib/xen-common/bin/xen-utils-wrapper
/usr/lib/xen-common/bin/xen-init-list
/usr/lib/xen-common/bin/xen-version
/usr/lib/xen-common/bin/xen-dir
/usr/lib/xen-common/bin/xen-toolstack-wrapper
/usr/sbin/xentrace_setsize
/usr/sbin/xenpm
/usr/sbin/xentrace_setmask
/usr/sbin/xentrace_format
/usr/sbin/xentop
/usr/sbin/cpuperf-xen
/usr/sbin/xl
/usr/sbin/xentrace
/usr/sbin/xm
/usr/sbin/cpuperf-perfcntr
/usr/sbin/xenperf
[ xen-tools ]
/usr/bin/xt-customize-image
/usr/bin/xt-create-xen-config
/usr/bin/xen-list-images
/usr/bin/xen-delete-image
/usr/bin/xt-install-image
/usr/bin/xen-create-nfs
/usr/bin/xen-create-image
/usr/bin/xt-guess-suite-and-mirror
/usr/bin/xen-update-image
[ libvirt-bin ]
/usr/sbin/libvirtd
/usr/bin/virt-xml-validate
/usr/bin/virt-pki-validate
/usr/bin/virt-host-validate
/usr/bin/virsh
[ uuid-runtime ]
/usr/bin/uuidgen
/usr/sbin/uuidd
[ qemu-kvm ]
/usr/bin/kvm
/usr/bin/kvm_stat
/usr/bin/kvm-io
/usr/bin/kvm-nbd
/usr/bin/kvm-img
■grubのエントリの確認
0〜3までの4つのエントリがある。
$ grep "menuentry" /boot/grub/grub.cfg | nl -w2 -v0 | sed s/"--"/"\n\t&"/g
0 menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64'
--class debian
--class gnu-linux
--class gnu
--class os {
1 menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64 (recovery mode)'
--class debian
--class gnu-linux
--class gnu
--class os {
2 menuentry 'Debian GNU/Linux, with Xen 4.1-amd64 and Linux 3.2.0-4-amd64'
--class debian
--class gnu-linux
--class gnu
--class os
--class xen {
3 menuentry 'Debian GNU/Linux, with Xen 4.1-amd64 and Linux 3.2.0-4-amd64 (recovery mode)'
--class debian
--class gnu-linux
--class gnu
--class os
--class xen {
■「with Xen 4.1-amd64」を選択するように起動順序を変更。
$ uname -a
Linux vmdebian2 3.2.0-4-amd64
$ ls /etc/grub.d/
00_header 10_linux 30_os-prober 41_custom
05_debian_theme 20_linux_xen 40_custom README
$ sudo mv /etc/grub.d/10_linux /etc/grub.d/25_linux
$ sudo update-grub2
Generating grub.cfg ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-3.2.0-4-amd64
Found initrd image: /boot/initrd.img-3.2.0-4-amd64
Found linux image: /boot/vmlinuz-3.2.0-4-amd64
Found initrd image: /boot/initrd.img-3.2.0-4-amd64
No volume groups found
done
$ grep "menuentry\|linux.*boot\|multiboot" /boot/grub/grub.cfg | head -2 | sed s/"--"/"\n\t&"/g
menuentry 'Debian GNU/Linux, with Xen 4.1-amd64 and Linux 3.2.0-4-amd64'
--class debian
--class gnu-linux
--class gnu
--class os
--class xen {
multiboot /boot/xen-4.1-amd64.gz placeholder
$ sudo shutdown -r now && exit
■Xenの起動確認
$ sudo grep -i "boot.*xen" /var/log/syslog
Jul 1 23:01:03 vmdebian1 kernel: [ 0.000000] Booting paravirtualized kernel on Xen
$ lsmod | grep xen
xen_gntdev 13021 0
xen_evtchn 13012 1
xenfs 17724 1
$ sudo xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 468 2 r----- 29.7
■仮想マシンのNICなので無効にするのだが、
ここではどんなvifができるか見たいので、作成。
$ sudo /etc/xen/scripts/network-bridge status | grep ^bridge
bridge name bridge id STP enabled interfaces
can't get info Operation not supported
$ grep "^(" /etc/xen/xend-config.sxp
(network-script network-bridge)
(vif-script vif-bridge)
(dom0-min-mem 196)
(enable-dom0-ballooning yes)
(total_available_memory 0)
(dom0-cpus 0)
(vncpasswd '')
$ sudo /etc/init.d/xen restart
[ ok ] Restarting Xen daemons: xend xend xenconsoled.
■デフォルトの設定確認
$ grep -v "^#\|^\$" /etc/xen-tools/xen-tools.conf
install-method = debootstrap
size = 4Gb # Disk image size.
memory = 128Mb # Memory size
swap = 128Mb # Swap size
fs = ext3 # use the EXT3 filesystem for the disk image.
dist = `xt-guess-suite-and-mirror --suite` # Default distribution to install.
image = sparse # Specify sparse vs. full disk images.
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`
mirror = `xt-guess-suite-and-mirror --mirror`
ext3_options = noatime,nodiratime,errors=remount-ro
ext2_options = noatime,nodiratime,errors=remount-ro
xfs_options = defaults
reiserfs_options = defaults
btrfs_options = defaults
■debootstrapがwgetでイメージを取得するので、必要であればプロキシの設定を。
$ grep wget /usr/sbin/debootstrap
--verbose don't turn off the output of wget
$ grep ^[hf].*_proxy /etc/wgetrc | sed s/"[0-9]"/"X"/g
https_proxy = http://XXX.XX.XX.XX:XXXX/
http_proxy = http://XXX.XX.XX.XX:XXXX/
ftp_proxy = http://XXX.XX.XX.XX:XXXX/
■debianのイメージを作成
$ sudo xen-create-image --hostname vmvm2 \
--ip 192.168.181.60 --netmask 255.255.255.0 --gateway 192.168.181.2 \
--passwd --dir /var/local
General Information
--------------------
Hostname : vmvm2
Distribution : wheezy
Mirror : http://ftp.jp.debian.org/debian/
Partitions : swap 128Mb (swap)
/ 4Gb (ext3)
Image type : sparse
Memory size : 128Mb
Kernel path : /boot/vmlinuz-3.2.0-4-amd64
Initrd path : /boot/initrd.img-3.2.0-4-amd64
Networking Information
----------------------
IP Address 1 : 192.168.181.60 [MAC: 00:16:3E:CB:CE:DB]
Netmask : 255.255.255.0
Gateway : 192.168.181.2
Creating partition image: /var/local/domains/vmvm2/swap.img
Done
Creating swap on /var/local/domains/vmvm2/swap.img
Done
Creating partition image: /var/local/domains/vmvm2/disk.img
Done
Creating ext3 filesystem on /var/local/domains/vmvm2/disk.img
Done
Installation method: debootstrap
Done
Running hooks
No role scripts were specified. Skipping
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done
Logfile produced at:
/var/log/xen-tools/vmvm2.log
Installation Summary
---------------------
Hostname : vmvm2
Distribution : wheezy
IP-Address(es) : 192.168.181.60
RSA Fingerprint : XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
Root Password : N/A
■確認
$ sudo wc -l /var/log/xen-tools/vmvm2.log
1048 /var/log/xen-tools/vmvm2.log
$ find /var/local/domains/
/var/local/domains/
/var/local/domains/vmvm2
/var/local/domains/vmvm2/swap.img
/var/local/domains/vmvm2/disk.img
$ ls -l /etc/xen/vmvm2.cfg
-rw-r--r-- 1 root root 733 7月 1 23:52 /etc/xen/vmvm2.cfg
$ grep -v "^#\|^\$" /etc/xen/vmvm2.cfg
kernel = '/boot/vmlinuz-3.2.0-4-amd64'
ramdisk = '/boot/initrd.img-3.2.0-4-amd64'
vcpus = '1'
memory = '128'
root = '/dev/xvda2 ro'
disk = [
'file:/var/local//domains/vmvm2/disk.img,xvda2,w',
'file:/var/local//domains/vmvm2/swap.img,xvda1,w',
]
name = 'vmvm2'
vif = [ 'ip=192.168.181.60 ,mac00:16:3E:XX:XX:XX' ]
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
■NICの名前を追加、無効にしておく。
$ sudo grep ^vif /etc/xen/vmvm2.cfg
vif = [ 'ip=192.168.181.60 ,mac=00:16:3E:XX:XX:XX' ]
$ sudo sed -i s/"^vif.*[A-F0-9]"/"& ,bridge=eth0"/ /etc/xen/vmvm2.cfg
$ sudo sed -i s/"^vif.*"/"# &"/ /etc/xen/vmvm2.cfg
$ sudo grep vif /etc/xen/vmvm2.cfg
■仮想マシンの起動
「-c」はシリアルコンソールにつないだかのように起動する。
「-c」を除くとバックグラウンドで起動。
$ sudo xm create /etc/xen/vmvm2.cfg -c
Using config file "/etc/xen/vmvm2.cfg".
...
Debian GNU/Linux 7 vmvm2 hvc0
vmvm2 login: root
Password:
Linux vmvm2 3.2.0-4-amd64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@vmvm2:~
■別のホストコンソールから確認
$ sudo xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 372 2 r----- 372.3
vmvm2 6 128 1 -b---- 5.9
■ゲストOS側でも再起動可能だが、コンソールから切り離されてしまう。
ネットワークが無いので、「xm shutdown」で落とす。
$ sudo xm shutdown vmvm2
■その他
$ sudo xm
Usage: xm <subcommand> [args]
Control, list, and manipulate Xen guest instances.
Common 'xm' commands:
console Attach to <Domain>'s console.
vncviewer Attach to <Domain>'s VNC server.
create Create a domain based on <ConfigFile>.
new Adds a domain to Xend domain management
delete Remove a domain from Xend domain management.
destroy Terminate a domain immediately.
dump-core Dump core for a specific domain.
help Display this message.
list List information about all/some domains.
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.
reset Reset a domain.
restore Restore a domain from a saved state.
resume Resume a Xend managed domain
save Save a domain state to restore later.
shell Launch an interactive shell.
shutdown Shutdown a domain.
start Start a Xend managed domain
suspend Suspend a Xend managed domain
top Monitor a host and the domains in real time.
unpause Unpause a paused domain.
uptime Print uptime for all/some domains.
usb-add Add the usb device to FV VM.
usb-del Delete the usb device to FV VM.
domstate get the state of a domain
vcpu-set Set the number of active VCPUs for allowed for
the domain.
<Domain> can either be the Domain Name or Id.
For more help on 'xm' see the xm(1) man page.
For more help on 'xm create' see the xmdomain.cfg(5) man page.
For a complete list of subcommands run 'xm help'.