logrotateの関係でディスク周りで失敗した時の話

問題発生

日に日にDisk残容量が現象していき何が大きいのかわからない状態になっていました。
普通容量を食っているファイルを検索かけて削除or転送を行うのですが、今回duコマンドでも見つけることができませんでした・・・
私がいつも打つのは

# du -sh /* | grep G | sort -n 

と実行し、/配下でGB単位で容量を食ってるディレクトリを調べ、出てきたものからディレクトリを掘り下げて調査していました。
さくらVPSの1GBの契約のサーバだったので/配下は約17GBしかありません。
muninで容量が減り始めたのはチェックしていたのですが、「ログのせいだろうな」って軽く考えてました。
アクセスログやらphpのログをgzipで固め容量を空けようとしたのですがそれでは足らず・・・
そしてついに残容量3GBを切りNagiosからはずっとアラートメールが飛び続け・・・
アワワ ヽ(´Д`;≡;´Д`)丿 アワワ

Twitterでエンジニアに助けを求めたところ
「du -sh /*だとドットで始まる隠しファイルが計算されないので、隠しファイルが原因かもしれません。du -sch /{.[!.]*,*}で実行するとドットファイルも計算されます。」
「あとはls -al /proc/*/fd/* | grep deletedで実際は削除されたのにプロセスが掴んでいるファイルがわかるのでプロセスの再起動をするか、もしくは権限で見れていないファイルがあるのかもしれないのでrootで実行するとかでしょうか」
と意見を頂きました。
実際ドットから始まるファイルがたくさんあるなどの理由ではなく後者が原因でした。

原因その1

プロセスがファイルを掴んだままで容量が減少しているというのが最終的な理由でした。

 # ls -al /proc/*/fd/* | grep deleted

を実行した時にプロセスがファイルを掴んでいることは確認したのですが、上記コマンドで表示されたファイルの容量が小さかったので違うだろうなと考えていました。
ここで大きな勘違いをしていたようです。

原因その2

memcachedのログを-vvオプションを利用し取得していました。ログのローテートを行ってなかったので、後からローテートの設定を実装しました。

/var/log/memcached.log {
daily
compress
rotate 4
}
ローテートの仕方は間違えていないと思うのですが、memcachedがローテートされたファイルにログを出し続けていたようです。
memcachedmemcached_log.1というファイルを掴んでいたのは確認しました

対応を優先してしまって詳細な原因などをログに残せなかったので本当にこれが原因だったかわかりませんが、memcachedのログをローテートしてはいけないようです。
それかちゃんとしたローテート方法があるんだと思います。

対応

プログラマーの許可の元、サービスをメンテナンスに切り替えサーバの再起動を実施しました。
そしたら先程まで残容量が3GBしかなかったのに急に残容量が13GBになりました・・・
その時のmuninのグラフです。

ここまで急に落ちるとは・・・

ローテートは便利ですが、使い方を間違えるとこの様に大変な思いをしなければなりません。
結局は私の「技術不足」「経験不足」「判断ミス」が一番の問題でした。
たぶんこの記事の中にも間違ったことを言ってることがあるかもですが、痛いミスをしたのでログに残しておきます。

”うちの会社のサーバー監視方法がおかしいので改善を試みた”という記事を読んだ

きっかけははてブ

※本記事の内容は個人的に思ったことを書いているだけなので、これが正しいというわけではありません。

毎時のごとくはてブをチェックしているのですが、「うちの会社のサーバー監視方法がおかしいので改善を試みた」というwktkしてしまいそうなタイトルが上がってました。
ただし、中身を見たら恐ろしい内容でした。「監視ってなんだっけ?」って思ってしまう内容でした。

記事の内容から監視方法を引用します。

  • 15台くらいのwindowsサーバーに自PCからリモートデスクトップ接続する
  • 遠隔操作でイベントログやらHDD容量やらを目視チェックして全て台帳(紙媒体)に書き込む
  • 以上を全サーバーに行うと普通に毎朝1時間かかる。負荷がでかいので分散の為、若手を入れて10人くらいで順番にまわしている
  • 今後もサーバーが増える予定あり

追記に見事に21台に増えたということが書かれていました

自分はこの手順を見ておかしいと思いました。

私がおかしいと思ったこと

  • 台帳に書き込む
    • 紙媒体が悪いとは言いませんが、過去ログとして確認したいのであればmunin,cacti,zabbixなどいろんなOSSが存在します
    • Windowsサーバ用のツールもきっとあるでしょう。
  • この様な作業に10人も当ててるのが人件費の無駄
    • 1日1人でやっているのでしょうが、15台しかないのに1時間もかかるのはもったいないです。
    • 毎朝行なっているということは1日1回でしょうか?それは監視ではなく「管理」になると思います。
  • 監視なのにリアルタイム性がない
    • 例えば、この作業中に発生した障害であれば検知できますが、その他の時間は?
    • サービスが長時間落ちていて気づかないとユーザが離れて行きます
    • リアルタイム監視であればnagioszabbix,monなどツールがたくさんあります。
  • 記事の内容を読むと中の人は監視をする気がない
    • メールが送られてきても見ない」という意味が社会人としてどうかと思う
    • 「メールが垂れ流しになるから」→それは障害だらけか監視設定がおかしいかの2択

Twitterで50以上RTされた

なぜか記事をツイートしただけで50以上のRT、18のお気に入りをして頂きました。
私が書いた記事ではないんですがね・・・w
たぶんインフラクラスタの方がRTしてそっから拡散されてRTされたものと思います。

最後に

監視というのは365日24時間行なってやっと意味をなします。
自社で監視ができないというなら、監視を外注しましょう。
外注先にもよりますがベンチャーでも素晴らしい対応をしてくれるところもあります。
サービスをリリースするなら企業も個人も関係なく監視は必ず行いましょう

さくらVPSの新プランになって気づいた点

お久しぶりです、ヌキです。

まずは報告

学生から社会人へなりました。
数ヶ月は研修なので仕事らしい仕事はないですが、現場に出るために努力しようと思います。
そんな挨拶。

先日さくらVPSのスペック変更があり、2GBプランの初期手数料が無料キャンペーンということで1台試しに契約してみました。まだそんな触っていないのですが、変更されている部分をあげていきたいと思います。


比較対象として
・新プランのさくらVPS 2GBプラン
・旧プランのさくらVPS 1GBプラン(昨年の夏前に契約しいろいろいじっているサーバ)
で比較していますので異なる情報になっていることもありますのでご了承くださいませ。

デフォルトのSMTPサーバがsendmailからpostfixに変わっている

確か今まで(昨年の春〜夏)頃に契約した時はsendmailがインストールされており、自分でpostfixをインストールした記憶があります。今回はデフォルトでpostfixのようです。実際業務でsendmailガリガリ触っている人というのは珍しいと思います。sendmailは設定が難しくなかなか手を出す人がいないという話を聞き私もpostfixがほとんどです。qmailは昔1度コンパイルして利用した記憶がありますが、現在はpostfixを利用しています。

パッケージ管理yumのレポジトリがさくら専用レポジトリに変更されている

# cat /etc/yum.repos.d/CentOS-Base.repo
を実行してもらえればわかるのですが、今までレポジトリはmirrorで設定されており自分で指定するには手動で変更をしていました。今回からはベースが
baseurl=http://ftp.sakura.ad.jp
となっておりさくら専用のレポジトリを導入したようです。
さくらのニュースリリースを見ていないから気づいていない可能性がありますが、この様な気遣いはとてもありがたいと思います。レポジトリの安定性は保証されておりませんがね。どうなんでしょうかね?レポジトリサーバならそんなに問題が起きにくいと思うのですが、長期運用して様子を見たいと思います。実際構築時以外はレポジトリを利用しないのでいいのですが。

デフォルトでepelレポジトリが追加されている

# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Base.repo.orig CentOS-Debuginfo.repo CentOS-Media.repo epel-testing.repo epel.repo


これはCentOS6系からなのでしょうか?6系をVPSでしか触っていないので知らないのですが、epelが入っているおかげでmuninやnagiosなどdagレポジトリで追加して利用していたOSSなどもレポジトリの追加などせずに利用可能になりました。
remiレポジトリも欲しかったところですが、一つ増えただけでもかなり使い勝手が変わってくるかと思います。

kernelが2.6.32へバージョンアップ

kernelのバージョンを確認しました。


# uname -a
Linux hogehoge 2.6.32-220.7.1.el6.x86_64 #1 SMP Wed Mar 7 00:52:02 GMT 2012 x86_64 x86_64 x86_64 GNU/Linux

kernelが2.6.32にバージョンアップしていました。これはCentOSの6系になりバージョンアップしたものでさくらVPSのおかげというわけではありませんがね。変わった点ということで抜粋しました。

pythonが2.4系から2.6系へ

pythonのバージョンを調べました。

# python -V
Python 2.6.6

2.6.6に変わってますね。これもOSのバージョンアップのためだと思いますが、2.4で困っていたこともあるので2.6にバージョンアップしてとても助かります。

perlが5.8から5.10へ

# perl -v

This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi

これもOSのバージョンアップによるものだと思います。
5.8が5系のデフォルトのバージョンだったかは曖昧ですが、それでも新しいバージョンが入っています。

tmuxの使い方メモ

tmuxを使えると便利だということで調べてみた

先月のターミナルマルチプレクサ Advent Calendar 2011に参加させて頂き「screenでマルチディスプレイモードを利用する」という記事を書かせて頂きました。
私はscreenを少し触っていただけなのでscreenのネタを書いたのですが、みなさんは結構tmuxを利用されている方が多い様です。
私の現在のアルバイト先のCAXさんでも聞くと結構tmuxを利用している人が多かったです。(中にはscreenを利用されている方も多いですけどね)
screenも極めればかなり便利なのですが、tmuxは標準でいろいろな機能が付いていたりして便利です。
私は中でも縦分割をするという機能は便利だと思います。
最近のディスプレイは16:9と横長さんなので横分割しても縦に表示しても見たい部分がパッと見では消えてしまったりして不便だな〜って思っていました。
しかし縦分割なら横が狭いですが、24インチディスプレイなどで作業する場合はかなり広く利用できるので重宝すると思います。

今回はtmuxを利用するのにコマンドなど覚えていないのでメモ置き場として記事を書こうと思います。
(自分のブログって自分が使うことが多いので便利ですよねw)
参考にした記事はそれぞれ注釈を付けていこうと思います。

画面分割(ペイン分割)*1

  • 横分割

tmuxを実行した後に<">で横分割になります

  • 縦分割

tmuxを実行した後に<%>で縦分割になります。

  • 縦分割+横分割縦分割

tmuxを実行したのち<%>で縦に割り、右側のウィンドウで<">で横に分割して、右下のウィンドウで<%>で縦に分割したらこうなります

ペインを割ったはいいがやっぱり配置が嫌だという時はで配置を変更できます。お気に入りの配置になるまで実行して変えます。*2

3つに分割した場合は次の5つのパターンが選べます。


分割した画面の移動

画面を分割しても作業はひとつのペインで行うので他のペインに移動したい時はコマンドを実行して移動します。

  • ペインの移動*3

ペインの移動は<↑→↓←>で移動できます。十字キーを使えば直感的に移動も可能です。

  • マウスでペインの移動を可能にする*4

私のようなぺーぺーなエンジニアは他に覚えることがたくさんあってこうゆう細かいキーとか忘れやすいのでマウスで移動できると便利だったりします。
tmux初心者は時にマウスで移動できると助かるかもです。

tmuxでペインを複数分割した後に

$ tmux set-option mouse-select-pane on

を実行することでマウスでペイン間の移動ができるようになります。マウスだと目に見えて位置を選べるので選択ミスが起きづらくなります。
CUIユーザからすればマウスなんてダメだよって言われてしまいそうですが・・・

また

$ tmux set-option mode-mouse on
を実行することでマウスホイールで上下に画面をスクロールすることができます。

必ずマウスを利用してペイン選択やスクロールを行いたい場合はtmux.confに設定を書いておきましょう。
私は下記3行を追加しています

set -g mode-mouse on
set -g mouse-resize-pane on
set -g mouse-select-pane on

2行目の mouse-resize-paneというのはペインで分けた画面のサイズをマウスで変更することができるようになります。
ペインの分割は半分ずつなので好みでサイズ変更をマウスで行えます。
※ペインサイズ変更は結構負荷が高いので気をつけてください・・・


ペインで分割したものに同じコマンドを送る方法*5

tmuxを起動してペイン分割をした後に

$ tmux set-window-option synchronize-panes on

を実行します。これだけで分割したペインが連動されます。

運用中のサーバでpuppetが使えないとかそうゆう状況でもこれで複数台一気に設定ができるので便利ですね。
間違ってもapacheの再起動とかしちゃダメですよ・・・複数台のapacheが一気に落ちたら・・・ね?w


ちなみにputtyの背景になっているのは「アイドルレボリューション」の咲き乱れる悪の華2の報酬の[インテリタレント]ひかりちゃんです。
最終進化バージョンです。かわいいですよねw

memcachedを複数プロセスで起動する

環境

memcachedを複数起動する用途


実際業務でこの様なことをしたことがないので憶測になってしまいますが、memcachedを複数起動することでサービス毎のキャッシュをポート別に分けれるというのが良いのではないかと思います。
A〜Cまで別ドメインでサービス展開していてBのサイトのキャッシュ分が設定していたメモリから溢れてしまい設定変更をしたい場合でも他のサービスに影響がでないなどメリットはあります。
噂で聞いただけなので本当なのかはわかりませんが、複数サービスを一つのmemcachedで動かしていたら他のサービスのキャッシュを拾ってきてしまったなどがあるそうで、
ポート別にmemcachedを起動して利用すればその様なことも起こらなくなります。
ただ、デメリットとしては複数memcachedを起動することによりメモリの使用率が必然的に増えてしまいます。
またアプリケーションの設定もサービス毎に変更しなければならないので一手間かかります。

memcachedの起動スクリプトを見てみる

下記が起動スクリプトの一部です。

if [ -f /etc/sysconfig/memcached ];then
. /etc/sysconfig/memcached
fi

# Check that networking is up.
. /etc/sysconfig/network

if [ "$NETWORKING" = "no" ]
then
exit 0
fi

RETVAL=0
prog="memcached"
pidfile=${PIDFILE-/var/run/memcached/memcached.pid}
lockfile=${LOCKFILE-/var/lock/subsys/memcached}

水色の部分が異なれば複数起動できます。
今回は11211、11212、11213のポートで起動するmemcachedを作成します。
複数起動するために準備します

複数プロセスで起動する準備をする

# cp -p /var/run/memcached/memcached.pid /var/run/memcached/memcached_11212.pid
# cp -p /var/run/memcached/memcached.pid /var/run/memcached/memcached_11213.pid
# cp -p /etc/sysconfig/memcached /etc/sysconfig/memcached_11212
# cp -p /etc/sysconfig/memcached /etc/sysconfig/memcached_11213
# cp -p /etc/rc.d/init.d/memcached /etc/rc.d/init.d/memcached_11212
# cp -p /etc/rc.d/init.d/memcached /etc/rc.d/init.d/memcached_11213

/var/run/memcached/memcached.pidは変更する必要なし


pidは起動時のプロセスIDが入るだけなので変更する必要はありません。プロセス毎にpidが必要なので用意は必要です。複数プロセスを一つのpidファイルにまとめることはできないので。
ここで編集が必要なファイルは/etc/sysconfig/memcached_11212と/etc/sysconfig/memcached_11213になります。
この2つはポートを書き換えるだけなので簡単です。

/etc/sysconfig/memcached_11212のサンプル


下記に/etc/sysconfig/memcached_11212のサンプルを示します。
11213はPORTのところを変更するだけです。

PORT="11212"
USER="root"
MAXCONN="1024"
CACHESIZE="256"
OPTIONS="-vv 1>> /var/log/memcached_11212.log 2>> /var/log/memcached_11212.log"

PORTはデフォルトのポートとは異なるポートを指定します。今回は11212です
USERはrootにしてrootユーザで起動するようにします(ここはmemcachedでも大丈夫です)。
MACCONNは最大のコネクション数です。1024はデフォルト値です。yumで入るバージョンだと大量コネクションが発生するとmemcachedが再起動するとかしないとかmixiの大規模障害の時に話がありましたね。
1.4.6ではバグが修正されているそうです
CACHESIZEは一つのプロセスで保有できる最大のキャッシュサイズを指定します。32bitOSでは3GBまでしか指定できません。指定しても利用できないが正しい言い方ですかね。
メモリの確保についてはmemcachedのメモリ確保についてがわかりやすそうです
OPTIONSではmemcachedのログを取るようにしています。

ポート別の起動スクリプトを作成します


元々あった起動スクリプトにそれ様に作成したファイルを入れてあげるだけです

 # vim /etc/rc.d/init.d/memcached_11212

#! /bin/sh
. /etc/init.d/functions

if [ -f /etc/sysconfig/memcached_11212 ];then
. /etc/sysconfig/memcached_11212
fi

. /etc/sysconfig/network

if [ "$NETWORKING" = "no" ]
then
exit 0
fi

RETVAL=0
prog="memcached"
pidfile=${PIDFILE-/var/run/memcached/memcached_11212.pid}
lockfile=${LOCKFILE-/var/lock/subsys/memcached}

start () {
echo -n $"Starting $prog: "
# Ensure that /var/run/memcached has proper permissions
if [ "`stat -c %U /var/run/memcached`" != "$USER" ]; then
chown $USER /var/run/memcached
fi

daemon --pidfile ${pidfile} memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P ${pidfile} $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch ${lockfile}
}
stop () {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} /usr/bin/memcached
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f ${lockfile} ${pidfile}
fi
}

restart () {
stop
start
}

case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} memcached
RETVAL=$?
;;
restart|reload|force-reload)
restart
;;
condrestart|try-restart)
[ -f ${lockfile} ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart}"
RETVAL=2
;;
esac

exit $RETVAL

これで手順完了です

後は通常通り起動する


普通に起動スクリプトから起動します

# /etc/rc.d/init.d/memcached start
# /etc/rc.d/init.d/memcached_11212 start
# /etc/rc.d/init.d/memcached_11213 start

起動するとそれぞれのプロセスが起動していると思いますpsで起動しているか確認してみます

# ps auxfwww
root 2244 0.0 0.0 69016 856 ? Ssl 18:12 0:00 memcached -d -p 11211 -u root -m 256 -c 1024 -P /var/run/memcached/memcached.pid -vv
root 2199 0.0 0.0 69016 848 ? Ssl 18:12 0:00 memcached -d -p 11212 -u root -m 256 -c 1024 -P /var/run/memcached/memcached_11212.pid -vv
root 2226 0.0 0.0 69016 844 ? Ssl 18:12 0:00 memcached -d -p 11213 -u root -m 256 -c 1024 -P /var/run/memcached/memcached_11213.pid -vv

screenでマルチディスプレイモードを利用する

ターミナルマルチプレクサ Advent Calendar 2011というものに参加したので簡単なネタですがエントリーを書きたいと思います。

環境

  • さくらVPS 512M
  • CentOS release 5.7
  • Screen version 4.00.03

マルチディスプレイモード


screenのマルチディスプレイモードとは一言で言えばターミナル画面の共有ということです
ターミナル画面の共有がしたい時は人それぞれでしょうけど私は以下の項目の際に使えるのではないかなと思います

  • 新人研修などの時に新人の実行するコマンドなどを確認する
  • 障害対応中などの実行コマンドの確認を行う(確認してもらう人が横にいて実際に声をかけあって最終確認が必要になりますが)
  • コードのチェックなど。カーソルも共有できるのでカーソルを合わせて「ここがおかしい」など伝えるのが楽

とにかくコマンドやらコードやら不安要素がある時に利用することが多いのではないかなと思います。
前職で研修生に教える時は利用することもありました。本番環境では利用したことはないですね。

.screenrcの内容


今回は新人のeditnukiさんと先輩onukiさんという2人が登場します。
editnukiさんに~/.screenrcを作成させます

$ vi ~/.screen
multiuser on # マルチディスプレイモードのon/off
acladd onuki # マルチディスプレイモードで自分が作成するセッションに接続できるユーザ名の指定

その間に先輩のonukiさんはroot権限で下記作業を行います

screenにsuidを付けます ※suidとは

 # chown u+s /usr/bin/screen 
/var/run/screenに実行権限を与えます
 # chmod 755 /var/run/screen 
※実行権限を与えないと怒られます
 $ screen -S editnuki/session
Directory '/var/run/screen' must have mode 755.

マルチディスプレイモード実行方法


まず新人editnukiさんがscreenを実行します

 $ screen -S session

これでsessionというセッション名のscreenのを起動します。

先輩のonukiさんはこのセッションにアクセスします

 $ screen -x editnuki/session 

screen -x セッションを保持しているユーザ名/セッション名
で接続を行います。
マルチディスプレイモードを実行した場合は下図の様になります。

左側が先輩のonukiさんのターミナル画面で右側が後輩editnukiさんのターミナル画面になります。
セッションを作成した側の画面サイズも保持されるのでonukiさんの方ではeditnukiさんの画面サイズ分だけ利用されます。
ユーザもeditnukiさんになるので作業にroot権限が必要になったりする場合は要注意です。

次回はyoshikawさんの開発版GNU screenのlayoutを使ってみようについてです

グローバルIPとローカルIPをひとつのethにエイリアスで振り分けた

利用した環境

Ubuntuのネットワークの設定


単純にエイリアスをはることはifconfigコマンドでできますが再起動したら設定が消えてしまいます

一時的にエイリアス


設定する方法
今回はeth0とloのネットワークが存在しました。
eth0にはグローバルIPを設定しており、研究室内のローカル環境で通信したいのにわざわざ研究室から出て大学で管理しているGWを通って研究室のネットワークに戻ってくるという経路が増えてしまう状態になっていました。
私は困ることはないのですが、友人がローカル上で通信したいとのことだったのでIPをエイリアスで増やすことを考えました。
今回初めてエイリアスの設定をしたのでメモとしてこの記事を書こうかと思います。
eth1とか増やすと意味がわからなくなりそうなので(できるのか?)eth0:0に設定することにしました。
eth0にはグローバルIP、eth0:0にはローカルIPを振り分けます。

 ifconfig eth0:0 192.168.0.10 netmask 255.255.255.0 broadcast 192.168.0.255

これでローカルIPを追加しました
netstatで確認します。

# netstat -r
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ MSS Window irtt インタフェース
グローバルIP * 255.255.255.128 U 0 0 0 eth0
192.168.0.128 * 255.255.255.128 U 0 0 0 eth0
link-local * 255.255.0.0 U 0 0 0 eth0
default グローバルIPgw 0.0.0.0 UG 0 0 0 eth0

ifconfigでも確認をします

# ifconfig -a
eth0 Link encap:イーサネット ハードウェアアドレス 00:1e:4f:ce:d1:74
inetアドレス:グローバルIP ブロードキャスト:グローバル マスク:255.255.255.128
inet6アドレス: fe80::21e:4fff:fece:d174/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:4780 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:1252 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:716639 (716.6 KB) TXバイト:168894 (168.8 KB)
割り込み:16

eth0:0 Link encap:イーサネット ハードウェアアドレス 00:1e:4f:ce:d1:74
inetアドレス:192.168.0.10 ブロードキャスト:192.168.0.255 マスク:255.255.255.128
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
割り込み:16

lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
inet6アドレス: ::1/128 範囲:ホスト
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:14981 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:14981 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:2079097 (2.0 MB) TXバイト:2079097 (2.0 MB)

一時的に設定する分にはこれで十分ですが再起動すると設定が消えてしまいます。
念のため再起動してみましたが、見事に設定は消えましたw

再起動しても状態を残す


まず、上記のようにifconfigコマンドでネットワークを追加しておきます。
前述したとおりこのままだと再起動で設定が消えてしまうので設定を直接書き込みます。

Ubuntuの場合のネットワークの設定は

/etc/network/interfaces
に書かれています。
初期設定は

auto lo
iface lo inet loopback

となっておりeth0も設定がないのでeth0:0と両方書き込みます。

私が書いた設定は以下の通りになります

auto lo
iface lo inet loopback

auto eth0 #メインで利用するIPの設定
iface eth0 inet static
address 192.168.0.110 #ここはグローバルIPを設定しています
netmask 255.255.255.128
gateway 192.168.0.129 #グローバルIPに利用するGWを書きます
broadcast 192.168.0.255

auto eth0:0 #同じデバイスで違うIPを振る場合に書く内容
iface eth0:0 inet static
address 192.168.0.10
netmask 255.255.255.128
broadcast 192.168.0.255

この様に書いてネットワークを再起動します

 /etc/init.d/networking restart

これで設定は完了です。私はサーバを再起動しても設定が初期化されないか確認しましたが設定は初期化されませんでした。

CentOSの場合


基本的に再起動しても状態を残すと同じですが、Ubuntuとは設定ファイルが別になります。
下記の様に設定ファイルを/etc/sysconfig/network-scripts/配下に新規で作成します。

vi /etc/sysconfig/network-scripts/ifcfg-eth0:0

DEVICE=eth0:0
BOOTPROTO=none
ONBOOT=yes
NETWORK=192.168.0.255
NETMASK=255.255.255.128
IPADDR=192.168.0.10

この様に新規で設定ファイルを作成すれば再起動してもネットワークの設定は消えないです。