仮想サーバを新しく作成して起動したら、他の仮想サーバが一切ネットワークにつながらなくなった。仮想サーバを1台シャットダウンしたら復旧した。Domain-Uの上限数に達してしまったらしい。
XenではDomain-Uをループバックデバイスとして認識するので、Domain-Uを1個起動するごとにループバックデバイスを1個消費する。CentOS5.0ではループバックデバイスは下記のようにデフォルトで8個であり、これが仮想サーバの上限になっている。
[root@ml115 ~]# ls /dev/loop* /dev/loop0 /dev/loop2 /dev/loop4 /dev/loop6 /dev/loop1 /dev/loop3 /dev/loop5 /dev/loop7
ループバックデバイスの数はkernelモジュールのパラメータとして設定する。方法は起動時パラメータとして/etc/grub.confに書いたり、起動時スクリプトのどこかにmodprobeコマンドを呼び出したりと複数の方法があるが、ここでは/etc/modprobe.confに書き込む。
[root@ml115 ~]# vi /etc/modprobe.conf ... options loop max_loop=16 ...
設定したらDomain-0を再起動して、もう一度ループバックデバイスの数を調べる。以下のとおりちゃんと16個に増えていた。
[root@ml115 ~]# ls /dev/loop* /dev/loop0 /dev/loop11 /dev/loop14 /dev/loop3 /dev/loop6 /dev/loop9 /dev/loop1 /dev/loop12 /dev/loop15 /dev/loop4 /dev/loop7 /dev/loop10 /dev/loop13 /dev/loop2 /dev/loop5 /dev/loop8
そこで9個目のDomain-Uを起動してみる。
[root@ml115 ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 1223 2 r----- 159.8 db1 1 255 1 -b---- 31.4 db2 2 255 1 -b---- 32.4 lvs1 3 255 1 -b---- 40.5 lvs2 4 255 1 -b---- 42.1 manager1 11 255 1 -b---- 21.6 ns1 10 255 1 -b---- 27.2 storage1 7 255 1 -b---- 41.1 www1 8 255 1 -b---- 42.2 www2 9 255 1 -b---- 46.9
ちゃんと起動して、ネットワークも問題なく動いた。