TrueNAS on DS380 で HDDx8 の省スペース NAS を組む

# Pros & Cons
- **拡張性とメンテナンス性を犠牲にしても、どうしても省スペース NAS が欲しい人向け**
- **スペースが余ってるなら Define 7 XL とかで組んだほうが楽だし拡張性も高いしパーツの選択肢も多い**
    - てか DS380 は高い

## Pros
- 省スペース
    - 3.5/2.5 x8, 2.5 x4 をこのサイズに積めるのはアド

## Cons
- 内部の配線のしづらさ
    - 省スペース故に、配線がかなりしづらい
    - ブラケットがM/Bの一部に被さるような構造なので、一部のポートへのアクセスが非常に不便になる
    - 一般に、SATA や USB 3.0 など
- パーツの選択肢
    - 電源は SSF でサイズを厳守する必要がある
    - M/B も Mini-ITX になるが、NAS として運用するためにはポートが足りない
        - 特殊な M/B を使わない場合、拡張ボードで SATA などを付けることになる
        - その場合、10GbEボードなどは使えなくなってしまう
    - 拡張性を犠牲にしてしまう


# 前提
- 構築＆保守の備忘録
- 省スペースの NAS を作りたかった
    - ESXi のデータストアとか含めてディスク管理を一元化したかった

# H/W 構成
- ケース
    - `SilverStone DS380`
    - 3.5 HDD をホットスワップ可能で8台積める
    - 2.5 SSD も4台積める（交換は割と手間）
    - https://www.silverstonetek.com/product.php?pid=452&area=jp
- CPU
    - `Intel Pentium Gold G6400`
    - Resilverする時以外はRAID-Z2でもほとんど使われてない
- Motherboard
    - `Asrock H510M-ITX/ac`
- Memory
    - 16-GiB (8x2)
        - `SanMax SMD4-U16G48M-24R-D`
        - Ark のセールで税込 4,990 円
- HDD
    - Raid-Z2 (Data: 16T)
    1. WD Red: `WDC WD40EFZX-68AWUN0` 
    1. WD Red: `WDC WD40EFZX-68AWUN0`
    1. WD Green: `WDC WD40EZRX-00SPEB0` 
    1. WD Green: `WDC WD40EZRX-00SPEB0`
    1. WD Blue: `WDC WD40EZAZ-00SF3B0` 
    1. WD Blue: `WDC WD40EZRZ-00GXCB0` 
    - じゃんぱらとかで適当に買い漁った
- SSD
   1. ADATA SU650
   1. ADATA SU650
   - Boot Mirror 用
   - Installする時にドライブ二つ選ぶと自動でBoot Mirrorを構築してくれて便利～
- SATA 増設ボード
    - `玄人志向 SATA3I10-PCIe`
- SATA ケーブル
    - Ainex `AK-CBSA05-30BK` x10
- 電源
    - `SilverStone SST-ST45SF-G`

# 組み立て
- 省スペースに色々詰め込んでいるので、結構無理がある
- マザーボード
    - HDDブラケットが、Front USB 3.0、電源24ピン、SATAポートの上にかぶさる形になってケーブルのテンションがキツイ
    - 前面に3.0いらないから取り回しのいい2.0にしてほしかった
- ケース
    - 全体的にネジがキツイし、ネジ山が柔らかいので無理に力をかけようとするとすぐにネジがなめる
    - ヤバい気配を感じたらドライバーではなく、ペンチで側面を掴んで回すのがいい
    - ただこのネジはスペアパーツの SCREW-B か SCREW-C で代用できる
- HDDブラケット
    - 海外レビューサイトで見たのとバックプレーンの電源供給が違う
    - 自分が買ったものは、`IDE 4pin`＋`SATA 15pin x3` だった（マニュアルの通り）
- 電源
    - kakaku.comでは、`SST-ST45SF-G` だと起動しないとあったが、起動している
        - `IDE 4pin ×2` とあるので、モデルが違うのだと思う
    - 上記の HDD/SSD に加えて、8T HDD ×2 が組み込んである
    - マニュアルに、`HDDブラケットには最低2系統から供給するように`とある
        - SATA電源ケーブル：SSD×2（分岐ケーブル）、HDDバックプレーン（SATA）x1
        - IDE電源ケーブル：HDDバックプレーン（4pin）、HDDバックプレーン（SATA）x2（IDE -> SATA二股分岐）
        - で供給していて問題はない
- 拡張カード
    - DS380はHDDブラケットの位置の関係で、拡張カードに制限がある
    - 長さ 6inch（152mm）以下、もしくは幅 2.35inch（60mm）以下で無い場合、HDDブラケットが一枚使えなくなる
        - `玄人志向 SATA3I10-PCIe`は「長さ138mm」なので大丈夫
        - 側面のSATAポート×6も問題なくアクセス可能
- ケーブル類
    - 上記のAinexのように、薄い＆短いものがいい
    - マザボ付属みたいな、普通のSATAケーブルでも組み込めるがちょっと具合が悪い
    - 個人的にはラッチ付きがいい
        - ラッチなしだと抜く時にHDDバックプレーンのコンデンサに当たってもげそうで怖い
    - SSD側の電源はL字以外の選択肢はほぼ無い

# 性能
- 再掲構成
    1. WD Red: WDC WD40EFZX-68AWUN0
    2. WD Red: WDC WD40EFZX-68AWUN0
    3. WD Green: WDC WD40EZRX-00SPEB0
    4. WD Green: WDC WD40EZRX-00SPEB0
    5. WD Blue: WDC WD40EZAZ-00SF3B0
    6. WD Blue: WDC WD40EZRZ-00GXCB0
- RAID-Z2
    - Sync: Standard
    - Compression level: LZ4
    - Enable Atime: off
    - ZFS Deduplication: off
    - Record Size: 128 KiB
- Windows11 で、1GbE 経由の SMB でマウントしている
    - 他に結構重めのディスクアクセスが動いているので参考記録
- データサイズ 1-GiB
    - 大体 1GbE の上限近く出てる
    - メモリキャッシュがかなり効いてる印象
    - ![CrystalDiskMark_20220225175613.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278058/08a8a204-5ee2-e106-774d-c90f87dd5545.png)
- データサイズ 32-GiB
    - シーケンシャルなら上々、ランダムは苦手
    - ただここまで極端なランダムアクセスをするかと言われると
    - ![CrystalDiskMark_20220225180726.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278058/e956c5b0-f174-db39-948b-46a9e395ef8b.png)


# 設定とかの備忘録
## Accounts
## System
### Boot
- Boot Mirror の後付構築は `Boot Environments` の `ACTIONS` を展開して `Boot Pool Status`

### Advanced
- Self-Encrypted Drive
- Syslog Server

### EMail
- TrueNAS が送信するメールの設定
- `SMTP` or `GMail OAuth`

### Alert Settings
- Alert の基準とかの設定

### Tunables
- パラメータ調整とか
- ZFS Cache でメモリを 8G 使う
    - Variable: `vfs.zfs.arc_max`
    - Value: `8589934592`
    - Type: `loader`

## Task
### Cron Jobs
### Init/Shutdown Scripts
### Rsync Tasks
- ローカルディスクとリモートディスクの同期

### S.M.A.R.T Tests
### Periodic Snapshot Tasks
### Replication Tasks
- Snapshot と、そこからの複製（だと思う）
```shell
% zfs snapshot main/data@now
% zfs send main/data@now | zfs receive backup/data
```

### Resilver Priority
### Scrub Tasks
- ZFS Pool に対する全領域の整合性チェック
- Pool 作成時にデフォルトで設定される？
    - Threshold days: `35`
    - Schedule: `Weekly (0 0 * * sun) on Sundays at 00:00 (12:00 AM)`
    - `毎週日曜日の0時`にscrubを行う。ただし、一回正常終了したらそこから `35` 日経過するまでは再度実行しない

### Cloud Sync Tasks

## Network
### Global Configuration
- `HostName` とか `Proxy` とか

### Interfaces
- `/etc/network/interfaces` とか　`/etc/netplan/***.yaml` で設定できるようなやつ

## Storage
- Pool とかの監視