TrueNAS で作成した zvol を iSCSI を使って Ubuntu でマウントする手順
忘れそうなのでメモ
iSCSI について
ちょっと調べただけなので, 間違いある可能性あり
iSCSI は, smb や nfs のようなファイル共有と異なり, ディスクを丸ごとマウントする.
NAS 側では zvol という大きなファイル? しか見えず, どのようなファイルが格納されているかは分からない (何のファイルシステムかも分からない).
クライアント側でディスクをマウントして, ファイルシステムを作成する.
メリット
- ファイル共有より高パフォーマンス
- smb や nfs などのファイル共有で発生する面倒なエラー (シンボリックリンクやパーミッション) が出なくなる.
→ クライアント側からは物理ディスクと同じように見えるため.
デメリット
- 一度に複数のクライアントでマウントして使えない
参考文献
実行環境
-
iSCSI ターゲット
- TrueNAS (サーバー) 側
- hostname:
truenas-primary
-
iSCSI イニシエーター
- Ubuntu (クライアント) 側
- hostname:
ubuntu-workstation
手順
TrueNAS 側
- zvol を作成する.
- Shares > iSCSI で iSCSI の設定を行う.
Ubuntu 側
(参考文献のいくつかのコマンドはスキップ)
# ターゲットを discovery する
$ sudo iscsiadm -m discovery -t sendtargets -p truenas-primary.local
# discovery したターゲットにログインする
$ sudo iscsiadm -m node --login -p truenas-primary.local
# システム起動時に自動ログインさせる
$ sudo iscsiadm -m node -p truenas-primary.local -o update -n node.startup -v automatic
# パーティション確認
$ cat /proc/partitions
major minor #blocks name
...
8 0 4294967360 sda
8 1 16367 sda1
8 2 4294949888 sda2
8 16 1073741824 sdb
# ↑ sda の方は "games", sdb の方は "repos"
# GPT 形式でフォーマット
$ sudo parted --script /dev/sdb "mklabel gpt"
# パーティション作成
$ sudo parted --script /dev/sdb "mkpart primary 0% 100%"
# ext4 形式でフォーマット
$ sudo mkfs.ext4 /dev/sdb1
# マウント
$ sudo mount /dev/sdb1 /mnt/repos
# マウント確認
$ df -hT
...
/dev/sdb1 ext4 1007G 139G 818G 15% /mnt/repos