More from: サーバー

boot時のfsckの回避方法

Linuxサーバの再起動が必要になるのがほぼ確実なんだけど、1200日以上無停止で稼働しているサーバなので、再起動時にfsckが走ることになる。
そうなると起動が終わるまで長時間サービスを停めることになるので出来ればfsckを走らせたくない。
調べてみると起動時のfsckの実行を抑止する方法があった。
一つ目はfstabの6つ目のパラメータを”0″にする方法で、これだとヴォリュームラベル/デヴァイス単位で設定出来る。
二つ目はshutdownコマンドのオプションで”-f”(fastboot)を指定する方法で、このオプションを付けると”/”にfastbootというファイルを作成し、次回のboot時にbootプロセスがfsckをスキップする(ことを期待する)。
今回は全てのディスクのfsckをスキップさせたいので、”shutdown -f -r”を試してみようかな?
問題は短時間とは言え提供中のサービスを止めるのでタイミングをどうするかだなぁ(汗)。

←クリックしてくれると嬉しいです。

squidが重い原因

先日から導入したsquidが重いということで、運用でなんとかカバーしているが、重たい(と言われる)原因を探ってみた。
サーバーのCPU負荷やメモリ使用量を調べてみると、これが実に軽くてサーバーそのものの処理能力が不足しているわけでは無さそう。
となるとこの手のソフトウェアでよくある”同時接続数が足りない”のが原因では無いだろうか?
一体どれだけの同時接続数が許容されているのか?ということでググって見ると、デフォルトでは1024らしい。
その接続数は/etc/squid/squid.confで指定できるらしいことも判明。
ところが、その数値を増やすだけでなく、OSが同時にオープンできるファイル数(キャッシュ用)も増やさなくてはならないらしい。
とにかく、この対策をしてみて経過を見ることにしよう。

←クリックしてくれると嬉しいです。

サーバーのトラブルか?

今日の午後からこのブログへのアクセスが時折失敗する。
エラーコードは毎回502(Bad GateWay)で、数分から十数分で解消するんだけど、なんかおかしい。
サーバー会社の方からのアナウンスは無いけど、気付いていないだけかな?

←クリックしてくれると嬉しいです。

dovecotの自殺・・・

先週に引き続き昨日もpop3デーモン(dovecot)が死んでいた。
maillogには
”Time just moved backwards by xx seconds. This might cause a lot of problems, so I’ll just kill myself now.”
というのが残っていて、時刻が巻き戻ったために自殺したとのこと。
たしかにntpdで時刻合わせをやっているけど、こんなことで一々死なれていては実運用上困ってしまう。
時刻が巻き戻るとトラブルの元になるのは解からないでも無いけどさぁ・・・
解決策としてはntpdで時刻を一気に合わせるのではなく、徐々に合わせるようにするか、時刻が巻き戻った後で生死を確認してdovecotを再起動するスクリプトを組むかのどちらか。
時刻が巻き戻るのは今のところ日曜日の早朝で、アクセスしてくる人が殆どいない時間帯だから、この時間帯に再起動のスクリプトを動かせば良さそうだな。

それにしても昨年までは時刻が大きく(20-30秒も)巻き戻ることは無かったんだけど、年明けから急に巻き戻るようになったのは何故だろう???

←クリックしてくれると嬉しいです。

起動はしたものの・・・

再起動でなかなかOSが起動し無かった遠隔地のWindowsサーバーはなんとか起動した。
なんと再起動時のCHKDSKに1時間以上もかかってようやく起動したんだけど、リモートデスクトップで入ろうとしてユーザー名とパスワードを入れると一瞬デスクトップの背景らしき画面は出るものの、直後にRDPクライアントが終了してしまう。
どうもログオン直後にログオフさせられている模様で、現地のコンソールでもログオンを試して貰ったが、こちらも同様に即座にログオフされてしまってログオンできない。
それでもユーザーが必要なサービスが動いていれば良いと思ってクライアントPCを操作して貰ったがサービスも起動していない模様。
うーむ、これだと単に電力を消費するだけの箱だなぁ、、、一度、こちらの手元に送って貰ってチェックしないと駄目かなぁ?

←クリックしてくれると嬉しいです。

「メールが届かない」?たしかに(汗)

ユーザーから特定の人からのメールが届いていないんだけどなにか判らないか?という問い合わせが来た。
そのユーザーが言うにはこちらから出したメールに返信の形で出したが、ユーザーのアドレスに届いていないということだ。
相手は海外の人で使っているメールアドレス等を教えてもらってサーバーのログを漁ってみた。
そうしたら一台のサーバーのログにそのアドレスが残っていて、それを見るとMTAがメールを破棄していた(汗)。
何故かというと、送信者の使っているメールアドレスと同じドメイン(無料で取得できるアドレスを提供している)から大量のSPAMが来たので、MTAのアクセス制御でドメイン全体をはじくようにしていたため。
送信者はちゃんとした企業の人らしいんだけど、そんなドメインを使っていたとはねぇ・・・一応そのアドレスだけは通過するようにしたけど、アドレスを替えて欲しいなぁ・・・

←クリックしてくれると嬉しいです。

複数ファイル内の特定文字列の一括変換

Linuxで稼働させているサーバに置いてある特定のファイル群の内容を一部書き換える必要が生じた。
書き換える内容は特定の文字列を別の文字列に変換するだけなんだけど、なにせ書き換えが必要なファイルが数百個もある。
手作業で編集するには多すぎるので、なんか自動で出来ないかな?と思い調べてみると同じことを考える人はいるもので、ヒントどころか回答そのものがすぐに見つかった。
手順は一行のコマンド(実際にはパイプで接続した二つのコマンド)で非常に単純。
$grep -l ‘置換対象の文字列’ 置換対象のファイル群 | xargs sed -i.bak -e ‘s/置換対象の文字列/置換後の文字列/g’
要は書き換えが必要なファイルをgrepで探し出し、それをパイプでsedに渡すんだけど、その際にファイル名をパラメータで渡すためにxargsコマンドを使用している。
実際にやってみるとあっというまに数百個のファイルの編集が完了、いやぁ助かったなぁ(汗)。

←クリックしてくれると嬉しいです。

ユーザーパスワードをシェルスクリプトで設定

サーバー上のユーザーアカウントを別サーバーに移行する必要が生じた。
サーバー自体をまるごとコピーすれば簡単なんだけど、OSのバージョンを新しくしたサーバーへの移行なのでそれが出来ない。
つまり新しいサーバー上でユーザーアカウントを新たに作成しなければならない。
いや、/etc/passwdや/etc/shadowや/etc/groupの必要部分をコピーする方法もあるんだけど、OSのバージョンがかなり違ってちょっと怖いので今回はやらないつもり(汗)

ユーザーの作成そのものは以前書いた「ユーザー設定の移行(備忘録)」の手順で行えば良いのだけど、この記事を書いた時はパスワードの設定をどうすれば簡略化出来るか判らなかった。
その後調べていたら、
# echo [パスワード] | passwd –stdin [ユーザ名]
とすれば、コマンドラインから一発でパスワードを入力できることが判ったので、これを移行するユーザー分だけスクリプトに書いて実行すれば楽に出来るなぁ。

←クリックしてくれると嬉しいです。

大量のメールを削除・・・

今はもう使っていないメールアドレス宛にも沢山のメールが来ている。
メールサーバーに容量制限が無いので普段はほうっておいているが、いつまでもそのままというわけにもいかないのでたまには掃除をしている。
今回は掃除の間隔が長かったので溜まっていたメールは6千通を超えていた。
普段なら「nPop」というフリーソフトでまとめて削除しているんだけど、あまりに大量のメールを相手にするとほぼ確実に動作中にエラーで止まってしまう。
6千通もあるとサーバーからヘッダを取得する途中でコケてしまうので、今回はtelnetを使ってメールサーバーに直接接続し、削除コマンドを手動で入力してメールを削除することにした。
操作は単純で、コマンドプロンプト辺り(私はTera Termを使用)を立ち上げて、メールサーバーの110番ポートに接続。
>telnet メールサーバー名もしくはIPアドレス 110(ポート番号)
これでメールサーバーのpopプロセスが応答してくれたらUSERコマンドとPASSコマンドでユーザー名(アカウント名)とパスワードを入力する。
後は延々と削除コマンド(dele メッセージ番号)を入力すれば良いんだけど、これを手動で入力するのは手間なので、私の場合はエクセルで適当なシートを作り、最初のフィールド(A1)にdeleを入力。
一つ右隣りのフィールド(B1)には”1″を入力し、その下のフィールド(B2)は「=B1+1」を入れておく。
A2フィールドにあらかじめA1の内容をコピーしておき、A2とB2をまとめて選択してコピーし、それを必要数分(今回は5,000ほど)のフィールドに貼り付ければ準備はOK。
あとはこのエクセルのシートをスペース区切りのテキストファイルに保存し、保存したテキストファイルをエディターで開いて中身をクリップボードにコピーし、telnetで接続中の画面で貼り付ければ一気にコマンドの入力が出来る。
入力が終われば一呼吸待ってからQUITコマンドを入力して接続を切るとサーバーから削除されると言う寸法。
今回およそ5,000通分の削除コマンドの文字列を作ったので、次回以降はこれから必要数分を切り出せば良くなり楽が出来るな(汗)。

←クリックしてくれると嬉しいです。

サーバーが落ちてる?

”落ちてる”と言ってもその辺の道端に落ちているとかの話では無くて、気付いたら電源が切れていたこと。
昨日の午前中に現場に設置してあるサーバーがpingを返して来ないのが判明し、部下を向かわせたところ電源が切れていたと報告があり、そのまま電源SWを押すと何事も無く起動したとのこと。
起動後にログを見ると前日の深夜に何故かシャットダウンされていたので、推測だが正月休みに出て来て深夜まで仕事をしていた人が帰り際に電源SWを押した可能性が高い。
これはユーザーが使用する前に発覚したので実務には影響は出なかったが、今日は別の現場から特定のアプリケーションが使えないとの連絡があった。
そのアプリケーションはサーバー内のディレクトリをネットワークドライブとして接続した状態でないと動作しないので、接続が正常かどうかチェックして貰ったところ、ネットワークドライブにアクセス出来ないとのこと。
たまたま私は別の現場に行っていたので、その後の対応を部下に任せたが、報告によるとサーバーが応答して来ないので現場に行くと電源が切れていたとのこと。
こちらも電源の再投入で復旧したが、こちらはログを見ると一カ月近く前から動作していなかったようだ。
しかもシャットダウンプロセスが走った形跡が無いので、ハードウェア上の問題でいきなり電源が落ちた可能性が高い。
古いハードで怪しい部分はいろいろあるので、予備を用意しておく必要がありそうだなぁ、、、

←クリックしてくれると嬉しいです。