FreeBSDトラブル対策の記録


はじめに

このページでは、FreeBSDを安定稼動させるまでに、こまごまとした設定変更などを施した記録を、後々の自分の為と言う意味合いも込めて、状況と対策をメモして置きます。時として他の方のトラブル記録が凄く参考になったりするものです。

httpdが起動出来なくなった

ある日突然、httpdが止まってしまったらしく、ホームページにアクセス出来なくなりました。root権限から、「apachectl start」と入力しても、

/usr/local/sbin/apachectl start: httpd could not be started  ← と表示されます。こうなった場合は、エラーログを見るのが基本だと分かり、早速調べることに。

/var/log/httpd-error.log  ← こいつにApacheが出したエラーが記録されているハズ。エディタで開いて最終行を見たところ唖然。

[alert] mod_unique_id: unable to gethostbyname("www.sasapurin.com")

要するに自分の名前解決が出来ていないみたい。つい先日まで普通に使えていたのに何なんだぁ?という疑問もありますが、DNSなんて良く分からない物を使っている以上、自衛手段で対策を打つしかないと判断。そこでDNS絡みの問題と判断し、DNSを調べることに。私のサーバーは、ご覧のとおりdyndnsを使っているのですが、nslookupしても変なアドレスが返ってきて、これじゃぁ名前解決出来ないわなぁ..と納得。さてどうしたものでしょう。まだ自前のDNSサーバーを立てる程スキル有りません。色々調べ回った挙句、仕方ないのでhostsファイルに記述する事にしました。hostファイルは、/etc/hostにありますので、エディタで編集しちゃいましょう。

127.0.0.1    localhost.sasapurin.com localhost
192.168.1.80  www.sasapurin.com www

そしてroot権限からrebootすれば、あっさりと次からは自動的にhttpdが起動する様になりました。そのメッセージ表示は、

Local Package Initialization: apache.  ← 正常時は、こう表示されるのですが、、
Local Package Initialization:       ← Apacheを起動できなかった時はapahceとは表示されません。

一つ賢くなったような気がしました。

ネームサーバーがこけてる?

名前解決出来ない症状に陥りました。DNSはプロバイダのプライマリDNSを割り当てています。そういえばFreeBSDのネットワーク設定では、ネームサーバをひとつしか設定しなかったような記憶が。セカンダリDNSはどこで設定すんの?調べてみたら情報がありました。/etc/resolv.conf といファイルで記述するみたいです。Linux系のサイトからの情報なのでダメかなぁとも思ったのですが、試しにエディタで開いてみたら同じような記述が。早速ネームサーバの記述を追加することにしました。

domain sasapurin.com
# nameserver 127.0.0.1
nameserver 210.153.1.1
nameserver 210.153.1.9

どうやらこれで上手く回避出来たみたいです。WindowsパソコンはセカンダリDNSを設定していたから通常どおり使えていたので、凄く不安に思ったのですが、冷静に考えて分かってしまえば、なんてことない問題ですね。今はどちらも復旧しているみたいですから全然問題なく使えています。

午前3時になるとHDDからカラカラ音がする!

夜更かししていて、ふと気付いたら3時になるとFreeBSDのハードディスクが、勝手にカラカラ音する事に気付きました。どうやら毎晩3時ジャストになると動いている様です。いったいどういうことだろう?と思って調べてみました。何とか関係しそうな情報をFreeBSD QandAから発見。(FreeBSD QandA 586)。

そこから飛んだ先の情報によるとperiodic.confという定期実行ジョブが走っているものと推測できます。そこで早速/etc/periodic.confを探してみたのですが、/etc/には、periodicと言うディレクトリしかありません。仕方ないのでperiodicディレクトリにもぐりこんでみました。すると。daily monthly weeklyと言うディレクトリがあります。dailyに潜り込んでみたら、cleandiskとか、色々なファイルがあります。どうやらこれらのメンテナンス処理が自動的に走っているようです。

しかし、(FreeBSD QandA 586)の情報と少し違うなぁ..periodic.confはどこにあるんだ?色々と調べたら、periodic.confは、/etc/defaults/periodic.confという場所にありました。エディタで開いてみると、それらしき記述がビッシリと詰まっています。ここから不要な処理を取り除けば(#でコメントアウトすれば)良いんだろうな。

とりあえず納得できたので何も対策しないことにしました。periodic.confという定期実行ジョブは古いバージョンのFreeBSDに関する情報みたいですね。余裕が出来たらこの記述内容も探ってみて、自分の環境に合う様に設定を変更してみたいと思います。それまでは毎晩3時になったらFreeBSDにメンテナンス処理をしてもらいましょう。ご苦労様。

メールが溜まってきた

いつの間にやらYou have new mail! というメッセージが。ずっとほったらかしにしていたので、root宛のメールが溜まってしまいました。どうやら毎日の定期自動メンテナンスの結果や、ddclientによるDNSの更新ログなどなど。色々なシステム情報をメールとしてFreeBSDがroot宛に送ってきているようです。このままずっと放っておいたら、HDDを食いつぶす可能性があるので、関係ないメールは削除することにしました。さてどうやって削除したらよいものか..コマンド「d」で削除するということは分かったのですが...

ためしにやってみたところ、& d 1-10

これで1-10のメールが削除できるみたいです。こまめにチェックしておかないとダメだなと思ったりしています。やっぱり日ごろからのメンテが安定稼動に対して物を言いますね。でも取りあえずメールの削除の仕方は覚えたぞ。後はApacheのログも何とかしないといけないな。

/の空き容量が無くなった!

どうもおかしい。やたらとFreeBSDサーバのHDDアクセスランプが点滅している。不審に思ってtopコマンドでプロセスを見てみるとnamedが90%以上CPUリソースを食っている。なんだこりゃ?

どうも変だなぁと、dfコマンドでハードディスクの空き容量をチェックしたら、なんと/の空き容量が無くなってる。原因はこれか!しかし思い当たる節は無い。どうやってチェックしたら良いものか。とりあえずduコマンドで地道に容量の大きなファイルを探してみよう。

みつけた!bindの設定した時に、こんなファイル作った覚えないで。

/etc/named/named.run

googleしてみたら、bindのデバッグファイルの様だ。なんだか分からないけどシステム的に非常にマズイ状態っぽいので削除してみた(後になって中身をチェックしておけば良かったと後悔)。bindの再起動を行ったが、/etc/named/named.runファイルは生成されない。どうして出来たんだろう??謎だらけ。

一般ユーザーのパスワードを忘れちゃった!

しばらく使っていなかったユーザー名(kensuke)でログインしようとしたら、パスワードを忘れてしまったみたいで、ログインできなくなってしまいました。こりゃマズイどうしよう。そう思って調べてみたら、解決方法を見つけることが出来ました。rootもしくはsuからなら簡単にパスワードを設定しなおすことが出来ます。rootのパスワードを忘れた場合は厄介ですが、一般ユーザーのパスワード設定し直しなら楽勝ですな!

login: sasapurin
Password: xxxxx
$ su
Password: yyyyy

www# passwd kensuke
Changing local password for kensuke.
New password: zzzzz
Retype new password: zzzzz
passwd: updating the database...
passwd: done

意外と簡単に出来たので助かりました。root権限はやっぱり強いですね!

スーパーユーザーのパスワードを忘れた場合は!!

root(su)のパスワードを忘れた場合は、システムを再起動してからシングルユーザモードで起動しなおせば行けるらしいです。これを知らなかった頃は、FreeBSDを再インストールしていました(苦笑 もちろんshutdownコマンドが使えないので、強制リセットしかありませんね。FreeBSDの場合はキーボードリセットが使えるか(^。^)

さて、システムを再起動すると、ブートローダが起動されて、10秒間の待ちがあります。そこでスペースキー等を押せばシングルユーザーモードで起動させる為のコマンドを入力することが出来るそうです。表示されるメッセージと投入するコマンドを下に記します。

>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/boot/loader
boot:
 ・
 ・(省略)
 ・
Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [kernel] in 9 seconds... ←ここで時間内にスペースキーを押す!

Type '?' for a list of commands, 'help' for more detailed help.
ok boot -s  ←ここでシングルユーザモードで起動するコマンドを投入!

Enter full pathname of shell or RETURN for /bin/sh: ←そのままEnterを押す!

# mount -a  ←ディレクトリをマウントするコマンドを投入!

# passwd
Changing local password for root.
New password: xxxxx
Retype new password: xxxxx
passwd: updating the database...
passwd: done
# exit