web-dev-qa-db-ja.com

いつ再起動が必要ですか?

カーネルのアップグレード以外に、リブートが必要なLinuxシステムへの変更はありますか?再起動によって物事が簡単になる状況があることは知っていますが、再起動しないと実行できない状況はありますか?

明確にするために、私はハードウェアの故障に悩まされていない典型的なデスクトップまたはサーバーシステムを考えています。

28
Mark

いくつかのことが頭に浮かびます:

  • kernel panicからの回復

    カーネルパニックは、定義上、カーネルを再起動しないと回復できません。

  • 端末からアクセスできないハングから回復します

    システムが応答せず、回復するためのコマンドを発行する方法がないと立ち往生している場合、実行できるのは再起動することだけです。通常は、手動で電源を入れ直さないようにします。このような状況の場合、Linuxカーネルには Magic SysRq サポートがあり、緊急時にマシンを再起動するために使用できます。

    限り CONFIG_MAGIC_SYSRQオプションがカーネル構成で有効になり、kernel.sysrqsysctl オプションが有効になっている場合、魔法のSysRqキーの組み合わせでカーネルに直接コマンドを発行できます:

    ご了承ください Alt+SysRq 以下は、長押しを意味します Alt、次に押し続けます SysRq (通常、 PrintScrn キー)。

    1. Alt+SysRq+r:キーボードの制御を取り戻す
    2. Alt+SysRq+eSIGTERMinitを除くすべてのプロセスに送信し、正常に終了する機会を与えます
    3. Alt+SysRq+iSIGKILLを除くすべてのプロセスにinitを送信し、強制的に終了させます
    4. Alt+SysRq+s:マウントされているすべてのファイルシステムを同期しようとします
    5. Alt+SysRq+u:すべてのファイルシステムを読み取り専用で再マウントします
    6. Alt+SysRq+b:再起動、または

      Alt+SysRq+o: シャットダウン

    マジックSysRqキーの組み合わせでグレースフルリブートを試行するためのニーモニックは次のとおりです。

    "[〜#〜] r [〜#〜]eboot[〜#〜] e [〜#〜]ven[〜#〜] i [〜#〜]f[〜#〜] s [〜#〜]ystem[〜#〜] u [〜#〜]tterly[〜#〜] b [〜#〜]roke

    ヘッドレスサーバーの場合は、 iptablesターゲット を使用して、ネットワーク経由でリモートSysRqシーケンスを有効にすることもできます。

  • 起動できない状態からの回復

    システムがすでに通常の起動が不可能な状態になっている場合(たとえば、システムアップグレードの失敗、ファイルシステムの破損などの結果)、システムの回復コンソールにアクセスする唯一の方法は再起動することです。適切な起動時オプションを使用します。

  • ブート時のカーネルパラメータを変更します

    一部の カーネルパラメータ (カーネル監査を有効/無効にするauditなど)は、カーネルが起動時にロードされている場合にのみ設定できます。

44
Thomas Nyman

再起動する場所を2回考えられます。

  1. システムが適切な状態で起動できることを確認する必要がある場合。

    以前は、実行中にデーモンが構成されているシステムで作業していました。数年間実行した後、電源障害が原因で再起動しましたが、デーモンは起動プロセスの一部ではなく、何年も前に構成された方法を知る手がかりがありませんでした。システムを再構成する方法を見つけている間、システムは数日間ダウンしていました。

    実際に再起動することは、停電後にシステムが正しく再起動することを確認する唯一の方法です。

  2. システムライブラリが更新されたとき。

    システム上の多くのアプリ/サーバーと共有されているライブラリで重大なセキュリティ欠陥が発見されたとしましょう。再起動せずにライブラリを更新できますが、安全でないライブラリが読み込まれた状態でまだいくつのプロセスが実行されていますか?古いライブラリを使用すると、何でも入念に再起動できます(把握できる場合)。ただし、これはエラーが発生しやすく、再起動するよりも時間がかかる場合があります。

    再起動は、実行中のすべてのプロセスが古いバグのあるライブラリをまだ使用していないことを確認するための最良の方法です。

2
Gabe

ソフトウェア構成の計画的な変更を意味し、完全に機能するハードウェア(まだ見たことがない)とバグのないソフトウェア(ご存知のように...)を想定している場合、カーネルまたはドライバーのバグのみが、リブート。 :)

それ以外は...シングルユーザーモードに切り替えずに、基本的に再起動とほとんど変わらない魔法を使わずにinitを置き換えることができるかどうかはわかりません。

0
Zrin