XenServer上で Vyatta を動かしていると
INIT: Id "T0" respawning too fast: disabled for 5 miutes
なんてメッセージが頻繁に仮想マシンのコンソールに吐き出されます。これは、XenServerで動かしている Vyatta にttyS0 が存在しないのにも関わらず、標準で ttyS0 のコンソールに関する設定が入っているためです。
なので
http://www.vyatta.org/forum/viewtopic.php?p=2559#2559
を参考に、Vyatta の設定モードから該当の設定を消してやります。
$ configure
# delete system console device ttyS0
# commit
# save
これで OK :-)
どうやら Trac の Plugin を使えば、Trac でも Subversion じゃなくて、git との連携ができるらしい。
ベースとする Trac はインタアクトさんが配布されている
Trac-0.11.7.ja1
http://www.i-act.co.jp/project/products/products.html
で、git と連携するには
GitPlugin for Trac
http://trac-hacks.org/wiki/GitPlugin
をインストールします。肝心の git 自体は、EPELリポジトリからインストールしてあります。
CentOS5 の python は 2.4 なので、多分これだろうと
sudo easy_install http://github.com/hvr/trac-git-plugin/tarball/trac-0.11-py24
とする。うまくインストール出来た見たいなので
[trac]
# simple single-repository configuration
repository_dir = /var/git/test.git
repository_type = git
[git]
cached_repository = true
persistent_cache = true
shortrev_len = 6
git_bin = /usr/bin/git
[components]
tracext.git.* = enabled
tracopt.ticket.commit_updater.committicketreferencemacro = enabled
tracopt.ticket.commit_updater.committicketupdater = enabled
としてみたら、うまく動いたみたいだ。なお、対象となる git リポジトリは
# mkdir /var/git/
# git init --bare /var/git/test.git
# git --git-dir=/var/git/test.git update-server-info
# chown apache.apache -R /var/git/test.git
として作成済。このリポジトリに https 経由でアクセスさせたいと思って、よくある WebDAV経由での方法をやってみたら push するときに、下記のようにエラー。
$ git push origin master
Username:
Password:
error: Cannot access URL https://git.example.jp/git/test.git/, return code 22
fatal: git-http-push failed
正確なソースがよくわからないけど、どうやら WebDAV だと、push がサポートされないっぽい。最近は、git-http-backend を使うらしい。なので、こいつを使うことに。apache の設定に
SetEnv GIT_PROJECT_ROOT /var/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git /usr/bin/git-http-backend/
<Location /git/test.git>
AuthType Basic
AuthName "for developers"
AuthUserFile /var/www/htpasswd.git
Require valid-user
</Location>
みたいな設定を入れておく。
XenServer Tips 完全仮想化のLinux VMを準仮想化対応に変更する
http://techtarget.itmedia.co.jp/tt/news/1109/06/news01.html
という記事が出るよ!という予告があってからわくわくしてたら、CentOSの例がなかったので、しょんぼり。
きっと誰かやってるよね!と Google 先生に聞きながらやってみたら出来たので、以下に備忘録として書いとく。
ちなみに参考URLにも記載しましたが
PV enabling an HVM from VMware on XenServer (CentOS RedHat)
http://itproctology.blogspot.com/2009/06/pv-enable-hvm-on-xenserver.html
がすごく参考になりました
■ HVMなサーバでの作業
1. なにはともあれ、Xen対応kernelをインストールする
# yum install kernel-xen
2. PVドライバ付きの initrd を作成する。
# cd /boot
mkinitrd --omit-scsi-modules --with=xennet --with=xenblk --preload=xenblk initrd-$(uname -r)xen-no-scsi.img $(uname -r)xen
ただ、uname -r の結果と、インストールした kernel-xen のバージョンが違うこともあるので、違っていたら頑張って打ち込む。
# cd /boot
# mkinitrd --omit-scsi-modules --with=xennet --with=xenblk --preload=xenblk \
initrd-2.6.18-274.3.1.el5xen-no-scsi.img 2.6.18-274.3.1.el5xen
次に、/boot/grub/menu.lst にある kernel-xen のあたりを下記のように書き換える。
title CentOS (2.6.18-274.3.1.el5xen-no-scsi)
root (hd0,0)
kernel /vmlinuz-2.6.18-274.3.1.el5xen ro root=/dev/VolGroup00/LogVol00 console=xvc0
initrd /initrd-2.6.18-274.3.1.el5xen-no-scsi.img
CentOS5.6 だと、/etc/inittab に
co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav
がもともと記載されているので、コンソール周りでのこれ以上の対応は不要だと思います。
もちろん、このセクションの kernel で boot するように
default=0
あたりを適当に書き換える必要があります。
で、ここでのありがちなミスが "modules" を "initrd" に書き換え忘れ。忘れてると、あとで
VFS: Cannot open root device "VolGroup00/LogVol00" or unknown-block(0,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
とか言って、起動してくれません。
■ XenServerで、PV化を実施する。
次に、VMのパラメータを変更していきます。このあたりは、先日の vyatta のインストール [2011-10-19-1]とほとんど一緒です。
以下は、すべて XenServer上で実施します(対象VM名を HVM2PV にしてあります)
# xe vm-list name-label=HVM2PV params=uuid
ここで得られるのが、vm の uuid です。でこれをもとに作業していきます。
a) boot policyのクリアおよび bootloaderの指定
# xe vm-param-set uuid=<uuid> HVM-boot-policy=
# xe vm-param-set uuid=<uuid> PV-bootloader=pygrub
b) 利用している HDDの vbd uuid を調べる
# xe vm-disk-list uuid=<vm uuid>
で調べた vbd の uuid を指定して bootable にします。
# xe vbd-param-set uuid=<vbd uuid> bootable=true
これで、準仮想化(PV)の VM として起動してくれます。例によって、ログインプロンプトが出たけどコンソールから入力が受け付けられないよ!ってなった場合には、XenCenterを再起動してください。
まぁミスったら、この逆で
# xe vbd-param-set uuid=<vbd uuid> bootable=false
# xe vm-param-set uuid=<uuid> HVM-boot-policy="BIOS order"
# xe vm-param-set uuid=<uuid> PV-bootloader=
にして、起動させ、xen kernel じゃない kernel を grub menu から選択してもらえれば、復旧できるかと思います。
あとは、xen-tools を入れれば、XenMotionも可能になります。ただ、最初に紹介した記事にもあるように、仮想マシンにCDを入れっぱなしの状態にすると、
too many bootable disks
云々と言われて起動しなくなるので、注意が必要です。
参考URL
- http://itproctology.blogspot.com/2009/06/pv-enable-hvm-on-xenserver.html
- http://forums.citrix.com/thread.jspa?threadID=266975
Vyatta は、ソフトウェアルータとして最近数年注目されています。仮想化の流行によって、その注目度も、さらに加速している気もしますが、XenServerで使ってるぜ!ってあんまり聞かない気がするので、インストール方法を書いときます。利用者が少なくてサポートが後手に...とかなっても悲しいので ;-p
http://www.vyatta.org あたりから
vyatta-livecd-virt_VC6.3-2011.07.21_i386.iso
を入手します。Vyatta 6.3 から、XenServer専用のテンプレート(xvaファイル)は提供されなくなって、すべてのこのISOイメージがベースとなってます
"CIFS ISO Library" あたりに入れておくといいでしょう。もしISO Libraryを 作ってないなら、XenCenterをインストールしている Windowsの1ディレクトリを CIFS ISO Library として登録してしまうと、お手軽で楽。
ともあれ、まず LiveCD で Vyatta を立ち上げます。XenCenterから
1. "New VM" で、VM Template として "Other install media" を指定する。
2. "Install from ISO library or DVD drive" で上記 isoイメージを指定(*1)
3. 1vCPU & Memory 512MB & HDD 4GB あたりで VMを作成(VM名は VC63あたりで)
で、しばらく待つとVMが立ち上がってくるので、Console からログインします。初期ID/Passは、ともに "vyatta"になってます。
で、このままだと普通に LiveCD で Vyatta が立ち上がっただけなので、インストールを開始します。そのまま "install-system"と type してください。
vyatta@vyatta:~$ install-system
でここからちょっと表示と改行タイミングがあってないので、リターンキー3回押したあとに、"Yes"と入力してリターンを押してください。で、再度リターンキーを押すと、インストールが開始されるのが、見えるはずです。
なにをやったかというと
Would you like to continues? (Yes/No) [Yes]: <- リターン1回目
Partition (Auto/Union/Parted/Skip) [Auto]: <- リターン2回目
Install the image on? [sda]: <- リターン3回目
Continue? (Yes/No) [No]: Yes <- "Yes"の入力とリターン4回目
How big of a root partition should I create? (1000MB - 4295MB) [4295]MB: <- リターン5回目
を入力したことになります。
で、
Which one should I copy to sda? [/opt/vyatta/etc/config/config.boot]:
と聞かれるので、そのままリターンを押します。すると vyatta ユーザの初期パスワードを聞いてくるので、適当に付けてやります
Enter vyatta password: <- 類推しづらいパスワードを入力
Retype vyatta password: <- 確認のため、再度パスワードを入力
さらに
Which drive should GRUB modify the boot partition on? [sda]:
で、そのままリターンを押します。すると、paravirtual で動作させるかどうか聞いてきますので、Yes と答えます。
conversion to PV domU? [No]: Yes <- "Yes"の入力とリターン
これでインストールは完了です。次に XenTools を導入します。一旦、VMをshutdownしましょう
vyatta@vyatta:~$ shutdown
Proceed with shutdown? [confirm] <- リターンを入力
shutdown が確認できたら、LiveCD を Eject して VMをスタートさせます。
VMが起動してきたら、ID : vyatta で、先ほど設定したパスワードと共にログインします。また、VM の DVD Drive 1 には xs-tools.iso を指定しておきます。
あとは、下記を実行(debパッケージのバージョンは、導入している XenServerのバージョンによって異なります)
$ sudo su -
# mount /dev/cdrom /mnt
# dpkg -i /mnt/Linux/xe-guest-utilities_5.6.100-651_i386.deb
# umount /mnt
# shutdown
これで、Xen Tools の導入が完了です。が、まだ終わりません。この状態だと、完全仮想化で動くので、パフォーマンスもよくないですし、XenMotion もできません。このため、このVMを準仮想化として動作させるように XenServer 側で設定していきます。
まず、XenServer(ホスト側)にログインし、対象のVMの uuid を調べます。
# xe vm-list name-label=VC63
次に、PV で起動するようにブート関連のパラメータ設定を変更していきます。<uuid> には、上記コマンドで調べたVM の uuid を指定します。長いですが、数文字打ち込んで "Tab" キーを押せば補完入力も可能です。
# xe vm-param-set uuid=<uuid> HVM-boot-policy=
# xe vm-param-set uuid=<uuid> PV-bootloader=pygrub
次に、boot させるHDDの属性を変更します。まず最初に
# xe vbd-list vm-name-label=VC63
で、VMにつながっている HDD をチェックします。今回の例だと、device が hda と表示されているはずです。これを bootable=true にします。
# xe vbd-param-set uuid=<uuid> bootable=true
ここで指定する uuid は、vdi-uuid *ではない* ことに注意してください。vbd の uuidです。
ここまでくればあと1歩。これで reboot すれば、準仮想化として動作するはずです。が、ログインプロンプトまで順調に表示されるものの、入力ができない状態に陥るかと思います。
理由はよくわかりませんが、慌てずに一旦 XenCenter を終了させ、再度 XenCenter を起動させてみてください。今度は普通につながるはずです。
あとはよく使う Firewall のルールを入れ、/config/config.boot から "interface ethernet"を削除してからこのVMをテンプレート化してしまえば、仮想ルータを作り放題です :-)
参考: http://www.vyatta.org/getting-started/how-to-install
XenServer Configuration Limits
https://support.citrix.com/servlet/KbServlet/download/28909-102-661481/XenServer-6.0-Configuration-Limits.pdf
XenServer 6.0 系ですが、制限事項などがまとまってます。
Twitter で書きたいことがさくっと書けちゃうので、そっちでガス抜きされちゃって、Blogの更新しなくなって、もう2年も経つんですね。びっくり。
ただ、あとで振り返る時の閲覧性が、Evernote と組み合わせても、イマイチなので、ぼちぼち気がついた時にでも、こっちにも書く予定...
IPv4/IPv6 meter |
思ったより安い……時もある、Amazon |