Synology DS720+をRoon Serverとして限界まで高速化!10万曲のライブラリを快適に運用する

この記事は、Roonの全体像を解説する「Roonとは?仕組み・Roon Ready・始め方・使い方を解説」の関連記事です。

Synologyを快適なRoon Serverへ

Roon ServerとしてSynology DS720+で運用していますが、10万曲を超えたあたりから挙動がかなり遅くなり、ストレスを感じるようになりました。いよいよ自作PCで専用サーバーを導入するかと検討していましたが、最後にDS720+をどこまで高速化できるか試してみることにしました。

結果として実用上ストレスのないレベルまで改善できましたので、その手順を紹介します。将来的には専用PC(Ubuntu + RAID 0 + リアルタイムカーネル)への移行も検討中ですが、現状はこのまま使い続けられると判断しています。

画像
音源はSSD 8TB×2をRAID 0で、NVMe 500GBにRoonをインストール
目次

高速化のための2つの対策

DS720+のCPUはCeleron J4125です。メモリは元の2GBに8GBを増設して10GBとしていますが、10万曲を超えたところで急激に速度が落ちました。選曲してから音が出るまでに妙な間があるなど、実用上の問題が出てきました。

細かい調整項目は多岐にありますが、特に効果が大きかったのは以下の2つです。

NVMe SSDを「キャッシュ」ではなく「独立ボリューム」として使う

なぜキャッシュではなく独立ボリュームなのか

メインストレージをすでにSATA SSDで運用している場合、NVMeを「SSDキャッシュ」として設定しても、Roonのデータベースが要求するランダムアクセスに対する高速化の恩恵は限定的です。

なお、メインストレージがHDDの場合はNVMeキャッシュが有効で、SSDに近い体感速度が得られます。SSD運用ではその差が出にくいため、さらに一歩踏み込んだ構成が必要です。

NVMeスロットを独立した「ストレージボリューム」として構築し、そこにRoonの共有フォルダ(データベース)を配置することで、読み書きのレイテンシを大幅に低減できます。大容量ライブラリでもUIのレスポンスや検索速度が改善します。

DS720+での構築方法(スクリプトが必須)

DS720+は標準機能でのNVMeボリューム化が公式サポートされていません。有志が公開しているコミュニティスクリプト(007revad氏のSynology_M2_volumeなど)を利用して、強制的にNVMeを独立ボリュームとして構築します。

後継機DS723+・DS725+での構築方法

  • Synology純正NVMe SSDを使用する場合:標準機能からそのまま独立ボリュームを作成できます。
  • サードパーティ製NVMe SSDを使用する場合:DS720+と同様にコミュニティスクリプトが必要です。

NVMe SSDを独立ボリューム化するSSH手順

STEP
スクリプトの準備
  1. GitHubのリリースページから最新のzipファイルをダウンロードします。
  2. 解凍したフォルダをNASの共有フォルダ(例:/volume1/Scripts/)にアップロードします。
  3. NASの「コントロールパネル」→「端末とSNMP」からSSHサービスを有効にします。
STEP
コマンドでの実行

PCのターミナル(WindowsならPowerShellやRLoginなど)からNASにSSH接続し、以下のコマンドを実行します。

sudo -s /(スクリプトを置いたパス)/syno_create_m2_volume.sh

実行すると対話形式で以下の設定を聞かれます。

RAIDタイプの選択
Basic:1枚ずつ独立して使う(シンプルな構成)
RAID 0:2枚を合体させて速度を上げる(データ保護なし)

ドライブの選択:ボリューム化したいNVMeドライブを番号で選びます。

STEP
DSMでの仕上げ

スクリプトが完了したら、ブラウザでNASの「ストレージマネージャー」を開きます。

  1. ストレージプールに新しいNVMeのプールができているので、「作成」→「ボリュームの作成」をクリックします。
  2. ファイルシステムは「Btrfs」を選択します。Roonのデータベース用フォルダを新規作成する際、「データ整合性のためのデータチェックサムを有効にする」のチェックを外します。チェックサム(およびCoW)を無効化することで、データベースの書き込み遅延を防げます。
  3. 作成後、設定メニューから「SSD TRIM」を有効にすれば完了です。
STEP
運用上の注意:DSMアップデートへの対応

Synologyの公式サポート外の構成のため、DSMをアップデートするとボリュームが一時的に認識されなくなることがあります。同じ作者が公開している「Synology_HDD_db」スクリプトを再実行することで、データはそのままに認識を復活させることができます。

メモリ増設とDSMカーネルチューニング

メモリは8GBを増設しています。Roonが固まっている時でもメモリ使用率は50%程度、CPUの使用率も思ったより大きくないため、遅さの原因はメモリやCPUではなく別にあると考えました。

なぜRoonが重くなるのか:「Dirty Page」とは

Linux(DSM)はデータをディスクに書き込む際、一旦メモリ上のキャッシュ領域に溜め込みます。これを「Dirty Page」と呼びます。標準設定ではメモリに数GB単位のデータが溜まるまで一気にディスクへ書き戻しません。大容量ライブラリを扱うRoonがデータベースを更新し、Dirty Pageが一定のしきい値(vm.dirty_ratio)を超えると、OSはすべての処理を一時停止して強制的にディスク書き込みを開始します。

これが、Roonリモート操作中に発生する「数秒間のハングアップ」や「もっさり感」の正体でした。

解決策:Dirty Ratioの調整

しきい値を低く設定することで、「大量に溜めてから一気に書く」のではなく「小刻みにバックグラウンドで書く」ようにOSの挙動を変更します。これにより書き込みによるUIのフリーズを防げます。

10GBメモリ環境での推奨設定

以下の設定で劇的に改善しました。体感上はNVMeの独立ボリューム化よりもこちらの方が改善効果は大きいです。

vm.dirty_background_ratio = 5 メモリの5%(約500MB)が汚れたら、バックグラウンドで書き出しを開始。
vm.dirty_ratio = 10 10%(約1GB)に達する前に書き出しを完了させ、システム全体のフリーズを回避。
vm.swappiness = 10 SSDへのスワップ発生を抑え、可能な限りRAMを活用。
vm.vfs_cache_pressure = 50 ディレクトリ構造のキャッシュをメモリに保持しやすくし、ブラウジングを高速化。

設定手順:DSMタスクスケジューラを使う

SSHで直接書き換えても再起動で消えてしまうため、タスクスケジューラを使って起動時に自動適用させます。

  1. DSMコントロールパネル → タスクスケジューラ を開く。
  2. 作成 → トリガータスク → ユーザー指定のスクリプト を選択。
  3. 全般:タスク名を「Roon_Memory_Tweak」、ユーザーを「root」、イベントを「ブートアップ」に設定。
  4. タスク設定:下記のスクリプトを貼り付ける。
#!/bin/bash
# Kernel optimization for Roon Server (10GB RAM)
sysctl -w vm.dirty_background_ratio=5
sysctl -w vm.dirty_ratio=10
sysctl -w vm.swappiness=10
sysctl -w vm.vfs_cache_pressure=50
sysctl -w vm.dirty_expire_centisecs=1500

5. 保存後、作成したタスクを右クリックして「実行」を押すと即座に設定が反映されます。

タスクスケジューラを使ったRoon Serverの自動再起動

巨大なライブラリを運用していると、Roon Serverが確保したメモリが解放されず、長期稼働に伴ってメモリ使用量が増大することがあります。深夜の音楽を聴かない時間帯にRoon Serverを自動再起動する設定を組んでおくと安定します。

設定手順

ステップ1:タスクの作成
DSMのコントロールパネルから「タスクスケジューラ」を開き、「作成」→「予約タスク」→「ユーザー指定のスクリプト」の順に選択します。

ステップ2:「全般」タブの設定
タスク名:Restart Roon Serverなど分かりやすい名前を入力します。
ユーザー:必ず「root」を選択してください。

ステップ3:「スケジュール」タブの設定
毎日あるいは週に一度など、音楽再生に影響のない深夜の時間帯を指定します。

ステップ4:「タスク設定」タブでのスクリプト入力
「ユーザー定義のスクリプト」欄に以下を入力します。

synopkg restart RoonServer

ステップ5:保存
「OK」で保存します。これで指定したスケジュールでRoon Serverが自動再起動されます。

静音化:Noctuaファン換装と「即停止」回避

以前はNoctuaファン換装がうまくいかず別メーカーのファンを使用していましたが、原因が分かりましたので共有します。

純正ファンは静音モードでも軸音や風切り音が目立ちます。Noctua製ファンへの換装はオーディオユーザーに定番ですが、そのままでは「数分でファンが止まる」「警告音が鳴る」という問題が発生します。

FLX (3-pin)を選んでください。
\最大10%ポイントアップ!/
Amazon

なぜNoctuaファンは止まってしまうのか

Noctua NF-A9 FLXは純正ファンに比べて消費電力が極めて低く(0.07A vs 純正約0.12A)、回転数も低めです。SynologyのDSMはこれを「ファンが故障して回転が止まった」と誤認し、ハードウェア保護のためにファンへの給電を強制カットします。これが「最初は回るがすぐに止まる」現象の正体です。

解決策:ファン検知機能の無効化

システムの「ファン監視フラグ」をオフにすることで給電停止を防ぎます。

echo 0 > /sys/module/geminilake_synobios/parameters/check_fan

注意:DS720+(Geminilake世代)専用のパスです。

タスクスケジューラへの登録手順

再起動のたびに設定がリセットされるため、タスクスケジューラに登録します。

  1. DSM「コントロールパネル」→「タスクスケジューラ」を開く。
  2. 「作成」→「トリガーされたタスク」→「ユーザー定義のスクリプト」を選択。
  3. 全般タブ:タスク名を「Disable Fan Check」、ユーザーを「root」、イベントを「ブートアップ」に設定。
  4. タスク設定タブ:上記のコマンドを貼り付ける。
  5. 「OK」で保存後、一覧からタスクを選んで「実行」を押すと即座に適用されます。

まとめ

DS720+というCeleron機でも、NVMeの独立ボリューム化とDirty Page設定を組み合わせることで、10TB・10万曲のライブラリでも実用上ストレスのないRoon Serverとして使い続けられます。特にDirty Page設定によるUIフリーズの解消は、NVMeの独立ボリューム化以上に体感改善が大きいです。

Noctuaファンによる静音化を加えれば、リスニングルームに置いてもほぼ無音の構成になります。

Synology NASをRoon Serverとして選ぶ理由や機種比較については、こちらで解説しています。

あわせて読みたい
Synology NASをRoon Serverに使う|大容量ライブラリ運用のメリットとおすすめモデル SynologyのNASをRoon Serverとして運用する理由と現実的な性能を、DS720+での実運用をもとに解説しています。Btrfsの利点、機種比較、筆者の構成紹介まで。

Roonの仕組みや導入方法など、基本から使い方まではこちらでまとめています。

あわせて読みたい
Roonとは?仕組み・Roon Ready・始め方・使い方を解説 Roonとは何か、Roon Ready・Roon Testedの違い、Serverの選び方、TIDAL・Qobuzとの連携、ARC、DSP機能まで。導入前に知りたい情報をまとめています。
よかったらシェアしてね!
  • URLをコピーしました!
目次