余ったPCをNASにする - Unraid6.10のインストール

# Unraid 6.10.0のインストール

この記事の続きです

https://qiita.com/tinoue@github/items/2bfade104585d9782101

このビデオを参考にインストールします。

https://www.youtube.com/watch?v=CcRwT7iHIcc&ab_channel=SpaceinvaderOne

## アカウント作成

[Unraidのサイト](https://unraid.net)を開き、ページ上部の`COMMUNITY`をクリックします。`VISIT THE FORUM`をクリックし、画面上部の"Sign Up"でアカウントを登録してください。Google認証アプリを使っての二段階認証に設定しておきます。

## ブート用USBディスクの作成

提供されているツール - USB Flash Creator - を使って書き込みます。Stable版だと6.9.2が最新ですが、Next版だと6.10.0がrc4までリリースされています。フォーラムをざっと見たところ、自分にとって致命的な問題はなさそうで、cache周りの取り扱い改良などが魅力的だったのでこちらを使うことにしました。

追記：6.10.0が正式リリースされました

https://unraid.net/blog/6-10-stable

PCのBIOSを変更し、USBメモリでのブートを有効にします。USBメモリでのブートはlegacy, UEFIの2つの方式がありますが、現時点ではデフォルトのlegacyのほうがおすすめのようです。legacyブートだと、ブートメニューからmemtest86+(メモリのテストツール)の実行が可能なのも理由の1つです。

ここで問題発生。ブランド物がいいだろうとSandiskのUSBメモリを使用したのですが、起動時にブート不可とのBIOSメッセージが出ました。試しにBUFFALO製のUSBメモリに変えてみたら正常にブートできました。

後で知りましたが、Sandisk製USBは推奨しないとの公式アナウンスが出ていました。

https://forums.unraid.net/topic/119052-psa-on-sandisk-usbs/

Unraidは有料ソフトウェアですが、このUSBメモリがライセンスキーの役割を果たします（ライセンスの移行ももちろんサポートされています）。

## HDDの装着

HDDの障害交換時に見分けやすいように、HDDのコネクタを刺す面にシリアル番号を書いたシールをはるか、マジックで直書きするのをお勧めします。シリアル番号はHDD背面に書いてあると思います。

## 初回設定

### Web GUIでのログイン

Unraidを実行するPCのモニタを利用するGUI Modeもありますが、デフォルトでは別のPCからブラウザで操作する設定で起動されます。

起動後、別のPCからブラウザで http://tower.local を開くとUnraidのGUIが表示されます。

最初はTRIALライセンスで利用することにします。30日間の利用が可能です。

### add-onアプリケーションのインストール

`APPS`で`Community Applications plugin`をインストール。
その後同じく`APPS`の検索バーに"unassigned devices"と入力し、表示された以下の3つを順にインストール

- Unassigned Devices
- Unassigned Devices Plus (Addon)
- Unassigned Devices Preclear

### 各ディスクの役割を設定

`MAIN`画面で各ディスクの割り当てを行います。画面右上の？(HELP)をクリックすると、画面中に説明が表示されます。

Parity Disk×1, データディスク×4, SSD×2をpool(cache)として登録しました。

RAIDとは異なり、ディスクのサイズを合わせる必要はありませんが、Parity Diskは最大容量のディスクを割り当てる必要があります。
今回はParity Diskを1つにしましたが、この場合ディスクが1台故障してもデータの復旧が可能です。Parity Diskを2つにするとディスクが2台同時に故障した場合でもデータの復旧が可能となります。

Unraidの仕組み上、データディスクはSMRでもそれほど問題ないと思うのですが、ParityディスクはCMRがいいと思います。

Parityについて詳しく解説したビデオがこちら。

https://www.youtube.com/watch?v=dX2PvD1qtKw

~~pool(cache)には余っている小容量のSSDを割り当てました。SSDが突然死すると困るので二重化することにします。Slotsを2に設定して2台のSSDを設定。これに関しては例外的にRAID1でのアクセスになります。~~
追記：どうもUnraidはSSDキャッシュの取り扱いがいけてなく、期待した書き込みパフォーマンスの向上がなかったので取りやめました。

なおdockerやVMを使うのがメインの場合にどうpoolを設定するかについてはこちらのビデオが参考になります。

https://www.youtube.com/watch?v=jgRSr7yBZfs

### フォーマットとパリティ作成

ディスクのチェックをあらかじめ行いたい場合、Preclearでチェックします。ただし相当時間がかかります。

パリティ作成の前にデータディスクをフォーマットします。フォーマットが終わったらParity Syncを行ってパリティ作成。

今回パリティディスクはWD blue 8TBです。処理が完了するまで半日以上かかりました。

パリティの処理が終わったら`MAIN` - `Array Operation` - `START`をクリックして、ディスクをオンラインにします。これを忘れるとNASとしてディスクの内容が公開されません。

後日、ディスクの構成を変えたい場合などは、`STOP`をクリックしてディスクをいったんオフラインにしてディスク周りの設定を操作します。

### 初期設定

パリティディスク作成中に設定を行います。設定は`APPLY`をクリックしないと有効にならないので注意します。

- SETTING
    - `Communiti Applications`で`Allow CA to send any emergency notifications`を`Yes`にし、`APPLY`で有効化
    - `Date and Time`でTime zoneを設定
    - `Disk Settings`
        - `Enable auto start`をYesに。こうしないと起動時に毎回手動でMAIN - Startが必要になります
        - `Default spin down delay`をお好みで設定
        - `APPLY`をクリックして設定を有効化
    - `Notification Settings`
        - `Date format`をYYYY-MM-DDに
        - お好みで各種Update notificationを有効化
        - Emailにも送信する場合は、送信先の`Email`をチェック
        - `APPLY`をクリックして設定を有効化
        - Emailに送信する場合は`SMTP Settings`も設定し、`APPLY`をクリックして設定を有効化
    - `Scheduler`
        - `Parity Check` ディスクの全内容の定期的な検査(一般的なNASでのScrubに相当する)。必要なら設定。相当時間がかかるので、`Cumulative parity check`を`Yes`にしてチェックを分割させることも可能
        - `Mover Settings`　キャッシュディスクの内容をデータディスクに書き込むスケジュールの設定
- USERSでユーザ作成

- APPSで検索ボックスに"My Servers"を入力して、インストール。`Install`ボタンが`Actions`に代わるので、`Actions`-`Settings`を選び、unraid.netのフォーラムで登録したID,パスワードでログイン

### Sambaの共有設定

SHARES - `ADD SHARE`を開く

- `Share name`, `Comments`
- `Use cache pool` : キャッシュディスクの利用設定
    - `Yes` : 書き込みキャッシュとしての動作
    - `Prefer` : 読み込みキャッシュ重視の動作
- `Allocation method` : `High-water`にしておくと、複数のディスクにそれなりにバランスして書き込む
- `Minimum free space` : 上記`Allocation method`が`Fill-Up`の場合を除き、0KBのままでいい
- `Included disk`, `Excluded disk` : 共有フォルダとして使用するディスクを設定できる。設定する場合、Include, Excludeのどちらか片方だけを設定する。
- `APPLY`で設定を有効化し、続けてセキュリティを設定する
- `SMB Security Settings`
    - `Export`: `Yes`もしくは`Yes/Time Machine`。なお自分の環境では`Yes/Time Machine`に設定すると、Windowsから共有フォルダへの書き込みがうまくいきませんでした。
    - `TimeMachine volume size limit`: Time machineバックアップに割り当てる容量を設定
    - `Security` : `Public`以外を設定した場合は、`APPLY`後、続けて`SMB User Access`の設定を行う
    - `Case-sensitive names` : `Yes`にするとパフォーマンスが上がる場合がある(詳細はヘルプ参照)

- `SMB User Access` : PrivateやSecure設定にした場合、ユーザーごとの読み書き権限を設定する

### 書き込みパフォーマンスを倍以上にするTurbo Writeモードについて

Unraidの大きな欠点として、標準設定では書き込みの速度が遅い点があげられます。

例えばDisk1に書き込もうとする場合、
- Parity DiskとDisk1の書き込み前の内容を読み出す
- 新しいパリティ値を計算
- Parity DiskとDisk1の書き込み

という手順になるので、普通に書き込む場合の半分以下の速度となります。具体的にはWD Blueの8TBのディスクに対して30MB/s～60MB/s程度の速度でした。本来の書き込み速度は100MB/s～200MB/sなので1/3程度のスピードです。

これを改善する設定として、通称Turbo Writeという設定があります。
Turbo Writeを有効にするには、`SETTINGS` - `Disk Settings` - `Tunable (md_write_method)`を`reconstruct write`に設定します（`APPLY`を忘れずに）。

この設定だと、ディスクの書き込みパフォーマンスを100%発揮することができます。WD Blue 8TBの場合、1Gbpsのネットワークを使い切った110MB/sの速度が出ました。

ただし、その代償として書き込み先ではない他のすべてのディスクに対して読み込みアクセスが発生します。大量の書き込みが発生する初回バックアップ時などに限定して有効にするのもありだと思います。

### Add-onの追加

- `Fix common problems` : 設定に問題があると表示してくれるらしい
- `Dynamix File Manager` : `SHARES`画面からファイル操作が可能になる
- `Parity Check Tuning` : Parityディスク構築を夜間に分割して行うなどの設定が可能
- `Mover Tuning` : CacheからDiskへの書き戻しを夜間に行うなどの設定が可能
- `Dynamix System Temp` : CPU等の温度を表示してくれる
    - 最初に`NerdPack GUI`をインストールし、settingsでperlを有効にする
    - `Dynamix System Temp`のsettingsで`DETECT`ボタンをクリックし、`Processor temperaure`を選択
- `Disable Security Mitigations`: 非推奨。古いIntel CPUでMeltdown対応等を無効にして速度低下を防ぐ
- `Tips and Tweaks` : CPU, NIC, Disk関連の細かい設定ができる。

https://www.reddit.com/r/unRAID/comments/m8fgfy/20_essential_unraid_69_plugins_2021_edition/

なお、自分は使ってませんが、Add-onを使っていろいろなアプリケーションサーバーとしての利用が可能です。

### 省電力化

常時通電するので、消費電力低減を行います。

https://forums.unraid.net/topic/98070-reduce-power-consumption-with-powertop/

上記を参考に、BIOSの省電力関連を設定 - 自分の環境では省電力関連の設定をAutoではなく、明示的にEnableにする必要がありました。Terminal画面にて`powertop --auto-tune`を実行し問題がないか確認します。

問題ないようなら、次回起動時に`powertop --auto-tune`を実行するようconfigファイルに追記します。`MAIN`のFlash項目の一番右側`VIEW`のアイコンをクリックし、ファイルブラウザを開きます。`/boot/config/go`を開き、最下行に`powertop --auto-tune`を追加します。

自分のPCの場合、HDDはすべてスピンダウンした状態のアイドル時の消費電力が、60Wから35Wまで下がったのでかなり効果があります。

### 設定のバックアップ

MAINで`Boot Device`の項目にある`Flash`をクリック。`FLASH BACKUP`をクリックして設定のバックアップをダウンロードしておく。USBメモリが壊れた場合などは、このファイルを使用して起動用のUSBメモリを再作成できる。

なお、"My Servers" add-onをインストールしているので、クラウドへのバックアップも可能なのですが、このバックアップは現時点では暗号化されていないそうなので利用を見送ってます。

### 参考リンク

https://www.reddit.com/r/unRAID/

https://forums.unraid.net/topic/46802-faq-for-unraid-v6

https://wiki.unraid.net/My_Servers

https://wiki.unraid.net/Setup_Sleep_(S3)_and_Wake_on_Lan_(WOL)

https://wiki.unraid.net/Understanding_SMART_Reports

https://forums.unraid.net/topic/98070-reduce-power-consumption-with-powertop/