labunix's blog

labunixのラボUnix

NFS+Xenのライブマイグレーションを試す

■NFSv4の導入
 2つの仮想XenのホストOSに入れる。

$ sudo apt-get install -y nfs-kernel-server

$ sudo nmap -sT localhost | grep ^111
111/tcp open  rpcbind

$ mkdir ~/nfs
$ echo '/home/labunix/nfs 192.168.152.0/24(rw,sync,fsid=0,crossmnt,no_root_squash,no_subtree_check)' | sudo tee -a /etc/exports

$ sudo /etc/init.d/nfs-kernel-server restart
$ netstat -an | grep 2049
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN     
tcp6       0      0 :::2049                 :::*                    LISTEN     
udp        0      0 0.0.0.0:2049            0.0.0.0:*                          
udp6       0      0 :::2049                 :::*           

■NFSv4なので本来ならば以下のようにすべきですが、今回はスルーします。

 NFSv4 + Kerberos で セキュリティとユーザーマッピングを解決 
 http://masahir0y.blogspot.jp/2012/12/nfsv4-kerberos.html

■2つのXenではnfsクライアントの設定を行う。

$ sudo apt-get install -y nfs-client 

■それぞれマウントし、マウント出来たらfstabに追記。

$ test -d /media/nfs || sudo mkdir /media/nfs
$ sudo mount -t nfs4 192.168.152.1:/ /media/nfs

$ echo '192.168.152.1:/ /media/nfs nfs4 hard,intr 0 0' | sudo tee -a /etc/fstab
192.168.152.1:/ /media/nfs nfs4 hard,intr 0 0

$ sudo umount /media/nfs 
$ sudo mount -a

■とりあえず使うだけなら、「xend-relocation-server yes」にする。

$ grep "#(xend-relocation-server" /etc/xen/xend-config.sxp 
#(xend-relocation-server no)
#(xend-relocation-server-ssl-key-file   xmlrpc.key)
#(xend-relocation-server-ssl-cert-file  xmlrpc.crt)

$ sudo sed -i s/"#(xend-relocation-server no)"/"(xend-relocation-server yes)"/ /etc/xen/xend-config.sxp 

■デフォルトでFWも無い方はご注意を。
 他にも要件はあるにせよ、どこからの命令でもマイグレートしてしまいます。
 最後までIP書いて$で終わりを指定する方がベターです。

$ grep "hosts-" /etc/xen/xend-config.sxp 
#  (xend-relocation-hosts-allow '^localhost$ ^.*\\.example\\.org$')
#(xend-relocation-hosts-allow '')

$ grep "^(.*hosts" /etc/xen/xend-config.sxp 
(xend-relocation-hosts-allow '^localhost$ ^192\\.168\\.152\\.')

$ sudo /etc/init.d/xen restart
$ netstat -an | grep 800[02]
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8002            0.0.0.0:*               LISTEN  

■nfsv4内にライブマイグレーション用の仮想マシンを作成
 root権限はnobodyになるので、直接は作成できない。
 mountにもroot権限が要るのでdebian固有の問題かな。

$ sudo xen-create-image --hostname livevm-wheezy \
  --ip 192.168.152.85 --netmask 255.255.255.0 --gateway 192.168.152.2 \
  --passwd --dir /media/nfs/

■コンソールだと意味が無いので、ip設定をしてping疎通でもとりながら、
 ライブマイグレーションします。

$ sudo xm create livevm-wheezy.cfg -c

$ sudo xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   880     2     r-----    415.5
livevm-wheezy                                4   128     1     -b----      7.0

$ sudo xm migrate -l 4 xen-debian
$ ssh xen-debian
$ sudo xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   624     2     r-----    337.6
livevm-wheezy                               10   128     1     -b----      0.2
vmvm0                                        9   128     1     -b----     17.3
vmvm2                                        8   128     1     -b----     26.9

■まあ、あっという間でした。