Ubuntuでopen-iscsi(2.0.874 @raspberry pi 4 / ubuntu 20.04)
経緯
USBで外付けHDDを繋げても良かったのだけど、バックアップの手間削減とNASを活用するためにiSCSIで接続することに。
インストール
aptより
sudo apt update
sudo apt install open-iscsi
設定
まずは、使用例を検索しつつ、本家を読む。
メインの設定ファイルは
/etc/iscsi/iscsid.conf
ターゲットの探索などは
sudo iscsiadm -m
に続くコマンドを投入していく模様。
流れとしては、
- ターゲットを探索して登録。
- ターゲットにログイン。osがデバイスとして認識。
- パーティション設定。
- デバイスをマウント。
- 自動マウント設定。
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
もし、ポータルにも認証が必要な場合は、以下を事前にコメントアウトして設定。
#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
を編集。
UUID=ba4c492d-7fcc-40e6-a39a-b5532ff13357 /mnt/iscsi/target01 ext4 _netdev 0 0
オプションに _netdev を指定すると、ネットワークが接続されるまでマウントを遅延してくれる。
mount オプション詳細:
- http://manpages.ubuntu.com/manpages/focal/ja/man8/mount.8.html
- https://man.archlinux.org/man/systemd.mount.5.en
因みに、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
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
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
参考
-
本家:
-
ArchLinux Wiki:
https://wiki.archlinux.jp/index.php/Open-iSCSI -
Server-World:
https://www.server-world.info/query?os=Ubuntu_20.04&p=iscsi&f=3
Discussion