ArchLinux インストール覚書より始めたArchLinuxプロジェクト。前回のも一つ・ArchLinux インストール覚書では手動でiSCSIデバイスをマウントできたものの、起動時に自動マウントする事が出来ませんでした。色々やってみて成功したので、その手順と知識をまとめました。
インストール手順としてはも一つ・ArchLinux インストール覚書の続きになります。
iSCSIイニシエータ
概要
iSCSIストレージを使えるようにする手順の概要は下記の通り。
- iSCSIターゲットを発見する。
- iSCSIターゲットにログイン。するとHDDデバイスとして認識される。
- 認識されたHDDデバイスをマウント。
iSCSIターゲットの発見
手動で操作するならDNS登録してあるマシン名を指定しても良いです。しかし起動時の自動マウントでは、マシン名だと失敗するようです。その場合はIPアドレスを直接指定しましょう。例えばIPアドレスが 192.168.0.3 だったら:
# iscsiadm -m discovery -t sendtargets -p 192.168.0.3
192.168.0.3:3260,-1 iqn.2005-10.org.freenas.ctl:iscsi0
この時の指定がデータベースと呼ばれる場所に登録されます。データベースの正体は /etc/iscsi/send_targets
ディレクトリです。
# find /etc/iscsi/send_targets -type f -ls
37660 4 -rw------- 1 root root 544 Apr 20 22:23 /etc/iscsi/send_targets/192.168.0.3,3260/st_config
# cat /etc/iscsi/send_targets/192.168.0.3,3260/st_config
# BEGIN RECORD 2.0-874
discovery.startup = manual
discovery.type = sendtargets
discovery.sendtargets.address = 192.168.0.3
discovery.sendtargets.port = 3260
discovery.sendtargets.auth.authmethod = None
discovery.sendtargets.timeo.login_timeout = 15
discovery.sendtargets.use_discoveryd = No
discovery.sendtargets.discoveryd_poll_inval = 30
discovery.sendtargets.reopen_max = 5
discovery.sendtargets.timeo.auth_timeout = 45
discovery.sendtargets.timeo.active_timeout = 30
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
# END RECORD
データベースから削除するコマンドは下記の通り。
# iscsiadm -m discovery -o delete -p 192.168.0.3
# ls -a /etc/iscsi/send_targets
. ..
また、この操作で発見されたノードもデータベースに登録されます。このデータベースの正体は /etc/iscsi/nodes
ディレクトリです。
# find /etc/iscsi/nodes -type f -ls
37662 4 -rw------- 1 root root 2070 Apr 20 22:23 /etc/iscsi/nodes/iqn.2005-10.org.freenas.ctl:iscsi0/192.168.0.3,3260
データベースに登録されたノードは次のコマンドで確認できます。
# iscsiadm -m node
192.168.0.3:3260,-1 iqn.2005-10.org.freenas.ctl:iscsi0
データベースから削除するコマンドは下記の通り。
# iscsiadm -m node -o delete
# iscsiadm -m node
iscsiadm: No records found
# ls -a /etc/iscsi/nodes
. ..
iSCSIターゲットにログイン
iSCSIターゲットを発見してデータベースに登録したら、ログインします。
# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2005-10.org.freenas.ctl:iscsi0, portal: 192.168.0.3,3260] (multiple)
Login to [iface: default, target: iqn.2005-10.org.freenas.ctl:iscsi0, portal: 192.168.0.3,3260] successful.
ログインに成功したら、次のコマンドで確認できます。
# iscsiadm -m session
tcp: [3] 192.168.0.3:3260,2 iqn.2005-10.org.freenas.ctl:iscsi0 (non-flash)
ログアウトは次の通り。
# iscsiadm -m node --logout
Logging out of session [sid: 3, target: iqn.2005-10.org.freenas.ctl:iscsi0, portal: 192.168.0.3,3260]
Logout of [sid: 3, target: iqn.2005-10.org.freenas.ctl:iscsi0, portal: 192.168.0.3,3260] successful.
# iscsiadm -m session
iscsiadm: No active sessions.
マウント
/etc/fstab
を設定してあれば、ログインすると同時にマウントされるようです。
# mount | grep iscsi
/dev/sdc on /iscsi type ext4 (rw,noatime,nodelalloc,nobarrier,errors=remount-ro,stripe=256,data=journal,_netdev)
# ls /iscsi
lost+found test1
アンマウントは普通のコマンドで。
# umount /iscsi
# ls -a /iscsi
. ..
再マウントも普通のコマンドで。
# mount /iscsi
# ls /iscsi
lost+found test1
マシン起動時の自動マウント
systemdのserviceを、自分で作りました。上述のログインするだけのものです。
iSCSIログインserviceを作成
# vi /etc/systemd/system/login-iscsi.service
# cat /etc/systemd/system/login-iscsi.service
[Unit]
Description=login iSCSI node
After=open-iscsi.service
[Service]
ExecStart=/usr/bin/iscsiadm -m node --login
Type=oneshot
[Install]
WantedBy=multi-user.target
動作を確認します。
# systemctl start login-iscsi.service
# systemctl status login-iscsi.service
* login-iscsi.service - login iSCSI node
Loaded: loaded (/etc/systemd/system/login-iscsi.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Apr 20 23:18:23 HostName systemd[1]: Starting login iSCSI node...
Apr 20 23:18:24 HostName iscsiadm[680]: Logging in to [iface: default, target: iqn.2005-10.org.freenas.ctl:iscsi0, portal: 192.168.0.3,3260] (multiple)
Apr 20 23:18:24 HostName iscsiadm[680]: Login to [iface: default, target: iqn.2005-10.org.freenas.ctl:iscsi0, portal: 192.168.0.3,3260] successful.
Apr 20 23:18:24 HostName systemd[1]: Started login iSCSI node.
マシン再起動
# systemctl enable login-iscsi.service
Created symlink /etc/systemd/system/multi-user.target.wants/login-iscsi.service -> /etc/systemd/system/login-iscsi.service.
# reboot
起動後に確認。
# systemctl status login-iscsi.service
* login-iscsi.service - login iSCSI node
Loaded: loaded (/etc/systemd/system/login-iscsi.service; disabled; vendor preset: disabled)
Active: inactive (dead) since Thu 2017-04-20 23:27:46 JST; 42s ago
Process: 264 ExecStart=/usr/bin/iscsiadm -m node --login (code=exited, status=0/SUCCESS)
Main PID: 264 (code=exited, status=0/SUCCESS)
Apr 20 23:27:40 HostName systemd[1]: Starting login iSCSI node...
Apr 20 23:27:46 HostName iscsiadm[264]: Logging in to [iface: default, target: iqn.2005-10.org.freenas.ctl:iscsi0, portal: 192.168.0.3,3260] (multiple)
Apr 20 23:27:46 HostName iscsiadm[264]: Login to [iface: default, target: iqn.2005-10.org.freenas.ctl:iscsi0, portal: 192.168.0.3,3260] successful.
Apr 20 23:27:46 HostName systemd[1]: Started login iSCSI node.
# ls /iscsi
lost+found test1
やった