NASの諸々のトラブルも無事?解決し、SMBやNFSだけではなく応用的な利用をしてみたいと思うようになりました。 今回は容量が少ないミニPCにiSCSIでストレージを接続してSteamのゲーム等をインストールを行い負荷の軽いノベルゲーを提供するゲーミングサーバーを構築します。
クライアントPC紹介と目的
(ゲーミングサーバーになるのでクライアントPCかと言えば微妙ですが今回はクライアントPCとして紹介します)
友人から1万円で購入したThink Center M715qが今回のクライアントPCになります。CPUがAMD Ryzen 5 PRO 2400GE、メモリが32GB(拡張済み)、ストレージが128GBというスペックです。
元々はProxmoxのノード用として調達しましたが既存Proxmoxクラスターに参加させると全体的に不安定になったためWindows11 Proをインストールして単体運用になりました。
ProxmoxのVMにGPUを接続したWindows11が居て、そこでノベルゲームをプレイするという構成にしていたのですがそれをVMから物理マシンに移行して仮想化基盤の負荷削減を行います。
しかし128GBしかストレージがありませんのでゲームのインストールができません。そのためSynology NASのiSCSIを利用してストレージを拡張します。
SynologyのiSCSI設定
デフォルトのSynology NASにはiSCSI関連の機能が入っていないので、パッケージセンターからSAN Managerをインストールします。
任意の名前、容量でLUNを切ります。スペース割当はThin Provisioningで行いました。NAS側がHDDなのでそもそもパフォーマンスが出ないのでええやろ判断です。
iSCSIターゲットは推奨どおりSynology iSCSI Targetを選択しました。
アクセス権は任意で設定してください。今回はすべてのIPからアクセス可能にしています。 ゲームのインストールデータとセーブデータが主なデータなので保護する意味がないという判断です。
LUNとiSCSI ターゲットが一組ずつ作成されていればNAS側の準備はOKです。
Windows11のiSCSI設定
今回はWindows11 Proで設定を行います。手元にWindows11 Homeが無かったためHomeでこの設定が可能かは不明です。
古の方のコントロールパネルを開き「Windowsツール」にある「iSCSI イニシエーター」を開きます。
「探索」タブの「ポータルの探索」を選択します。
NASのIPを入力します。
「ターゲット」タブに戻ると先ほど作成したiSCSIターゲットが表示されているはずです。
出てきたターゲットを選択して「接続」を選択します。
接続時に「この接続をお気に入りのターゲットの一覧に追加する」を有効にして起動時自動接続されるようにします。ここを有効にするだけでは起動時の自動接続はうまくいかなかったため対応策を後述します。
接続されていればWindowsから見た時にローカルHDD接続時と同じようになっているため「コンピューターの管理」から接続されたドライブをフォーマットします。
クイックフォーマットでも5分程度掛かったため途中で動いてないと勘違いして強制終了等はしないように気をつけてください。
ベンチマーク
フォーマット後はローカルHDD接続時とまったく変わらないためCrystalDiskMark等が利用可能です。
NICが1Gbpsなのでそこで飽和してます。スピードは一昔前のHDDと言ったところでしょうか。NICで飽和してなければ倍以上は出そうな気がします。それでもHDDなのでランダムアクセスは弱いので3Dアセットを大量に利用したハイエンドゲームは厳しいと思われます。
再起動時に自動で再接続されない問題の解決方法
この状態で再起動したところ起動時にiSCSIターゲットへの接続がうまく行われませんでした。
長年の経験により起動時の障害は「高速スタートアップ」を無効化すれば解決することが多いので無効化しました。
治りました。コンピューターサイエンス。
ゲームのインストール
ここまで来たら普通にDドライブのゲームをインストールするだけです。
古の記憶ではタブレットWindowsでmicroSDにゲームをインストールするために頑張ってシンボリックリンクとかで誤魔化したりしてましたがiSCSIでは非常に楽です。
もちろんDVDドライブがあればパッケージ版もインストール可能です。現代でDVDからインストールすると転送速度の遅さに驚きます。まさか20Mbps程度しかでないとは……
RDPツール
ゲームをプレイするためにRDPツールの選定をします。この章ではゲームサーバー側がサーバー側、RDPで接続してくる端末をクライアント側と呼称します。
ぱっと思いつくRDPクライアントと言えば「Windowsリモートデスクトップ」「Parsec」「Googleリモートデスクトップ」あたりでしょうか。
Windowsリモートデスクトップ
今回私はこちらを選定しました。やはりWindows標準で安定感があり、さまざまなOSからの接続も行いやすいです。 またOS標準のため起動後の未ログイン時でも安定して接続可能かつ、接続解除後はサーバーがロック状態になるのでセキュアでもあります。
しかしNAT越えの手段が用意されていないため各自で用意する必要があります。弊宅ではVPNサーバーが稼働済みのため問題はありませんでした。
Googleリモートデスクトップ
GoogleアカウントさえあればNAT越えを考えずに使えて楽です。ただ画質と画面解像度の問題、具体的には16:9以外のアス比クライアントで接続するとゲームのUIがはみ出たところに設置されるなど難があったため諦めました。
Parsec
ゲーム用と謳われているだけあり、レスポンスや画質は非常に良いです。普段は遠隔地にあるUnity Editorの操作でも使っておりゲーム関連のリモート操作では第一に考える候補です。
しかしParsecはiOSアプリが配信されておらずiPhoneから利用できないため選定から漏れました。 また他のRDPツールより帯域を多量に食います。大量の帯域を使う事によって快適になっているのですがセルラー回線でアクセスする場合は若干罪悪感があります。
LAN内でiOS端末不要の場合はParsecの方が良い体験ができるかもしれません。
LUNのバックアップ
環境が整ったので次はLUNのバックアップ体制を構築します。先日NASをRAID崩壊させた際にセーブデータを紛失し辛い思いをしました。
弊宅には今回iSCSI環境を構築したメインNASとは別にバックアップのSynology NASがあります。このバックアップNASに週次でバックアップを設定します。
メインNAS側の「Hyper Backup」でバックアップ タイプ LUNを選択します。
「リモートNASデバイス」を選択します。別のSynology NASがない場合は外付けHDDでも追加してローカルバックアップを行うと良いと思います。
バックアップ先のSynology NASのIPを設定してあとはウィザードにしたがってよしなに設定します。
まとめ
これで空き容量を気にしなくて良いノベルゲーサーバーができました。またiSCSI環境もできたためストレージが少ないデバイスでも色々有効活用ができそうです。
最近はどこの御家庭にもあるオンプレKubernetesクラスターからSynology CSI Driverを利用して必要な容量のブロックストレージ切り出し、接続といった事も可能のようなので今後はそちらも研究してみようと思います。