TrueNAS Scale セットアップ

Summary

前回、物理構成を決めたのでソフトウェアインストールを進めていく

OS インストール

OS インストールはバージョンで変わる可能性があるので参考程度に記載する。
今回は検証のために Proxmox VE に立てたやつと TS-664 の画像を混載となりますがご了承ください。

Install / Upgrade OSインストール先を選択 選択 Disk のデータ消えるぞ? Ok?

admin ユーザーを root にするかの選択 パスワードの設定 UEFI の設定

Install 完了 自分で再起動する

再起動してしばらくするとこの画面になる

そこでアクセスすると下記のようになる以降は Web GUI での操作になる

ログイン画面

ネットワーク設定

Network の画面で Static IP に変更や Host 名を更新しておく

  • Nameservers
    • Nameserver (DHCP)
  • Default Route
  • Hostname
  • Domain
  • Service Announcement: NETBIOS-NS, mDNS, WS-DISCOVERY
  • Additional Domains:
  • Hostname Database:
  • Outbound Network: Allow All

Network

Datasets ディレクトリー設計

TrueNAS では Pool > Datasets の構造になっていて、各種共有(SMB,NFS,iSCSI)はこの Datasets 単位で設定する
この単位をあまりにも大きくしてしまうと、アクセス管理がしづらく細かくやり過ぎると使い勝手が悪い

Datasets を分けることの利点は下記である

  • 各種共有(SMB,NFS,iSCSI)設定を Datasets ごとに設定することが多い
  • スナップショットも Pool または Datasets 単位
  • ZFS Encryption は Pool から継承できるが、 Datasets 単位で個別につけられる
    • 機密情報は Passphrase で作成すると再起動時に Lock され覗かれるリスクが減る
    • ただし、 System Dataset (一番最初に作った Pool 自体の暗号化) は Passphrase に変更できない
  • Quota を設定して容量の浪費を抑えられる
  • 入れ子にできる Apps の箇所等
  • Datasets が画面で使用量などを見ることができる
DatasetsOwnerGroupShare TypeDescription
AppsrootrootGenericApps 用の設定置き場
Apps/EmbyrootrootAppsEmby 設定データ
Apps/NextcloudrootrootAppsNextcloud
Apps/TrueNASScaleBackuptnasautobackuptnasautobackupGenericTrueNAS の自動バックアップ用
BackuprootrootGenericバックアップデータの置き場所
Backup/TimeMachinerootrootSMBTime Machine
Backup/UrBackuprootbackupsGenericUrBackup
DLSiterootrootSMBDLSite ライブラリー
DownloadsrootdownloadersSMBAria2 用
HomerootrootSMB各ユーザーの Private エリア
ISO_filesrootserversSMBProxmox VE の ISO 置き場
LibrariesrootlibrariesSMBライブラリー メディアはここに基本的に置く
Libraries/AudiosrootlibrariesSMB音声・音楽全般
Libraries/AnimerootlibrariesSMBアニメ
Libraries/BooksrootlibrariesSMB本, 電子書籍, 漫画
Libraries/MoviesrootlibrariesSMB映画
Libraries/TV-SeriesrootlibrariesSMBTVドラマ, シリーズ物
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/mnt/DataVol1
├── Backup
│   ├── UrBackup
│   └── TimeMachine
├── DLSite
│   └── <RJ number or Title>
├── ISO_files
│   ├── images
│   └── template
│       └── proxmox-ve_7.4-1.iso
├── Home
│   └── naa0yama
│       ├── Documents
│       │   └── Projects
│       │       ├── Project A
│       │       └── Project B
│       ├── Downloads
│       ├── Music
│           └── プライベートなやつ
│       ├── Pictures
│       │   └── 2023
│       │       └── 11
│       │           └── yyyy-mm-ddTHHMMss.[jpg]
│       └── Videos
│           └── プライベートなやつ
└── Libraries
    ├── Audios
    │   └── Dojin Voice
    │   │   └── <Circle>
    │   │       └── <RJ number or Title>
    │   │           ├── 1.いらっしゃいませ.flac
    │   │           └── 2.あずきマッサージ.flac
    │   └── Music
    │       └── <Artist>
    │           └── <Album>
    ├── Anime
    │   └── <Seriesname> (<year>)
    │       └── <Season xx>
    │           └── tmdbid-xxxxx Episode SxxEyy.[mp4,mkv]
    ├── Books
    ├── Manga
    ├── Movies
    │   └── <Title> (<year>)
    │       └── tmdbid-xxxxx Film.[mp4,mkv]
    └── TV-Series
        └── <Seriesname> (<year>)
            └── <Season xx>
                └── tmdbid-xxxxx Episode SxxEyy.[mp4,mkv]

Storage の作成

今回は、3つのプールを作成する予定のため、 SystemVol1, DataVol1, ReplicationVol1 とすることにする
最初に作られた物に Apps などのファイルが保存されるようなので SystemVol1 から作成する

Create Pool 暗号化設定の説明 今回は Miror を選択

前回物理構成を確認した所 DataVol1 では SLOG を設定したほうが速度が出るのでそこだけ設定する

DataVol1 のみ設定する 余剰 Disk がある場合は設定すると自動で修復する L2ARC 用の Disk 今回は設定しない

Metadata 利用するほどの多きな Pool ではないので使わず Dedup を使うほどリソースに余裕が無いため断念 確認画面, 良ければ 「Create Pool」 ですぐ作成される

暗号化キーをダウンロードする

同様に DataVol1, ReplicationVol1 も作成する

次に DataVol1 の暗号化設定を、 Passphrase に変更する。
TrueNAS の標準設定では Key が使われていて暗号化としては問題ないが、再起動後も自動的に復号化され中身を閲覧できてしまう。これを回避するためには暗号化モードを Passphrase に変更しておく。また当然だがこれを忘れると一生読み出せないし、再起動後に Passphrase を入力するまで SMB などの共有で Datasets を読むこともできない。

暗号化の変更

これで Pool はおしまい

グループ作成

今回は servers, downloaders, libraries グループを作成します。

Credentials / Groups

Datasets を作成する

Datasets はとりあえず設計したのでこれで作成する。

  • Share Type: SMB
    • を選択することで下記に変更される
      • Case Sensitivity: Insensitive
      • ACL Mode: Restricted

「Add Dataset」から作成

ユーザー作成

今回は naa0yama ユーザーを作成する

  • Auxiliary Groups: servers, libraries
  • Create New Primary Group: ■
  • Home directory: /nonexistent
  • Create Home Directory: ■
  • Samba Authentication: ■

Credentials / Users

Data Protection

Scrub Tasks

ZFS の仕組み上、データを読みだした時に不整合を確認し修復する。
Scrub(スクラブ)はその読み出し処理を定期的に実施して読み出せること, 読みだしたデータが破損していたら修復するタイミングである。一般には HDD の読み出しエラーレートは 10^12 程度のため 1TB で1つあるかどうかと思えば良いと思う。

標準で設定されている期間は毎週日曜日に始まって完了してから再度実行は 35日を過ぎたら再試行される。

Periodic Snapshot Tasks

スナップショットは下記の期限で作成する

項目Snapshot Lifetime
15 Minutely1時間
Hourly3日間
Daily35日間
Weekly5週間
Monthly5ヶ月
Quarterly14ヶ月
  • Dataset: DataVol1, SystemVol1 をれぞれ
  • Recursive: ■
  • Allow Taking Empty Snapshots: ■
  • Naming Schema: auto-%Y-%m-%d_%H-%M

15 Minutely の例 Quarterly の設定例

設定済みはこのようになる

Replication Tasks

ZFS Snapshot のレプリケーションを設定できる SSH と Local で実施できる。
弊宅では、別付けした USB HDD に Local Replication を設定することでハードウェア故障とランサムウェア対策とする

最初から詳細設定で作成したかったがうまく作成できないので一旦ウィザードで作成して編集します

Destination は 必ず Datasets を指定すること、これは事前に作成する必要はない

レプリケーション設定1 レプリケーション設定2

Replication 設定自体を再度開き設定を変更する

Periodic Snapshot Tasks から自身で設定した Tasks に設定し自動作成されたタスクを選択解除する

戻ったら、Replication 設定をした時に自動作成された Tasks を削除しておく。これで取得タイミングになると自動で Replication される状態が構築された

しばらくすると Snapshot が取得されレプリケーションが完了するはず

レプリケーションできた Datasets が自動で作られ暗号化状態でレプリケーションされる

Cloud Sync Tasks

S3 ストレージ料金ついてはまとめた記事があるので選定はそちらを見てもらうと良い

弊宅で採用したオブジェクトストレージでのテストと Bucket 設定は下記で紹介している

Backup Credentials

Credentials > Backup Credentials > Cloud Credentials > Add で S3 アクセスする認証情報を登録する

  • Disable Endpoint Region: ■ (一部の S3 互換では設定が必要)
  • Use Signature Version 2: ■ (セキュリティ強化のため On )

Cloud Credentials

Data Protection > Cloud Sync Tasks > Add

  • Transfer
    • Description: IDrive e2 - sg
    • Direction: PUSH
    • Transfer Mode: SNYC
      • 今回はオブジェクト保護もかけているため SNYC を設定完全な1方向同期が希望なら COPY を選択
    • Directory/Files: /mnt/DataVol1
  • Remote
    • Credential: 先程作ったやつ
    • Bucket: 作った Bucket
    • Folder: /<ホスト名>/DataVol1 (複数取る可能性があったので 1つ掘った)
  • Advanced Remote Options
    • Remote Encryption: ■
    • Filename Encryption: ■
    • Encryption Password: ナイショ
    • Encryption Salt: ナイショナイショ
    • Bandwidth Limit: 02:00,5M, 09:00,2M
      • ※TrueNAS-23.10.0.1 では DL の帯域幅を設定できないため上記となった本来は下記で入れたい
        • 02:00,5M:7M, 09:00,2M:7M
      • Ref: bwlimit-bandwidth-spec - Rclone Documentation
      • 02:00 - 09:00 UP: 5MB/s (40Mbps, 17GB/Hour, 119+(96)=215GB/Day), DL: 7MB/s (56Mbps, 23GB/Hour, 552GB/Day)
      • 09:00 - 02:00 UP: 2MB/s (16Mbps, 06GB/Hour, (119)+96=215GB/Day), DL: 7MB/s (56Mbps, 23GB/Hour, 552GB/Day)

Task の設定 Advanced Options

下記は暗号化設定をした場合のファイルの見え方

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
## Remote Encryption: □, Filename Encryption: □
test-sg-exsample-0001
├── DLSite
│   └── naa0yama
│       └── 2023-12-04 01.13.42 10.2.21.97 cf86975565c1.png
└── ISO_files
    └── 2023-12-04 01.13.42 10.2.21.97 cf86975565c1.png

## Remote Encryption: ■, Filename Encryption: □
test-sg-exsample-0001
├── DLSite
│   └── naa0yama
│       └── 2023-12-04 01.13.42 10.2.21.97 cf86975565c1.png.bin
└── ISO_files
    └── 2023-12-04 01.13.42 10.2.21.97 cf86975565c1.png.bin

## Remote Encryption: ■, Filename Encryption: ■
└── r8a07rjo2f1e4o1jjpmonmnjus
│   └── 2gd0nijnth3dfcs8tam446l3v0
│       └── ef3ihrcr7913gbggqv9k2eomt895si008rqqrstcq9t2kqs96qjlgclhn8m2vs8gkehc745ob3vn2
└── bvknpir1oln4qp9868ok9ge9to
    └── ef3ihrcr7913gbggqv9k2eomt895si008rqqrstcq9t2kqs96qjlgclhn8m2vs8gkehc745ob3vn2

S.M.A.R.T. Tests

S.M.A.R.T. Tests をすべてのドライブに設定しておきます。
思想としては

  • SHORT は毎日 00:00 を避けたかったため 01:00 に開始
  • LONG は毎月2日の 02:00 開始に設定
DisksTypeFrequency推定完了時間(16TBの場合)
All DisksSHORTAt 01:00, every day2 minutes
All DisksLONGAt 02:00, on day 2 of the month28 hour 15 minutes

Data Protection / S.M.A.R.T. Tests

Topic

手元の 16TB だと 下記の時間がかかる

1
2
3
4
5
6
root@ts664-01[~]# smartctl -c /dev/sda | grep -E '(routine|time\:)'
Self-test execution status:      (   0) The previous self-test routine completed
Short self-test routine 
recommended polling time:        (   2) minutes.
Extended self-test routine
recommended polling time:        (1695) minutes.

SMB 設定

SMB の設定をする
Datasets によって若干違う

Services 設定

  • 鉛筆をクリック
    • NetBIOS Name: <サーバーのホスト名> を入力して 「Save」

System Settings / Services / SMB 戻ったら「Running」と「Start Automatically」にチェックを入れておく

Home

  • Path: /mnt/DataVol1/Home
  • Name: Home
  • Purpose: Private SMB Datasets and Shares

「Home」の設定 「Browsable to Network Clients」のチェックが外れてないと「homes」が表示されるので確認する

Backup/TimeMachine

  • Path: /mnt/DataVol1/Backup/TimeMachine
  • Name: TimeMachine
  • Purpose: Multi-user time machine
  • Advanced Options
    • Access
      • Browsable to Network Clients: □
    • Other Options
      • Time Machine: ■
      • Use Apple-style Character Encoding: □

それ以外

  • Path: /mnt/DataVol1/<★★>
  • Name: <★★>
  • Purpose: Default share parameters

Dashboard

Dashboard で表示する物を設定します。
弊宅は「Storage」、「Network」を適当に追加してます

Dashboard

System Settings

General

GUI 設定と NTP Server, 言語設定, TimeZone, EMail 設定などを実施する

  • Localization
    • Language
    • Timezone: Asia/Tokyo
    • Console Keyboard Map: English (US) (us)
  • Email
    • SMTP
    • GMail OAuth
  • GUI
    • GUI SSL Certificate: truenas_default
    • Web Interface IPv4 Address: 0.0.0.0
    • Web Interface HTTP -> HTTPS Redirect: Enabled
  • NTP Servers
    • Settings
      • Burst: □ オプションは常時バーストを送信するので非推奨
      • IBurst: ■ 最初に試行した時に接続できなかったときだけパケットのバーストを送信するようになります
      • Prefer: □ 他のntpサーバーよりも優先されるよう指定
    • ntp1.jst.mfeed.ad.jp
    • ntp2.jst.mfeed.ad.jp
    • ntp3.jst.mfeed.ad.jp

System Settings / General

Advanced

拡張的な設定が揃っている

  • Console
  • Syslog
  • Kernel
  • Cron Jobs
  • Init/Shutdown Scripts
  • Sysctl
  • Storage
  • Replication
  • Sessions
  • Allowed IP Addresses
  • Self-Encrypting Drive
  • Isolated GPU Device(s)
  • Global Two Factor Authentication

いくつかカスタムする。まず、本体に HDMI を指すとこの画面になるがここではパスワードなしにリセットなどが行えてしまうためこれをパスワードありにする

再起動してしばらくするとこの画面になる

  • Console
    • Show Text Console without Password Prompt: Disabled

TrueNAS Scale のセッションタイムアウトは標準3分に設定されていて正直早すぎるのでここで設定できる。
自分は検証用 86400(1日) に設定した。 本番は長くても 1800(30分) ぐらいに設定すると思う

  • Sessions
    • Configure
      • Token Lifetime: 86400

System Settings / Advanced

Services

そのうち設定することになりそうなのは NFS, SSH, UPS あたりを触ることになりそう

System Settings / Services

Shell

Shell です。たいていのことはこれでできそう

System Settings / Shell

Alert Settings

単体でいくつかのサービスに通知できるようだ

System Settings / Alert Settings

自動設定バックアップ

これは TrueNAS Scale の機能ではないが、弊宅の TrueNAS は USB SSD (Not USBメモリー)で運用しているため突然 OS Disk が破損し文鎮化する可能性があるので、本記事の中で設定した Cloud Backup Task のバックアップ元にバックアップしてクラウドストレージにも転送しておく。もちろん暗号化されているので暗号化情報は確保が必須。

最後に(バックアップ方法)

最後に設定のバックアップ方法パスワードを含む全ての設定がダウンロードできる
これには、パスワードなどが含まれるので扱いは厳重にする必要がある。

System Settings / General

また、各 Pool の暗号化 Key もダウンロードする

暗号化 Key のダウンロード

参考情報

Home 共有にアクセスできない

SMB 共有で Use as Home Share: ■ を設定してしまうと、 TrueNAS の機能でホームディレクトリを作成されていしまい権限が崩れるのが原因。これがあるため Use as Home Share の使用を中止した。

SMB 共有で Use as Home Share を On にしているとユーザー作成時にホームディレクトリ欄が自動入力されてしまいうまく行かなかったことと、ユーザー名で切られると一覧表示にした場合の表示順が(1番上など)変更できないため使わない方が利便が良かった。

Use as Home Share: ■

Use as Home Share: □

builtin_users, builtin_administrators

Permissions に勝手に builtin_users, builtin_administrators グループが追加される
TrueNAS Scale 23.10 では Users の設定で Samba Authentication: ■ (デフォルト) を設定してユーザーを作成すると自動的に Auxiliary Groups に追加されるようです。

Datasets の方を Shell で確認すると権限に builtin_users, builtin_administrators が含まれてないので SMB のみに影響する?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
root@ts664-01[/mnt/DataVol1/Home]# getfacl .
# file: .
# owner: root
# group: root
user::rwx
group::rwx
other::---

root@ts664-01[/mnt/DataVol1/Home]# getfacl naa0yama 
# file: naa0yama
# owner: naa0yama
# group: naa0yama
user::rwx
group::rwx
other::---
Built with Hugo
テーマ StackJimmy によって設計されています。