自宅サーバー 番外編

2026年3月4日

Linuxカーネルが悲鳴を上げる

これまで記事で取り上げてきた自宅サーバーですが、勉強用とはいえ、あれこれこねくり回した結果なのか――ついにLinuxカーネルが悲鳴を上げました。

ある日突然、システムがリードオンリーでしかログインできない状態に。

原因として最も怪しいのは、一時バックアップ用に接続していたUSB接続の2.5インチHDD。どうにも調子が悪く、内部で激しく接続・切断を繰り返していたようで、その影響が他のストレージにまで波及。カーネルがSSD/HDDの不整合、もしくは緊急状態と判断しロックをかけたようです。

修復モードから

fsck /dev/sda2 -y

を実行し一時的に復旧。しかし数日後に再発。

これはさすがにまずい――ということで、サブPCとして使っていた MINISFORUM X400(Ryzen5 PRO 4650G 搭載) を暫定サーバーとして置き換えることにしました。

https://www.minisforum.jp/pages/elitemini-x400

負荷が上がると割とブンブン唸るためサーバー用途には微妙ですが、他に適したマシンもないので背に腹は代えられません。

UbuntuServerでの再構築

今回は UbuntuDesktop ではなく UbuntuServer をインストール。特に問題もなく完了しました。

本来であれば全て一から再構築しても良かったのですが、今回は時短を優先。

アプリの設定ファイルとデータを、

cp -rp **** ****

で丸ごとコピー。
-rp オプションで属性を保持したまま保存します。

このバックアップのおかげで、ほぼ1日で復旧完了。

ちなみにAIやNextcloudのスケジュールをDiscord Botへ連携させるプログラムを書き、Dockerイメージ化してCasaOSで管理しています。やはりバックグラウンドで動かすより、GUI上で可視化されているほうが安心感があります。

Ryzenがうるさい問題

さて本題。

Ryzen搭載のミニPC、ちょっと負荷がかかるだけ(40℃程度)でファンが唸ります。非常にうるさい。

最近のLinuxカーネルならAMD CPU向けの最適化ドライバがあるのでは…?と調べてみると――

「ありますやん!」

声でちゃいましたが、ドンピシャなのが普通にありました。

amd-pstate-epp

kernel 6.3以上、かつ Ryzen 3000シリーズなど ZEN2以降で利用可能なCPUドライバ

amd-pstate-epp

これを有効化すると、電力効率とパフォーマンスが劇的に改善するとのこと。

有効化手順

まずBIOSでCPPC (Collaborative Processor Performance Control) Enable になっていることを確認。

Auto だったので Enable に変更。

GRUBの編集

sudo nano /etc/default/grub

パラメーター追加:

GRUB_CMDLINE_LINUX_DEFAULT="amd_pstate=active"

設定反映と再起動:

sudo update-grub
sudo reboot

ドライバ確認

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver

出力が

amd-pstate-epp

になっていれば成功です。

プロファイル切り替え

プロファイルの切り替えも可能です

プロファイル名特徴用途
performance常に最高クロック付近を維持ゲームサーバー、ビルドマシン
balance_performance負荷に応じて素早く加速(標準)一般的なWebサーバー、デスクトップ
balance_power効率を重視しつつ、必要なら回す自宅サーバー、ファイルサーバー
power徹底的に消費電力を抑える低負荷な常時稼働マシン

永続化設定(systemdサービス)

うちの環境だけなのかudevルールではうまく反映できなかったため、サービスを作成しました。

sudo nano /etc/systemd/system/amd-pstate-lowpower.service
[Unit]
Description=AMD P-State EPP Low Power Settings
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo "balance_power" | tee /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference'
ExecStart=/bin/sh -c 'echo "powersave" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor'
ExecStart=/bin/sh -c 'echo "3600000" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

サービス登録と有効化

# サービスを認識させる
sudo systemctl daemon-reload

# 今すぐ実行する
sudo systemctl start amd-pstate-lowpower.service

# 次回起動時からも自動実行するようにする
sudo systemctl enable amd-pstate-lowpower.service

反映確認

grep . /sys/devices/system/cpu/cpu0/cpufreq/{scaling_driver,scaling_governor,energy_performance_preference,scaling_max_freq}

表示例:

/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver:amd-pstate-epp
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor:powersave
/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference:balance_power
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq:3600000

設定通りに反映されていれば成功です。

導入後の体感

ファンの唸りがほぼ完全に無くなり。(LLMで考えさせたり意図的に負荷を上げれば回る)
アイドル時の消費電力も下がり、負荷時の挙動も滑らかになりました。

Haswell世代からRyzenへ一時移行という形ですが、やはり世代差は大きいですね。

しばらくはこの構成で様子を見つつ、最終的なサーバー機の選定も改めて考えたいところです。
自宅サーバー道は、まだまだ続きます。

せっかくなので…

せっかくなので以前から試してみたかった「ローカルLLM × APU活用」にも手を出してみました。
Ollama を Vulkan 経由で動作させ、APUのGPUリソースを活用する構成、さすがにこの世代のAPUでは“爆速”とまではいきませんが、GPU側に処理を肩代わりさせることでCPU負荷にはほとんど影響を与えずに動作してくれます。いい感じです、詳しいお話はまた今度