😽

Ubuntuでopen-iscsi(2.0.874 @raspberry pi 4 / ubuntu 20.04)

2021/04/30に公開

経緯

USBで外付けHDDを繋げても良かったのだけど、バックアップの手間削減とNASを活用するためにiSCSIで接続することに。

インストール

aptより

sudo apt update
sudo apt install open-iscsi

設定

まずは、使用例を検索しつつ、本家を読む。

メインの設定ファイルは

/etc/iscsi/iscsid.conf

ターゲットの探索などは

sudo iscsiadm -m

に続くコマンドを投入していく模様。

流れとしては、

  1. ターゲットを探索して登録。
  2. ターゲットにログイン。osがデバイスとして認識。
  3. パーティション設定。
  4. デバイスをマウント。
  5. 自動マウント設定。

1. ターゲット探索・登録

使用するコマンド

iscsiadm -m discoverydb
# 主なオプション
  --type=[type] --interface=[iface…] --portal=[ip:port] \
  --op=[op]=[NEW | UPDATE | DELETE | NONPERSISTENT] \
  --discover

実際のコマンド例

iscsiadm -m discoverydb -t st -p 10.55.61.110:3260 --discover
# -t == --type
# st == sendtargets
# -p == --portal

# 見つかったtargetの一覧が表示され、目的のtargetが見つかればOK
 10.55.61.110::3260,1 iqn.2004-04.com.test:target01.38f135

これで見つけたtargetが全て登録される。

この時点で、/etc/iscsi/iscsid.confを基にしたターゲット個別の設定ファイルが

/etc/iscsi/nodes/iqn.2004-04.com.test:target01.38f135/10.55.61.110,3260,1/default

に生成される。
このファイルは、iscsiadm -m discoverydb コマンドで更新されてしまうので、直接は弄らない方が良い。

余計なものは、以下で消去。
(iscsi.serviceのExecStartは、iscsiadm -m node --loginall=automatic となっており、node.startup = automaticが指定されている全てのターゲットに接続しにいく。)

sudo iscsiadm -m node -T iqn.2004-04.com.test:target01.38f135 --op=delete
# -T == --targetname

もし、ポータルにも認証が必要な場合は、以下を事前にコメントアウトして設定。

/etc/iscsi/iscsid.conf
#discovery.sendtargets.auth.authmethod = CHAP
#discovery.sendtargets.auth.username = username
#discovery.sendtargets.auth.password = password
#discovery.sendtargets.auth.username_in = username_in
#discovery.sendtargets.auth.password_in = password_in

2. ターゲットにログイン

sudo iscsiadm -m node -T iqn.2004-04.com.test:target01.38f135 -l
# -l == --login
>> Logging in to [iface: default, target: iqn.2004-04.com.test:target01.38f135, portal: 10.55.61.110,3260]
>> Login to [iface: default, target: iqn.2004-04.com.test:target01.38f135, portal: 10.55.61.110,3260] successful.

# 登録した全てにログインする場合
sudo iscsiadm -m node -l

ログアウトするときは、

sudo iscsiadm -m node -T iqn.2004-04.com.test:target01.38f135 --logout 

3. パーティション設定

/dev/sda や /dev/sdb にてデバイスが認識されるので、パーティションを切ってフォーマット。

例えば

sudo parted --script /dev/sdb "mklabel gpt"
sudo parted --script /dev/sdb "mkpart primary 0% 100%"
sudo mkfs.ext4 /dev/sdb1

4. デバイスをマウント

マウントする。例えば、

sudo mkdir /mnt/iscsi/target01
sudo mount /dev/sda /mnt/iscsi/target01

5. ブート処理設定

iscsi.service起動時の自動接続

設定ファイル(iscsid.conf or 個別設定)で

- # node.startup = automatic
+ node.startup = automatic

- node.startup = manual
+ # node.startup = manual

自動マウント

/etc/fstab

を編集。

/etc/fstab
UUID=ba4c492d-7fcc-40e6-a39a-b5532ff13357   /mnt/iscsi/target01    ext4    _netdev 0   0

オプションに _netdev を指定すると、ネットワークが接続されるまでマウントを遅延してくれる。

mount オプション詳細:

因みに、UUID確認方法は

sudo blkid /dev/sda1

その他

  • イニシエーターのIQN名
cat /etc/iscsi/initiatorname.iscsi
  • 登録されているターゲット一覧
sudo iscsiadm -m node
  • セッション(ターゲットとの接続)一覧
sudo iscsiadm -m session -P 3

マウントオプションの挙動

  • x-systemd.automountを付けると、何処かからmountリクエストがあるまでmountが保留される。
  • _netdevだけの場合は、iscsiのloginが実行された直後にmountが実行される。

_netdev,x-systemd.automount,x-systemd.device-timeout=20

/var/log/syslog
12:58:34 ubuntu systemd[1]: Listening on Open-iSCSI iscsid Socket.
12:58:34 ubuntu systemd[1]: Starting iSCSI initiator daemon (iscsid)...
12:58:34 ubuntu iscsid: iSCSI logger with pid=1789 started!
12:58:35 ubuntu systemd[1]: iscsid.service: Failed to parse PID from file /run/iscsid.pid: Invalid argument
12:58:35 ubuntu systemd[1]: Started iSCSI initiator daemon (iscsid).
12:58:35 ubuntu kernel: [   17.397665] iscsi: registered transport (tcp)
12:58:35 ubuntu iscsid: iSCSI daemon with pid=1790 started!
12:58:35 ubuntu iscsid: cannot make a connection to 10.55.61.110:3260 (-1,101)
12:58:38 ubuntu iscsid: cannot make a connection to 10.55.61.110:3260 (-1,101)
12:59:09 ubuntu iscsiadm[1768]: Logging in to [iface: default, target: iqn.2004-04.com.test:target01.38f135, portal: 10.55.61.110,3260] (multiple)
12:59:09 ubuntu iscsiadm[1768]: Login to [iface: default, target: iqn.2004-04.com.test:target01.38f135, portal: 10.55.61.110,3260] successful.
12:59:10 ubuntu iscsid: Connection1:0 to [target: iqn.2004-04.com.test:target01.38f135, portal: 10.55.61.110,3260] through [iface: default] is operational now

# ここで zsh から /mnt/iscsi/以下 にcompletionの探索をかける
13:01:47 ubuntu systemd[1]: mnt-iscsi-target01.automount: Got automount request for /mnt/iscsi/target01, triggered by 2169 (zsh)
13:01:47 ubuntu systemd[1]: Mounting /mnt/iscsi/target01...
13:01:47 ubuntu systemd[1]: Mounted /mnt/iscsi/target01.

_netdev

/var/log/syslog
12:48:36 ubuntu systemd[1]: Listening on Open-iSCSI iscsid Socket.
12:48:36 ubuntu systemd[1]: Starting iSCSI initiator daemon (iscsid)...
12:48:36 ubuntu iscsid: iSCSI logger with pid=1786 started!
12:48:37 ubuntu systemd[1]: iscsid.service: Failed to parse PID from file /run/iscsid.pid: Invalid argument
12:48:37 ubuntu systemd[1]: Started iSCSI initiator daemon (iscsid).
12:48:37 ubuntu kernel: [   17.417340] iscsi: registered transport (tcp)
12:48:37 ubuntu iscsid: iSCSI daemon with pid=1787 started!
12:48:37 ubuntu iscsid: cannot make a connection to 10.55.61.110:3260 (-1,101)
12:48:40 ubuntu iscsid: cannot make a connection to 10.55.61.110:3260 (-1,101)
12:49:14 ubuntu iscsiadm[1765]: Logging in to [iface: default, target: iqn.2004-04.com.test:target01.38f135, portal: 10.55.61.110,3260] (multiple)
12:49:14 ubuntu iscsiadm[1765]: Login to [iface: default, target: iqn.2004-04.com.test:target01.38f135, portal: 10.55.61.110,3260] successful.
12:49:15 ubuntu systemd[1]: Mounting /mnt/iscsi/target01...
12:49:15 ubuntu iscsid: Connection1:0 to [target: iqn.2004-04.com.test:target01.38f135, portal: 10.55.61.110,3260] through [iface: default] is operational now
12:49:15 ubuntu systemd[1]: Mounted /mnt/iscsi/target01.

lvm2-monitor がシャットダウンでスタックする問題

LVMは使っていないので、取り合えず

sudo systemctl disable lvm2-monitor.service

参考

GitHubで編集を提案

Discussion