研究の過程で,計算性能はそれほど必要無いものの,単純な作業をひたすら繰り返すことができるPCが必要となりました.そこで,そのために新しいPCを購入するわけにもいかないので,研究室内に転がっているPCパーツをかき集めて1台のサーバを構築しました.(ちなみに,ミニPCやラズパイなどを用いれば良いのではという声が聞こえてきそうですが,スペックが不十分なので今回は使っていません.)
そんなわけで,問題が発生しました.タイトルにもあるように,動作が不安定になったのです......(まあ,当然ですよね.用いたパーツの中には購入から5~6年経過している物もありました.)
当然,どのパーツが悪さしているか(ソフトウェアの方は構築の際に入れたばかりなので除外しています.)を調査して交換すべきですが,発表が近づいてきていることやその他の業務に忙殺されており,そのような時間が取れそうになく......
であれば,ソフトウェア側の操作で応急的に対処ができないか?と考えた次第です.
以下の内容は「こうしてみました」という一例だと考えていただければ幸いです.もしより良い方法があればご教示頂けますと大変喜びます.(正直,このようなエラー続きで萎え始めているところです笑)
また,詳細な説明は省いています.この記事の最後に参考にした記事へのリンクを掲示しているので,そちらを参照なさって下さい.
Watchdog の導入
先述の通り動作が不安定になったサーバですが,重い処理を実行した際に落ちるというわけではなく,特に何もしていない状態で落ちています.すなわち,許容範囲を超える処理のためにフリーズし,その結果落ちているわけではないと考えてます.
そのため,Watchdogの原理からはそれほど有効ではないと思われますが,可能性を可能な限り潰しておくという判断から導入することにしました.
インストール方法
先ずはパッケージのインストールを実行します.
sudo apt install watchdog
次に,各種設定をおこないます.以下のように設定ファイルに書き込んでいきます.
watchdog_module = "softdog"
kernel.panic = 60
kernel.panic_on_oops = 1
これらの詳細な説明や設定は最後に挙げている参照リンク,またはご自身で検索されて下さい.(今回の件で初めて検索したばかりなので,説明できるほどの理解には及んでいません.)
最後に,以上の設定を反映させます.
sysctl -p
sudo systemctl stop watchdog
sudo systemctl start watchdog
以上を実行し,sudo systemctl status watchdog
でActive: active (running)
と表示されていれば成功です.
sudo systemctl restart watchdog
だと何故か上手くいきませんでした.自身の環境に依存する症状かもしれないので,ここで補足しておきます.
Wake on Lan の導入
根本的に全く問題が解決していないので,当然,サーバの電源が落ちることが予想されます.そこで,遠隔で電源を入れることができないかと調べた結果,Wake on Lanというものを発見しました.これはピッタリだと思い導入を決意.
クドいかもしれないが,そもそもサーバが落ちる根本的な原因を調査するのが良いのは自明で,しかし,パッと見での原因(ファンが回っていない,CPU温度が高すぎる,など.)が無いことと時間がないことからこのような対処になっています.(加えて,今回の繰り返し処理は毎日おこなう予定のものですが,数日くらい止まってしまっても問題ない処理であることも要因の1つです.)
インストール方法
先ずはBIOS/UEFIからハードウェアレベルのWake on Lanを有効化します.この処理はマザボメーカによって異なるため,「マザボ名 Wake on Lan」などで検索するか,あるいは詳しい人は PCIE の電源設定を有効にして下さい.
また,私のBIOSでは見当たりませんでしたが,節電モードや省エネモードの設定がある場合には無効にする必要があるそうです.
BIOS/UEFIの設定はPCの根本に関わる設定であり,間違った設定をおこなうことで重大な悪影響を被る可能性があります.十分な注意の上,自己責任でおこなって下さい.
次に,以下のコマンドを実行し,ethtool
をインストールする.
sudo apt install ethtool
インストール完了後,ソフトウェアレベルでのWake on Lanを以下のコマンドで有効化します.
sudo ethtool -s <デバイス名> wol g
ちなみに,<デバイス名>
の確認はip link
でできます.
以上の操作がうまくいっていれば,sudo ethtool <デバイス名> | grep -i wake-on
に対してWake-on: g
という出力が得られます.
最後に,以上の設定を永続化させます.事前の準備としてnmcli con show
を実行し,上の<デバイス名>
に対応する"有線接続名"
を確認しておきます.
nmcli c modify "有線接続名" 802-3-ethernet.wake-on-lan magic
nmcli c up "有線接続名"
以上の操作がうまくいっていれば,nmcli c show "<有線接続名>" | grep -i wake-on-lan
に対して802-3-ethernet.wake-on-lan: magic
という出力が得られます.
動作確認
起動するPCと同じネットワークに入っている別のPCに``パッケージをインストールします.
sudo apt install wakeonlan
以下のようなコマンドで実行し,対象のPCが起動すれば成功です.
wakeonlan <対象のPCのMACアドレス>
補足事項
サーバのスペックなどについて関係すると思われる部分を簡単にまとめておきます.
項目 | 説明 |
---|---|
OS | Ubuntu 22.04 LTS |
CPU | AMD製 |
最後に
サーバへの応急処置をおこなうにあたって参考にさせていただいた記事を以下に示します.この場を借りて,お礼申し上げます.