VLANや死活監視系のためにネットワークインターフェイスが5個とか、多い時で10個以上あるCentOS(RHEL系)でservice network restart
とかやると物凄く時間がかかりますよね。
大体1個あたり2秒はかかっていて、ちょっと我慢出来なかったので、時短してみました。
遅い原因は、全てのインターフェイスでarpingしてIPアドレスの重複チェックをしていることです。
/etc/sysconfig/network-scripts/ifup-eth
の次の部分です。
if ! /sbin/arping -q -c 2 -w 3 -D -I ${REALDEVICE} ${ipaddr[$idx]} ; then
net_log $"Error, some other host already uses address ${ipaddr[$idx]}."
exit 1
fi
arpingのオプションの関係する部分は次のとおりです。
-
-c 2
はARPを打つ回数で、この場合は2回 -
-w 3
はARPのタイムアウト秒数で、この場合は3秒 -
-D
はIPアドレスの重複チェック
IPアドレスの重複チェックはこんなに入念にやらなくて良い、という場合には次のようにします。
if ! /sbin/arping -q -c 1 -D -I ${REALDEVICE} ${ipaddr[$idx]} ; then
そもそもIPアドレスの重複チェックが不要な場合は、ifブロックそのものを削除してもよいでしょうし、ifブロックを残したい場合には-c 0
を指定すればARPは打たれません。
if ! /sbin/arping -q -c 0 -D -I ${REALDEVICE} ${ipaddr[$idx]} ; then