起動エラーとなっているサービスを確認して、エラーサービスを無くそうと思う。
■本日の目標
・CentOS7のサービスで起動に失敗しているサービスを無くす■主な作業環境
・HW:Raspberry Pi 3 Model B・OS:CentOS Linux release 7.3.1611 (Core)
■起動失敗サービスの確認
・systemctlのステータスを確認すると、3件ほど起動に失敗しているようだ。$ systemctl status ● WSTD-RPI3 State: degraded Jobs: 0 queued Failed: 3 units (以下、略)
続いて、失敗した3件のサービスを確認する。
$ systemctl | grep failed ● kdump.service loaded failed failed Crash recovery kernel arming ● network.service loaded failed failed LSB: Bring up/down networking ● postfix.service loaded failed failed Postfix Mail Transport Agent
■kdumpサービスの対策
・kdumpとは、カーネルパニックが起きたときに原因特定のためのdumpファイルを保存してくれるサービスだそうだ。
では、起動失敗の原因を調べてみる。
まずはサービスの起動結果を見る。
$ systemctl status kdump.service ● kdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since 木 1970-01-01 09:00:21 JST; 47 years 3 months ago Process: 368 ExecStart=/usr/bin/kdumpctl start (code=exited, status=1/FAILURE) Main PID: 368 (code=exited, status=1/FAILURE) 1月 01 09:00:18 WSTD-RPI3 systemd[1]: Starting Crash recovery kernel arming... 1月 01 09:00:21 WSTD-RPI3 kdumpctl[368]: Kdump is not supported on this kernel 1月 01 09:00:21 WSTD-RPI3 kdumpctl[368]: Starting kdump: [FAILED] 1月 01 09:00:21 WSTD-RPI3 systemd[1]: kdump.service: main process exited, code=exited, status=1/FAILURE 1月 01 09:00:21 WSTD-RPI3 systemd[1]: Failed to start Crash recovery kernel arming. 1月 01 09:00:21 WSTD-RPI3 systemd[1]: Unit kdump.service entered failed state. 1月 01 09:00:21 WSTD-RPI3 systemd[1]: kdump.service failed.
ログの2行目にこのカーネルではサポートされていないと書かれている。
・・・なんとかやりようがあるんだろうけど、今回は無効化してしまう。
$ systemctl disable kdump Removed symlink /etc/systemd/system/multi-user.target.wants/kdump.service.
■Postfixサービスの対策
・Postfixはsendmailに代わるCentOS7の標準MTA(メール転送エージェント)。今後やりたいことがあるので正常起動だけでも確認したい。
まずはサービスの起動結果を見る。
$ systemctl status postfix.service ● postfix.service - Postfix Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since 木 1970-01-01 09:00:20 JST; 47 years 3 months ago 1月 01 09:00:18 WSTD-RPI3 systemd[1]: Starting Postfix Mail Transport Agent... 1月 01 09:00:18 WSTD-RPI3 aliasesdb[366]: /usr/sbin/postconf: fatal: parameter inet_interfaces: no local interface found for ::1 1月 01 09:00:19 WSTD-RPI3 postfix/sendmail[615]: fatal: parameter inet_interfaces: no local interface found for ::1 1月 01 09:00:19 WSTD-RPI3 aliasesdb[366]: newaliases: fatal: parameter inet_interfaces: no local interface found for ::1 1月 01 09:00:19 WSTD-RPI3 postfix[646]: fatal: parameter inet_interfaces: no local interface found for ::1 1月 01 09:00:20 WSTD-RPI3 systemd[1]: postfix.service: control process exited, code=exited status=1 1月 01 09:00:20 WSTD-RPI3 systemd[1]: Failed to start Postfix Mail Transport Agent. 1月 01 09:00:20 WSTD-RPI3 systemd[1]: Unit postfix.service entered failed state. 1月 01 09:00:20 WSTD-RPI3 systemd[1]: postfix.service failed.
うーむ・・・「::1」のオンパレード。
おそらく先日無効化したIPv6に関するエラーだろう。
「『::1』のインタフェースが見つからん」と言っているので、どこかに固有設定があると思われる。
いろいろGrepして辿り着いたのがhostsファイルだった。
$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
この2行目の「::1」の部分をコメントアウトする。(viコマンドで)
$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
それでは起動してみよう。
$ systemctl start postfix.service $ systemctl status postfix.service ● postfix.service - Postfix Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled) Active: active (running) since 月 2017-05-01 15:17:57 JST; 1s ago Process: 1039 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS) Process: 1036 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS) Process: 1032 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS) Main PID: 1111 (master) CGroup: /system.slice/postfix.service tq1111 /usr/libexec/postfix/master -w tq1112 pickup -l -t unix -u mq1113 qmgr -l -t unix -u 5月 01 15:17:54 WSTD-RPI3 systemd[1]: Starting Postfix Mail Transport Agent... 5月 01 15:17:57 WSTD-RPI3 postfix/master[1111]: daemon started -- version 2.10.1, configuration /etc/postfix 5月 01 15:17:57 WSTD-RPI3 systemd[1]: Started Postfix Mail Transport Agent.
復旧成功!
■networkの対策
・最後はnetworkサービス。これは読んで字の如くのことをしてくれるサービスだが・・・なぜ失敗しているのだろうか?
これもサービスの起動結果を見る。
$ systemctl status network.service ● network.service - LSB: Bring up/down networking Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled) Active: failed (Result: exit-code) since 木 1970-01-01 09:00:18 JST; 47 years 3 months ago Docs: man:systemd-sysv-generator(8) 1月 01 09:00:18 WSTD-RPI3 systemd[1]: Starting LSB: Bring up/down networking... 1月 01 09:00:18 WSTD-RPI3 systemd[1]: network.service: control process exited, code=exited status=6 1月 01 09:00:18 WSTD-RPI3 systemd[1]: Failed to start LSB: Bring up/down networking. 1月 01 09:00:18 WSTD-RPI3 systemd[1]: Unit network.service entered failed state. 1月 01 09:00:18 WSTD-RPI3 systemd[1]: network.service failed.
インタフェースの上げ下げに失敗しているのかな・・・?
調べていて行き着いた先が海外のフォーラムだった。
どうやらRaspberry Piが以前から抱えている問題のようで同様の事象があった模様。
回避策としては「/etc/sysconfig/network」の空ファイルを作成するだけ。
では、やってみよう。
$ cat /etc/sysconfig/network cat: /etc/sysconfig/network: そのようなファイルやディレクトリはありません $ touch /etc/sysconfig/network $ systemctl restart network $ systemctl status network ● network.service - LSB: Bring up/down networking Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled) Active: active (exited) since 月 2017-05-01 15:57:01 JST; 1min 21s ago Docs: man:systemd-sysv-generator(8) Process: 754 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS) 5月 01 15:56:57 WSTD-RPI3 systemd[1]: Starting LSB: Bring up/down networking... 5月 01 15:56:59 WSTD-RPI3 network[754]: ループバックインターフェイスを呼び込み中 [ OK ] 5月 01 15:57:01 WSTD-RPI3 network[754]: インターフェース eth0 を活性化中: 接続が正常にアクティベートされました (D-Bus アクティブパス:/org/freedesktop/N…onnection/1) 5月 01 15:57:01 WSTD-RPI3 network[754]: [ OK ] 5月 01 15:57:01 WSTD-RPI3 systemd[1]: Started LSB: Bring up/down networking.
起動成功!
ただ・・・元々、外部アクセスに問題があったわけではなかったし、
どんな問題を抱えていたのかわからないというのが本当のところ・・・。
network.serviceの起動エラーの回避策は色々見つかったけど、環境によって対応内容はそれぞれ異なるようだ。
「NetworkManager-wait-online.serviceを自動起動にする」とか、
他にも2~3個試してみたけど、どれもダメで、結局辿り着いたのが↑の方法だった。
■結果
・起動失敗したサービスがなくなってスッキリ!$ systemctl status ● WSTD-RPI3 State: running Jobs: 0 queued Failed: 0 units (以下、略)