ハードウェアを再起動せずにLinux OSを再起動することは可能ですか?


89

ハードウェアを再起動せずにLinuxシステム(特にDebian)を再起動する方法はありますか?

OSが起動する前に少し動作するRAIDコントローラーがあり、RAIDコントローラーを再起動する再起動プロセス全体を行わずにLinux OSをすばやく再起動する方法があれば、等


6
すべてのUEFIベースのシステムは、再起動せずにOSを切り替えることができます。のkexec()ようなものもありますexec()が、Unixカーネル用です。
user2284570

回答:


98

ほぼすべての実稼働システムでkexec-rebootを使用しています。

HP ProLiantサーバーでの長いPOST時間をバイパスし、起動サイクルを5分から約45秒に短縮できます。

参照:https : //github.com/error10/kexec-reboot

唯一の注意点は、UEFIを起動するRHEL / CentOS 6.xシステムでは動作しないように見えることです。しかし、ほとんどの健全なOS /ハードウェアの組み合わせは機能します。


62
書きました!しかし、それはまだかなりうまくいきます...
マイケルハンプトン

1
魅力的です。では、実際のプロセスはどのように見えますか?Hariprasad Nellitheerthaの記事(kexec wikipediaページからリンク)によると、「通常の再起動プロセスとは異なり、kexecは再起動前にシステムのクリーンシャットダウンを実行しません。すべてのアプリケーションを強制終了し、ファイルシステムをアンマウントしますkexecの再起動を試みる前に。」たとえば、Wim Coekaertsは「sync; umount -a; kexec -e」は非常に高速な再起動を行うと言っています。しかし、忙しいファイルシステムをアンマウントすることはできません。ウェブを熟読すると、多くの人が「すべてのアプリケーションを殺す」部分を無視しているようです。
マイクS

2
@MikeSこれはそうではありませんkexec。それがkexec-rebootユーティリティです。Githubの説明では、違いとユーティリティがプロセスに追加する内容の概要を説明しています。
ewwhite

4
@MikeS kexecをステージングした後、単にを実行しshutdown -rます。システムスクリプトは、kexecがステージングされたことを認識し、正しいことを行います。どのように見えますか?3、4、または15分短くなります。私は、iDRACのコンソールを脱い非常に恐ろしい品質のビデオを持っているが、あなたは本当に...を通じて苦しみたくないkexec-rebootトリッキーなことができkexecをするために、右のコマンドライン引数を取得するプロセスを自動化することを意図されたスクリプト。
マイケルハンプトン

1
@MichaelHampton-かっこいい。/etc/rc3d/rc6.d/S01rebootの終わり近くにあるCentOS 6.5には、次のものがあります[ -n "$kexec_command" ] && $kexec_command -e -x >& /dev/null。したがって、カーネルがkexec -lによってロードされた場合、システムは完全な/ sbin / rebootなしでカーネルをリブートします... kexecは焼き付けられます!知らなかった、ありがとう。最新のディストリビューションでも同様にカバーされていると思います。ところで、kexecが以前に-lで実行されていなかった場合、再起動スクリプトは「何もロードされていません!」と言います。これが、出力が/ dev / nullに送信される理由であり、この機能に気付かなかった理由です。
マイクS

17

はい、可能です。kexecを使用すると、BIOSブートプロセスを経由せずにLinuxカーネルをLinuxから直接起動できます。


また、UEFIでは、再起動せずにOSを切り替えることができます。
user2284570

1
@ user2284570私の知る限り、UEFIはそのようなメカニズムを提供していません。
Jonathon Reinhart

15

はい。kexec-toolsを使用する必要があります。生活を楽にするために、私はkexec-rebootを使用します。

$sudo apt-get install kexec-tools
$wget https://raw.githubusercontent.com/vadmium/kexec-reboot/master/kexec-reboot
$chmod +x kexec-reboot
$sudo mv kexec-reboot /usr/local/sbin/kexec-reboot
$sudo /usr/local/sbin/kexec-reboot

13
混乱がないように、私はこれを書きませんでした。
マイケルハンプトン

これはおそらくUbuntu / Debian専用ですよね?
ewwhite

1
@ewwhite おそらく RHEL / CentOSで動作しますが、コードを読むと、エッジケースによってエラーが発生する可能性のあるいくつかの問題点が見つかりました。そして、ソースはコメントでこれを認めているようです:# The error checking is very basic.
マイケル・ハンプトン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.