CentOS5.4 + Xen4.0 にしてみた
Xen4.0リリース。Testing版だけどgitcoさんが作ってくれているのでインストールだけしてみた。
内容は前回、前々回と同じ。
yumのrepositoryを追加してupdate
$ cd /etc/yum.repos.d $ sudo wget http://www.gitco.de/repo/GITCO-XEN4.0.0_testing_x86_64.repo $ sudo yum update Dependencies Resolved ========================================================================================== Package Arch Version Repository Size ========================================================================================== Updating: xen x86_64 4.0.0-3.el5 gitco-xen4.0.0-testing 12 M xen-devel x86_64 4.0.0-3.el5 gitco-xen4.0.0-testing 408 k xen-libs x86_64 4.0.0-3.el5 gitco-xen4.0.0-testing 366 k Transaction Summary ========================================================================================== Install 0 Package(s) Update 3 Package(s) Remove 0 Package(s) Total download size: 13 M Is this ok [y/N]: y
grub.confのエントリもちゃんと新しいxenでキックすることを確認。
title CentOS (2.6.18-164.15.1.el5xen) root (hd0,0) kernel /xen.gz-4.0.0 module /vmlinuz-2.6.18-164.15.1.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-164.15.1.el5xen.img
リブート
$ sudo reboot
xenの確認
$ sudo xm dmesg | more __ __ _ _ ___ ___ \ \/ /___ _ __ | || | / _ \ / _ \ \ // _ \ '_ \ | || |_| | | | | | | / \ __/ | | | |__ _| |_| | |_| | /_/\_\___|_| |_| |_|(_)___(_)___/ (XEN) Xen version 4.0.0 (root@gitco.tld) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) S un May 2 19:44:45 CEST 2010
追記
2010/05/08
centosのdomainUが起動しない。準仮想centos5のdomainUのみ今のところだめっぽい。
Xen - Ruby interface to the Xen API を使ってみる
Xenを操作するために、virt-manager, xmコマンド, virsh でも特に不満はないのですが、Xen Management APIというのがあるそうなので使ってみたくなりました。
xenライブラリをインストール
gem install xen Successfully installed xen-0.1.2.1 1 gem installed Installing ri documentation for xen-0.1.2.1... Installing RDoc documentation for xen-0.1.2.1...
xend-config.sxpを変更
Domain0へリモートアクセスを可能にするため、少々設定。ただXenのバージョンが古いと対応していないかも。私のXenは3.4.1を使っています。
$ cat /etc/xen/xend-config.sxp | grep ^\(xen-api-server (xen-api-server ((0.0.0.0:9363)))
設定を再読み込み。
$ sudo /etc/init.d/xend reload
domainUのboot, reboot, shutdown
dom0 = "mydom0" domu = "mydomu" xenhost = Xen::Host.new(dom0, 9363) vm = xenhost.find_vm(domu) if vm printf("%s: vm is in the state of %s \n", domu, vm.start!) #vm.clean_reboot! #vm.clean_shutdown! #vm.hard_reboot! #vm.hard_shutdown! end
xmコマンドのxm listっぽいのやつ
require 'rubygems' require 'xen' dom0s = ["mydom0"] printf("%-15s%-20s%-10s%-10s%-10s%-10s\n","Dom0", "Name", "ID", "Mem", "VCPUs", "State") dom0s.each {|dom| xenhost = Xen::Host.new(dom, 9363) xenhost.vms.each {|vm| next if vm.is_dom0? rec = vm.record dom0, name, domid, mem, vcpus, state = [ dom, rec["name_label"], rec["domid"], (rec["memory_dynamic_min"].to_i / (1024*1024)), rec["VCPUs_max"], rec["power_state"] ] printf("%-15s%-20s%-10s%-10s%-10s%-10s\n", dom0, name, domid, mem, vcpus, state) } }
感想
思ったより便利ですが、基本的な操作ぐらいしかできない感じです。
gemでxenライブラリをインストールさえすれば、Linux, Windowsでもdomain0へリモートアクセスができるのでネットワーク管理者にとっては嬉しいかも。
thanks!
CentOS5.4 + Xen3.4.2 にしてみた
http://www.gitco.de/repo/ の人が Xenの3.4.2を提供しております。ほんとありがたい限りです。というので、前回と内容はほとんど同じですがXen3.3.1からXen3.4.2にアップデートしてみました。
http://d.hatena.ne.jp/dharry/20090607/1244333541
最初はgitco.deさんの古いリポジトリを無効にします。
$ sudo vim /etc/yum.repos.d/CentOS5-GITCO_x86_64.repo [gitco] name=CentOS-$releasever - GITCO baseurl=http://www.gitco.de/linux/x86_64/centos/5/rpms/ gpgcheck=1 #enabled=1 enabled=0
Xen3.4.2のリポジトリをダウンロード
$ cd /etc/yum.repos.d/ $ sudo wget http://www.gitco.de/repo/GITCO-XEN3.4.2_x86_64.repo
yum で アップデート
$ sudo yum clean all $ sudo yum update ========================================================================================== Package Arch Version Repository Size ========================================================================================== Updating: gtk-vnc x86_64 0.3.9-1.el5 gitco-xen3.4.2 89 k gtk-vnc-python x86_64 0.3.9-1.el5 gitco-xen3.4.2 16 k libvirt x86_64 0.7.0-6.el5 gitco-xen3.4.2 481 k libvirt-python x86_64 0.7.0-6.el5 gitco-xen3.4.2 153 k python-virtinst noarch 0.500.0-1.el5 gitco-xen3.4.2 475 k qemu x86_64 0.10.5-1.el5 gitco-xen3.4.2 14 M virt-manager x86_64 0.7.0-1.el5 gitco-xen3.4.2 1.4 M xen x86_64 3.4.2-2.el5 gitco-xen3.4.2 10 M xen-devel x86_64 3.4.2-2.el5 gitco-xen3.4.2 259 k xen-libs x86_64 3.4.2-2.el5 gitco-xen3.4.2 166 k Installing for dependencies: fuse x86_64 2.7.4-8.el5 base 83 k fuse-libs x86_64 2.7.4-8.el5 base 71 k glusterfs-client x86_64 2.0.8-1.el5 gitco-xen3.4.2 9.1 k glusterfs-common x86_64 2.0.8-1.el5 gitco-xen3.4.2 975 k libibverbs x86_64 1.1.2-4.el5 base 44 k libvirt-client x86_64 0.7.0-6.el5 gitco-xen3.4.2 1.8 M openib noarch 1.4.1-3.el5 base 20 k qemu-img x86_64 0.10.5-1.el5 gitco-xen3.4.2 88 k xz-libs x86_64 4.999.9-0.1.beta.el5 gitco-xen3.4.2 94 k Transaction Summary ========================================================================================== Install 9 Package(s) Update 10 Package(s) Remove 0 Package(s) Total download size: 31 M Is this ok [y/N]:
念のためXenとgrub.confを確認。
$ ls -l /boot/xen.gz-3.4.2 -rw-r--r-- 1 root root 546295 11月 12 05:18 /boot/xen.gz-3.4.2 $ cat /etc/grub.conf | grep -v ^# default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-164.6.1.el5xen) root (hd0,0) kernel /xen.gz-3.4.2 module /vmlinuz-2.6.18-164.6.1.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-164.6.1.el5xen.img title CentOS (2.6.18-164.6.1.el5) root (hd0,0) kernel /vmlinuz-2.6.18-164.6.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.18-164.6.1.el5.img
マシンリブート
$ sudo sync; sudo reboot
めでたく Xen3.4.2になりました。
# xm dmesg __ __ _____ _ _ ____ \ \/ /___ _ __ |___ /| || | |___ \ \ // _ \ '_ \ |_ \| || |_ __) | / \ __/ | | | ___) |__ _| / __/ /_/\_\___|_| |_| |____(_) |_|(_)_____| (XEN) Xen version 3.4.2 (root@gitco.tld) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) Wed Nov 11 21:16:28 CET 2009
3.3.x系からの変更履歴はこんなところ。
http://www.xen.org/download/index_3.4.1.html
- Device passthrough improvements, with particular emphasis on support for client devices (further support is available as part of the XCI project).
- RAS features: cpu and memory offlining
- Power management: improved frequency/voltage controls and deep-sleep support. Scheduler and timers optimised for peak power savings.
- Support for the Viridian (Hyper-V) enlightenment interface
- Many other changes in both x86 and IA64 port
Hyper-VのイメージをそのままXenで動かすことが可能というところが面白そう。することはないと思うけど。
あとRASなるものが。意味がよくわかんね。
http://www.virtualization.info/jp/2009/06/xen34hyper-v20090601-5.html
RAS - Reliability(信頼性) - Availability(可用性) - Serviceability(保守性)
Xen 3.4は、システムの不具合を回避および検知し、システム障害を切り離すことで最大限のアップタイムを実現し、システム障害を管理者に通知してハードウェア/ソフトウェアを適切に保守する多数の機能を用意している。これらのサービスを組み合わせることで、障害対応およびバックアップ機能を内蔵した堅牢なXenハイパーバイザーが実現する。
VMwareESXiのネットワークカード対応
VMwareのHCLをみればいい話なんだけど、ドライバ名がわかっているとわかりやすいのでメモ。
まずVMwareESXiのドライバモジュールの一覧。
- VMwareESXi3.5 (/mod以下)
~ # cd cd /mod /mod # ls 3c90x.o deltadisk ipmi_devintf.o nfsclient shaper DAC960.o e100.o ipmi_msghandler.o procfs tcpip aacraid_esx30.o e1000.o ipmi_si_drv.o qla2300_707_vmw.o tg3.o adp94xx.o ehci-hcd.o ips.o qla4010.o unm_nic.o ahci.o etherswitch iscsi_mod.o qla4022.o usb-ohci.o aic79xx.o forcedeth.o ixgbe.o random.o usb-storage.o aic7xxx.o fsaux lpfc_740.o s2io.o usb-uhci.o ata_piix.o hid.o lvmdriver sata_nv.o usb.o bnx2.o hpcru.o megaraid2.o sata_promise.o vfat bnx2x.o ide.o megaraid_sas.o sata_sil.o vmfs2 cciss.o igb.o migration sata_svw.o vmfs3 dell ioat.o mptscsi_2xx.o sata_vsc.o vmklinux
- VMwareESXi4 (/usr/lib/vmware/vmkmod以下)
~ # cd /usr/lib/vmware/vmkmod /usr/lib/vmware/vmkmod # ls AMDIommu hpsa.o nx_nic.o usbnet.o aacraid.o hub pata_amd.o vfat adp94xx.o igb.o pata_atiixp.o vmci ahci.o ipfix pata_cmd64x.o vmfs2 aic79xx.o ipmi_devintf.o pata_hpt3x2n.o vmfs3 ata_piix.o ipmi_msghandler.o pata_pdc2027x.o vmkibft bnx2.o ipmi_si_drv.o pata_serverworks.o vmklinux.o bnx2x.o ips.o pata_sil680.o vmkstatelogger cbt iscsi_linux.o procfs vmw_psp_fixed cciss.o iscsi_trans qla2xxx.o vmw_psp_mru cdc_ether.o iscsi_vmk qla4xxx.o vmw_psp_rr cdp ixgbe.o random.o vmw_satp_alua dell libata.o s2io.o vmw_satp_alua_cx deltadisk lpfc820.o sata_nv.o vmw_satp_cx dm lvmdriver sata_promise.o vmw_satp_default_aa dvfilter mask_path_plugin sata_sil.o vmw_satp_default_ap dvsdev megaraid2.o sata_svw.o vmw_satp_eql e1000.o megaraid_mbox.o shaper vmw_satp_eva e1000e.o megaraid_sas.o tcpip2 vmw_satp_inv ehci-hcd.o migrate tcpip2v6 vmw_satp_local enic.o mp_plugin_example tg3.o vmw_satp_lsi etherswitch mptsas.o tpm_tis.o vmw_satp_msa filedriver mptspi.o usb-ohci.o vmw_satp_svc fnic.o multiextent usb-storage.o vmw_satp_symm forcedeth.o nfsclient usb-uhci.o vprobe hid.o nmp usb.o vtd
- VMwareESXi5 (/usr/lib/vmware/vmkmod以下)
/usr/lib/vmware/vmkmod # ls AMDIommu hbr_filter pata_atiixp vmkapei aacraid heartbeat pata_cmd64x vmkibft adp94xx hid pata_hpt3x2n vmklinux_9 ahci hpsa pata_pdc2027x vmklinux_9_2_0_0 aic79xx igb pata_serverworks vmkplexer applesmc ipfix pata_sil680 vmkstatelogger ata_piix ipmi_devintf pata_via vmw_psp_fixed be2net ipmi_msghandler procfs vmw_psp_lib bnx2 ipmi_si_drv pvfs vmw_psp_mru bnx2i ips qla2xxx vmw_psp_rr bnx2x iscsi_linux qla4xxx vmw_satp_alua cbrc_filter iscsi_trans r8168 vmw_satp_alua_cx cbt iscsi_vmk r8169 vmw_satp_cx cciss iso9660 random vmw_satp_default_aa cdc_ether ixgbe s2io vmw_satp_default_ap cdp libata sata_nv vmw_satp_eql cnic libfc sata_promise vmw_satp_eva cnic_register libfcoe sata_sil vmw_satp_inv dell lpfc820 sata_svw vmw_satp_lib_cx deltadisk lvmdriver shaper vmw_satp_local dm mask_path_plugin sky2 vmw_satp_lsi dvfilter megaraid2 svmmirror vmw_satp_msa dvsdev megaraid_mbox tcpip3 vmw_satp_svc e1000 megaraid_sas tg3 vmw_satp_symm e1000e migrate tpm_tis vmw_vaaip_cx ehci-hcd mpt2sas usb vmw_vaaip_emc enic mptsas usb-ohci vmw_vaaip_eql esxfw mptspi usb-storage vmw_vaaip_hds etherswitch multiextent usb-uhci vmw_vaaip_lhn fcoe netsched usbnet vmw_vaaip_mask fence_overlay nfsclient vaai_filter vmw_vaaip_netapp filedriver nmp vfat vmw_vaaip_symm fnic nx_nic vmci vprobe forcedeth pata_amd vmfs3
VMwareESXiの場合、すべてのドライバが一緒のディレクトリに入っているのでどれがネットワークカードのドライバなのかよくわかりません。
CentOS の /lib/modules/`uname -r`/kernel/drivers/ にある モジュールと比較して同じ名前のものを出してみました。
- VMwareESXi3.5
bnx2 (Broadcom) bnx2x (Broadcom) e1000 (Intel) e1000e (Intel) enic (Cisco) forcedeth (nVidia) igb (Intel) ixgbe (Intel) s2io (Neterion) tg3 (Broadcom)
- VMwareESXi4
bnx2 (Broadcom) bnx2x (Broadcom) e100 (Intel) e1000 (Intel) forcedeth (nVidia) igb (Intel) ixgbe (Intel) s2io (Neterion) tg3 (Broadcom)
- VMwareESXi5
bnx2 (Broadcom) bnx2x (Broadcom) e100 (Intel) e1000 (Intel) forcedeth (nVidia) igb (Intel) ixgbe (Intel) r8168 (Realtek) r8169 (Realtek) s2io (Neterion) sky2 (Marvell) tg3 (Broadcom)
やっぱり対応ドライバは少ないですね。IntelやBroadcomが多い中、nVidiaのforcedthが何故か対応しているのが気になります。forcedthをオンボードNICにしているマザーボードならESXiもうごくかもしれないです。*1
追記: esxi5でrealtek対応してるっぽいね。
Xen/KVMで使えるオープンソースの管理コンソール Enomalism を使ってみた
Enomalism というの Xen/KVMで使える管理コンソールがあるそうなのでインストールしてみた。
- ダウンロードはsourceforgeから
http://sourceforge.net/project/showfiles.php?group_id=164855&package_id=186866
- インストールガイドは本家で
http://src.enomaly.com/wiki/Documentation/InstallationGuide
インストール
CentOS5.3にインストールします。インストールしてあるpythonは2.4なので2.4のenomalismをダウンロードします。
# rpm -aq | grep ^python-2. python-2.4.3-24.el5 ]# ls enomalism2-2.2.3.noarch.PY2.4.rpm enomalism2-2.2.3.noarch.PY2.4.rpm
インストールするにいくつか必要なアプリケーションが必要。yumで不足分をインストールします。
# rpm -ivh enomalism2-2.2.3.noarch.PY2.4.rpm 警告: enomalism2-2.2.3.noarch.PY2.4.rpm: ヘッダ V3 DSA signature: NOKEY, key ID d585bd8a エラー: 依存性の欠如: autoconf は Enomalism2-2.2-r70.noarch に必要とされています automake は Enomalism2-2.2-r70.noarch に必要とされています cyrus-sasl-devel は Enomalism2-2.2-r70.noarch に必要とされています gnutls-devel は Enomalism2-2.2-r70.noarch に必要とされています libxml2-devel は Enomalism2-2.2-r70.noarch に必要とされています mysql は Enomalism2-2.2-r70.noarch に必要とされています mysql-devel は Enomalism2-2.2-r70.noarch に必要とされています mysql-server は Enomalism2-2.2-r70.noarch に必要とされています python-devel は Enomalism2-2.2-r70.noarch に必要とされています xen-devel は Enomalism2-2.2-r70.noarch に必要とされています # yum install autoconf automake cyrus-sasl-devel.x86_64 gnutls-devel.x86_64 libxml2-devel.x86_64 mysql.x86_64 mysql-server.x86_64 xen-devel.x86_64 python-devel.x86_64
enomalism をインストール。すごい勢いでpythonの開発環境をそろえてくれます。
# rpm -ivh enomalism2-2.2.3.noarch.PY2.4.rpm 警告: enomalism2-2.2.3.noarch.PY2.4.rpm: ヘッダ V3 DSA signature: NOKEY, key ID d585bd8a 準備中... ########################################### [100%] 1:Enomalism2 ########################################### [100%] Downloading http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c8-py2.4.egg Processing setuptools-0.6c8-py2.4.egg creating /usr/lib/python2.4/site-packages/setuptools-0.6c8-py2.4.egg Extracting setuptools-0.6c8-py2.4.egg to /usr/lib/python2.4/site-packages Adding setuptools 0.6c8 to easy-install.pth file Installing easy_install script to /usr/bin Installing easy_install-2.4 script to /usr/bin Installed /usr/lib/python2.4/site-packages/setuptools-0.6c8-py2.4.egg Processing dependencies for setuptools==0.6c8 Finished processing dependencies for setuptools==0.6c8 Searching for uuid Reading http://pypi.pyt ..... ..... Repo dir: /opt/enomalism2/repo Storage target dir: file:///xen Rewriting config template.... epitaph.cfg created
mysqlの起動とDatabaseの作成。当たり前だけどmysqlのrootパスワードやenomalismのユーザとパスワードはここの環境にあわせてください。
# /etc/init.d/mysqld start # chkconfig mysqld on # mysqladmin password <rootpassword> # cd /opt/enomalism2 # scripts/init-db.sh This script will create the defaul enomalism db and user/pass Usage: init-db.sh <mysql root password> <new enomalism user> <new enomalism password> # scripts/init-db.sh <mysql root password> enomalism enomalism Creating enomalism2 database... Database created.
configファイルをコピーして必要な部分を修正。*1
# cd opt/enomalism2 # cp -p ${HOSTNAME}.cfg config/ # vim config/${HOSTNAME}.cfg ~~ sqlobject.dburi="mysql://enomalism:enomalism@localhost:3306/enomalism2"
普段からXenを使っている人は既に設定済みと思いますが、いちおうVNCでアクセスできるように修正。
# grep vnc_listen /etc/libvirt/qemu.conf vnc_listen = "0.0.0.0" # grep vnc-listen /etc/xen/xend-config.sxp #(vnc-listen '127.0.0.1') (vnc-listen '0.0.0.0')
enomalism を起動
# /etc/init.d/enomalism2.sh start Starting enomalism2 Xen networking detected. Virtual Bridge already configured, good to go!
enomalism にアクセスしてログイン。初期のユーザとパスワードは admin/password
http://server:8080
感想
- ケバケバしいUIはアメリカンな感じがして個人的には嫌いじゃないです。
- 使った感じは悪くないのですが、ユーザパスワードが生で書いてあるんだけど。。。これまずいでしょ。
# mysql -uroot -p mysql> use enomalism2; mysql> select * from tg_user; +----+-----------+--------------------+--------------+----------+---------------------+---------------+ | id | user_name | email_address | display_name | password | created | child_name | +----+-----------+--------------------+--------------+----------+---------------------+---------------+ | 1 | admin | nobody@localhost | admin | password | 2009-06-24 08:05:09 | EnomalismUser | +----+-----------+--------------------+--------------+----------+---------------------+---------------+
- WebからVNCで接続するところは同じくWebInterfaceのOracleVMっぽい。
- Domain-0のIPがXenのNATのIPが振られてしまったので、VNCがめんどくさい。面倒なので直接DBに書いてあるDomain-0のIPを変更してしまった。
mysql> select ip_addr from machine where id=1; +---------------+ | ip_addr | +---------------+ | 192.168.122.1 | +---------------+ 1 row in set (0.00 sec) mysql> update machine set ip_addr="192.168.1.4" where id=1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select ip_addr from machine where id=1; +-------------+ | ip_addr | +-------------+ | 192.168.1.4 | +-------------+ 1 row in set (0.00 sec)
kernel-xen をupdateしたらxendが起動しなくなっちゃった。
http://d.hatena.ne.jp/dharry/20090607/1244333541 の続き。
kernel-xen をupdateしたらxendが起動しなくなっちゃった。/var/log/xen/xend.logはこんなかんじ。
[2009-06-24 07:00:27 4463] INFO (SrvDaemon:331) Xend Daemon started [2009-06-24 07:00:27 4463] INFO (SrvDaemon:335) Xend changeset: unavailable. [2009-06-24 07:00:27 4338] INFO (SrvDaemon:226) Xend stopped due to signal 15. [2009-06-24 07:00:27 4463] ERROR (SrvDaemon:347) Exception starting xend ((13, 'Permission denied'))
よくよく考えれば、CentOSのリポジトリのxenではなくhttp://www.gitco.de/linux/x86_64/centos/5のxenを使っているわけだから、それようにgrub.confを直さないと。
/etc/grub.confを修正。
title CentOS (2.6.18-128.1.14.el5xen) root (hd0,0) # kernel /xen.gz-2.6.18-128.1.14.el5 kernel /xen.gz-3.3.1 module /vmlinuz-2.6.18-128.1.14.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-128.1.14.el5xen.img
仮想マシン管理コンソールのConVirtを使ってみた
ConVirtという仮想マシン管理コンソールをインストールしてみて使ってみました。*1
インストールはすこぶる簡単。CentOSの場合はyumするだけでいいです。
http://www.convirture.com/wiki/index.php?title=Installation
# cd /etc/yum.repos.d/ # wget --no-cache http://www.convirture.com/repos/definitions/rhel/5.x/convirt.repo # sudo yum install convirt ========================================================================================== Package Arch Version Repository Size ========================================================================================== Installing: convirt noarch 1.0-1.fedora convirt 1.9 M Installing for dependencies: python-crypto x86_64 2.0.1-13.1.el5.kb.1 convirt-dep 194 k python-paramiko noarch 1.7.4-1.el5 convirt-dep 998 k socat x86_64 1.6.0.1-1.el5.rf convirt-dep 354 k Transaction Summary ==========================================================================================
起動するとこんな感じ
# sudo convirt
snapshotがあったり(これはxm saveなのかな)、templateが使えたり便利な感じです。しかしディスクイメージで仮想マシンをインストールしている場合はCPUやMEMの値が表示されているのですが、デバイス指定でインストールした仮想マシンの場合は表示がN/Aだったりするので、まだまだ開発途中なのかな、と思ったりもしました。
*1:昔はXenManと呼ばれていたそうです