Xen on Debian GNU/Linux 5.0 with NFS root dom0
出典: 2502.net
目次 |
概要
Debian GNU/Linux 5.0 (lenny) amd64 で diskless boot + NFS root な Xen dom0 環境を作ってみたメモ。
以下の事ができるようになった。
- Xen dom0 環境 の diskless boot
- Xen の live migration
- フツーの手順での Debian package の upgrade (各サーバで apt-get update && apt-get upgrade するだけでちゃんと更新される)
必要なハードウェア
- NFSサーバ 1台
- DHCPサーバ 1台
- NFSサーバと兼用でも可
- Xen dom0 のサーバ n台 (好きなだけ)
- PXE boot 可能なネットワークインターフェイスが1つ必要
- 更にもう1つネットワークインターフェイスが1つ必要(こっちはPXE bootのROMが載ってなくても大丈夫だと思う)
- これらが接続できるスイッチとかケーブルとか
今時のPCサーバなら、ほとんどがPXE boot可能なEthernetポートを2つ以上載せてると思う。
もし追加でNICを買うなら、テキトーにIntelのヤツを買っておけばきっと大丈夫。
構築
まず、PXEを使ってnetbootできるようにする環境を作る。
DHCP
sudo apt-get install dhcp3-server
dhcpd.confに、以下の設定を適当なところに追加しておく。
filename "pxelinux.0"; next-server 192.168.1.2; # tftpサーバのIP address
- 事情により、DHCPサーバだけはetchのdhcp3-serverを使っているが、ISCのdhcpdなら大体どのバージョンでも同じ設定でいけると思う。知らんけど。
- DHCP/bootpでは、MAC addressでIP addressを固定していない。それは、pxelinuxの設定に書いてある(後述)。各サーバに対する個別の設定は、なるべく集中させたかったので。
TFTP
(追記中)
NFS
NFSサーバ設定
NFSサーバのIPアドレスは固定、 192.168.1.23 とする。
/etc/exports
/export/xen 192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async,no_root_squash) /export/nfsroot 192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async,no_root_squash) /home 192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async,no_root_squash) /boot 192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async,no_root_squash)
NFSv4使ったら、NFS rootなマシン(今回のdom0になるマシン)が起動できなかった。色々やったんだけど解決できず。まあそのうち使えるようになるだろう。
NFSサーバの冗長化は今後の課題。
NFSクライアント(dom0側)設定
dom0 の /etc/fstab は以下のようにした。
/dev/nfs / nfs defaults,tcp,nfsvers=3,intr,nolock,auto 0 0 tmpfs /tmp tmpfs rw,size=128M 0 0 tmpfs /var/run tmpfs rw,size=128M,mode=755 0 0 tmpfs /var/state tmpfs rw,size=128M,mode=755 0 0 tmpfs /var/lock tmpfs rw,size=128M 0 0 tmpfs /var/tmp tmpfs rw,size=128M 0 0 192.168.1.23:/home /home nfs defaults,tcp,nfsvers=3,intr,nolock,auto 0 0 192.168.1.23:/export/xen /export/xen nfs defaults,tcp,nfsvers=3,intr,nolock,auto 0 0 192.168.1.23:/boot /domu-boot nfs ro,tcp,nfsvers=3,intr,nolock,auto 0 0 /dev/sda1 none swap sw 0 0
/var とかは適当でいいと思う。
swapは、ローカルにSATA SSDが接続されている機種だったのでそれを使うことにした。
(追記中)
運用
kernelの更新
- NFSサーバのkernel更新
- NFSサーバ上で apt-get update && apt-get upgrade して再起動
- dom0のkernel更新
- dom0上で apt-get update && apt-get upgrade して再起動
- domUのkernel更新
- NFSサーバ上でapt-get update && apt-get upgrade して再起動 (つまりNFSサーバの/bootのkernelとinitrdを使うことになってる)
