web-dev-qa-db-ja.com

再起動中にsystemdがハングするのはなぜですか?

10回のうち1回、再起動中にsystemdがハングします。理由がわかりません。問題を解決するために何をどこで見ればよいですか?私はsystemd v196を使用していますが、バージョン> 98にアップグレードすることはできません。後者は最近のカーネル(cgroupsのサポート付き)が必要であり、顧客の要件によって更新できないためです。この動作の理由を発見し、systemdが無条件にシステムを再起動するようにする合理的な方法はあるのでしょうか。

このリンクは役に立たないことに注意してください: http://freedesktop.org/wiki/Software/systemd/Debugging/#index2h1

あなたがそこで読むことができるように:

シャットダウンが終了しない

数分待っても通常の再起動または電源オフが完了しない場合、シャットダウンログを作成する上記の方法は役に立たず、他の方法を使用してログを取得する必要があります。ブートの問題のデバッグに役立つ2つのオプションは、シャットダウンの問題にも使用できます。

use a serial console
use a debug Shell - not only is it available from early boot, it also stays active until late shutdown.

私はシリアルコンソールを使用していますが、何らかの理由で、ethインターフェイスが起動したり起動したりしたときにログインすることもできます(再起動手順中に切断が発生した後)。

理由はわかりません。

# cat /etc/systemd/system/
basic.target.wants/                          getty.target.wants/                          multi-user.target.wants/                     sysinit.target.wants/                        
dbus-org.freedesktop.NetworkManager.service  local-fs-pre.target.wants/                   sockets.target.wants/                        syslog.service                               
display-manager.service                      local-fs.target.wants/                       swap.target

Swap.targetに注意してください。そこにはありますが、スワップパーティションはまったく使用しません。スワップをマスクしようとしましたが、ハングの問題が残っています。コンソールの最後の行は次のとおりです。

[OK] Stopped target shutdown.

編集:私が言ったように、私はethを介してssh経由で再ログインできます。

次に、2つのログを表示します。最初のログは再起動/ shutdwonがハングしたときに発生し、2番目のログは再起動が成功したときです。

ハングの場合、出力は常に次のようになります(完全なログ)。

[  OK  ] Stopped Network Time Service (one-shot ntpdate mode).
         Stopping Modem and VPN connections autoconnect...
         Stopping Login Service...
         Stopping LSB: Avahi mDNS/DNS-SD Daemon...
[  OK  ] Stopped Monitoring free system resources.
[  OK  ] Stopped Monitoring dropbear socket.
[  OK  ] Stopped Login Service.
[  OK  ] Stopped Modem and VPN c[  OK  ] Stopped Getty on tty1.
[  OK  ] Stopped Serial Getty on ttyO0.
[  OK  ] Unmounted /var/lib/opkg.
[  OK  ] Stopped Network Manager.
[  OK  ] Stopped LSB: Avahi mDNS/DNS-SD Daemon.
         Stopping D-Bus System Message Bus...
[  OK  ] Stopped target Remote File Systems.
[  OK  ] Stopped Suspend manager.
         Stopping X Server...
[  OK  ] Stopped X Server.
         Stopping System Logging Service...
[  OK  ] Stopped System Logging Service.
[   77.580000] g_ether gadget: using random self ethernet address
[   77.580000] g_ether gadget: using random Host ethernet address
[   77.590000] usb0: MAC 6e:0d:de:b0:33:4f
[   77.590000] usb0: Host MAC 62:7a:81:02:f3:ff
[   77.600000] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
[   77.600000] g_ether gadget: g_ether ready
[   77.610000] musb-hdrc musb-hdrc.0: MUSB HDRC Host driver
[   77.610000] musb-hdrc musb-hdrc.0: new USB bus registered, assigned bus number 2
[   77.620000] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[   77.630000] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   77.640000] usb usb2: Product: MUSB HDRC Host driver
[   77.640000] usb usb2: Manufacturer: Linux 2.6.37 musb-hcd
[   77.650000] usb usb2: SerialNumber: musb-hdrc.0
[   77.650000] hub 2-0:1.0: USB hub found
[   77.660000] hub 2-0:1.0: 1 port detected
[   77.690000] ADDRCONF(NETDEV_UP): usb0: link is not ready
[  OK  ] Stopped target Reboot.
[  OK  ] Stopped Reboot.
[  OK  ] Stopped target Unmount All Filesystems.
[  OK  ] Stopped target Shutdown.
[   78.330000] <46>systemd-journald[328]: Received SIGUSR1
<hang>

通常の再起動:

         Unmounting /var/lib/opkg...
[  OK  ] Stopped target Network.
         Stopping SSH Per-Connection Server...
[  OK  ] Stopped target Graphical Interface.
[  OK  ] Stopped target Multi-User.
         Stopping Monitoring free system resources...
         Stopping Monitoring dropbear socket...
         Stopping Network Time Service (one-shot ntpdate mode)...
[  OK  ] Stopped Network Time Service (one-shot ntpdate mode).
         Stopping Modem and VPN connections autoconnect...
         Stopping Login Service...
         Stopping LSB: Avahi mDNS/DNS-SD Daemon...
[  OK  ] Stopped Monitoring free system resources.
[  OK  ] Stopped Monitoring dropbear socket.
[  OK  ] Stopped Login Service.
[  OK  ] Unmounted /var/lib/opkg.
         Stopping Network Manager...
[  OK  ] Stopped Getty on tty1.
[  OK  ] Stopped Network Manager.
[  OK  ] Stopped Serial Getty on ttyO0.
[  OK  ] Stopped Suspend manager.
[  OK  ] Stopped LSB: Avahi mDNS/DNS-SD Daemon.
         Stopping D-Bus System Message Bus...
         Stopping X Server...
         Stopping Permit User Sessions...
[  OK  ] Stopped Permit User Sessions.
[  OK  ] Stopped target Remote File Systems.
[  OK  ] Stopped X Server.
[  OK  ] Stopped D-Bus System Message Bus.
         Stopping System Logging Service...
[  OK  ] Stopped System Logging Service.
[  OK  ] Stopped target Basic System.
[  OK  ] Stopped target Sockets.
[  OK  ] Closed dropbear.socket.
[  OK  ] Closed D-Bus System Message Bus Socket.
[  OK  ] Stopped target System Initialization.
         Stopping Import configuration from SD card...
[  OK  ] Stopped Import configuration from SD card.
         Stopping Load Kernel Modules...
         Stopping Apply Kernel Variables...
[  OK  ] Stopped Apply Kernel Variables.
[  OK  ] Stopped target Local File Systems.
         Unmounting /var...
         Unmounting /tmp...
[  OK  ] Closed Syslog Socket.
[  OK  ] Failed unmounting /var.
[  OK  ] Unmounted /tmp.
[  OK  ] Stopped Load Kernel Modules.
[  OK  ] Reached target Unmount All Filesystems.
[  OK  ] Stopped target Local File Systems (Pre).
         Stopping Remount Root and Kernel File Systems...
[  OK  ] Stopped Remount Root and Kernel File Systems.
[  OK  ] Reached target Shutdown.
[   52.340000] omap_wdt: Unexpected close, not stopping!
Sending SIGTERM to remaining processes...
[   52.490000] <46>systemd-journald[335]: Received SIGTERM
Sending SIGKILL to remaining processes...
Unmounting file systems.
Unmounting /sys/fs/Fuse/connections.
Unmounting /var.
All filesystems unmounted.
Deactivating swaps.
All swaps deactivated.

更新:

いくつかの調査とデバッグの後に、シャットダウンの中断の理由を発見しましたが、それでも解決できません。何らかの理由で、シャットダウンが完了する前にカスタムサービスの1つが開始されるため、シャットダウン手順がハングします。これはハングの1つのケースです。別の種類のハングは、シャットダウンが中断されないが、ある時点で停止する場合です。このため、すべての競合と他の起こり得るハングを一度に1つずつ解決する前に、ハードウェアウォッチドッグを無条件にアクティブ化したいと思います。 systemdを介してこれを行うために、RuntimeWatchdogSecとShutdownWatchdogSecを個別にまたは一緒に有効にしてテストしました。残念ながら、彼らは助けにはならなかった。ソースコードを見ると、systemdはループに入り、すべてのfsがアンマウントされ、他の種類のクリーンアップが実行されるのを待ってから、ウォッチドッグを実際に(ライブ状態にせずに)有効にします。

ハマった。 1.次のいずれかの方法を見つけることです。1。ウォッチドッグを無条件に有効にする無条件にシャットダウンが開始するポイントから開始2.検出そしてすべての対立を簡単な方法で解決します

最初のソリューションが推奨されます。

13
Martin

私は解決策を提案します:追加してみてください

  Before=basic.target

/usr/lib/systemd/system/dbus.serviceに。

私はあなたのログで奇妙なことに気づきました、それは私が少し前に読んだ事故を思い出させます Arch Linuxフォーラムで :このシステムは再起動時にハングします。上記のようにソリューションが提供されましたが、ハングしたのは、停止した後に何らかのサービスがd-busと通信しようとしたためにハングしたためです。

そのため、basic.targetの前にそれを注文することで、basic.targetに到達する前に開始するだけでなく、basic.targetがシャットダウン中にダウンするまでそれが留まるようになります。

unhealthyログでは、基本システムは停止していませんが、healthyログ。

これは機能しないはずであり、アップグレードできないことを考慮して、ダウングレードを検討しましたか?

5
MariusMatutiae

shutdown.targetは、シャットダウンプロセスの開始時に自動的に停止するために、デフォルトで他のすべてのユニットと競合します。これは逆の方法でも機能します。別のユニットが起動すると、shutdown.target停止します。したがって、問題はsomethingがシャットダウン中に何かを開始させ、シャットダウンプロセスを上書きすることです。

これはsystemd v198で修正されているはずで、シャットダウンジョブが「代替不可能」になっています。

3
user1686

「ターゲットのシャットダウン」に達したとき、スワップはまだアクティブです。私の解決策は、再起動前にスワップを強制的に非アクティブ化することでした:

swapoff -a
swapoff /dev/md6

その後、再起動は一時停止せずにうまくいきました。

1