CentOS5.0のXenで8個よりも多くの仮想サーバを起動する

仮想サーバを新しく作成して起動したら、他の仮想サーバが一切ネットワークにつながらなくなった。仮想サーバを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

ちゃんと起動して、ネットワークも問題なく動いた。