概述
Open-iSCSI 是做网络分布式存储的常用的软件,搞清楚一些基础概念对安装和运维分布式网络存储是很有帮助的。
配置文件
1
2
3
4
5
6
7
8
|
# lsmod | grep iscsi -i
scsi_transport_iscsi 99909 1
yum install iscsi-initiator-utils
# 这个文件包含host的initiator IQN,在很多企业级存储上都要用到这个,否则无法访问存储上的资源。
# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:88e28dc61d9
# 这个文件包含open-iscsi的配置,下面会提到一些个人经常遇到的一些设置
cat /etc/iscsi/iscsid.conf
|
iscsiadm
iscsiadm 使用基本分3个步骤: 发现(discovery),登录(login),扫描(rescan)。关于 iscsiadm 的使用问题,请通过 man iscsiadm
参考手册是最方便的。其中 -m
是经常会出现的选项。
1
2
3
|
-m, --mode op
specify the mode. op must be one of discovery, discoverydb, node, fw, host iface or session.
If no other options are specified: for discovery, discoverydb and node, all of their respective records are displayed; for session, all active sessions and connections are displayed; for fw, all boot firmware values are displayed; for host, all iSCSI hosts are displayed; and for iface, all ifaces setup in /var/lib/iscsi/ifaces are displayed.
|
1
2
3
4
5
6
|
# iscsiadm -m session
tcp: [1] 10.244.4.5:3260,1 iqn.2019-10.io.longhorn:pvc-6aa192bc-1b55-44f2-83b7-0645463afbf4 (non-flash)
# iscsiadm -m discovery
10.244.4.5:3260 via sendtargets
# iscsiadm -m node
10.244.4.5:3260,1 iqn.2019-10.io.longhorn:pvc-6aa192bc-1b55-44f2-83b7-0645463afbf4
|
在使用 iscsiadm
的过程中有两个名词要注意下:
- target portal: 格式一般是
IP:PORT
,比如192.168.183.129:3260
- target IQN: 指服务器端的iqn-打头的一串字符iqn.2001-04.com.example:storage.lun2
Discovery
discovery 只要知道 storage 上的 target portal 就可以发现所有暴露的 portal 和 iqn。
1
2
3
4
5
|
iscsiadm -m discovery -t sendtargets -p 192.168.183.129
192.168.183.129:3260,1 iqn.2001-04.com.example:storage.lun2
192.168.183.129:3260,1 iqn.2001-04.com.example:storage.lun1
# raw use
iscsiadm -m discovery -t sendtargets -p 10.254.4.212
|
Login
在第一步中发现的 target 都会保存在本地的数据库中,可以用 iscsiadm -m node
看到。
如果你要登录第一步中所有的 portal,可以直接用下面的命令一键登录。
1
2
3
4
5
|
# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2001-04.com.example:storage.lun2, portal: 192.168.183.129,3260] (multiple)
Logging in to [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.183.129,3260] (multiple)
Login to [iface: default, target: iqn.2001-04.com.example:storage.lun2, portal: 192.168.183.129,3260] successful.
Login to [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.183.129,3260] successful.
|
登录特定的 target。
1
2
3
4
5
|
# iscsiadm -m node -T iqn.2001-04.com.example:storage.lun1 -p 192.168.183.129:3260 --login
Logging in to [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.183.129,3260] (multiple)
Login to [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.183.129,3260] successful.
# raw use测试
iscsiadm -m node -T iqn.2019-10.io.longhorn:pvc-f5de2608-ce4e-4cc6-8aca-dbdab19fdeba -p 10.254.4.212:3260 --login
|
查看登录的 session。
1
2
|
# iscsiadm -m session
tcp: [3] 192.168.183.129:3260,1 iqn.2001-04.com.example:storage.lun1 (non-flash)
|
注意,在默认配置下,登录的 session,节点重启是不会再次登录的,如果要想登录的 session 自动登录,一种方式是,前面提到的设置 node.start = automatic
。
设置 session 自动登录。
1
2
3
4
|
# iscsiadm -m node -T iqn.2001-04.com.example:storage.lun2 -p 192.168.183.129:3260 --op update -n node.startup -v automatic
# 查看session的设置
# iscsiadm -m node -T iqn.2001-04.com.example:storage.lun2 -p 192.168.183.129:3260 | grep node.startup
node.startup = automatic
|
Rescan
一旦登录成功,所有分配给当前主机的LUN都可以看到了,但有时,新分配的LUN,LUN的信息发生变化后,主要不能立即看到,这样就需要rescan了 --rescan
。
扫描所有登录的target/session:
1
2
|
# iscsiadm -m session --rescan
Rescanning session [sid: 3, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.183.129,3260]
|
也可以这样,效果跟上面的 session 是一样的:
1
2
|
# iscsiadm -m node --rescan
Rescanning session [sid: 3, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.183.129,3260]
|
扫描单个 session:
1
2
3
4
|
# 可以通过session id
# iscsiadm -m session
tcp: [3] 192.168.183.129:3260,1 iqn.2001-04.com.example:storage.lun1 (non-flash)
tcp: [4] 192.168.183.129:3260,1 iqn.2001-04.com.example:storage.lun2 (non-flash)
|
上面的 [3], [4]都是session id,直接使用即可:
1
2
|
# iscsiadm -m session --sid 3 --rescan
Rescanning session [sid: 3, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.183.129,3260]
|
试了下,不可以通过 target 和 iqn 登录,不知道是 bug 还是参数问题:
1
2
3
4
|
# sudo iscsiadm -m node -T iqn.2001-04.com.example:storage.lun1 -p 192.168.183.129:3260 --rescan
Rescanning session [sid: 3, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.183.129,3260]
iscsiadm: invalid error code 65280
iscsiadm: Could not execute operation on all sessions: (null)
|
Disk
iSCSI 连接的 disk 可以通过查询路径 /dev/disk/by-path/
下的链接:
1
2
3
4
5
6
7
8
9
|
# ls -l /dev/disk/by-path/
total 0
lrwxrwxrwx 1 root root 9 Jun 3 03:01 ip-192.168.183.129:3260-iscsi-iqn.2001-04.com.example:storage.lun1-lun-1 -> ../../sdc
lrwxrwxrwx 1 root root 9 Jun 3 03:08 ip-192.168.183.129:3260-iscsi-iqn.2001-04.com.example:storage.lun2-lun-2 -> ../../sdd
lrwxrwxrwx 1 root root 9 Jun 3 01:26 pci-0000:00:10.0-scsi-0:0:0:0 -> ../../sda
lrwxrwxrwx 1 root root 10 Jun 3 01:26 pci-0000:00:10.0-scsi-0:0:0:0-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Jun 3 01:26 pci-0000:00:10.0-scsi-0:0:0:0-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Jun 3 01:26 pci-0000:00:10.0-scsi-0:0:0:0-part5 -> ../../sda5
lrwxrwxrwx 1 root root 9 Jun 3 01:26 pci-0000:00:10.0-scsi-0:0:1:0 -> ../../sdb
|
可以看到,在我的测试中,连接的两个 target 分别暴露了一个 LUN 给 host,lun1 和 lun2,对应的 host 上的两个 device 是 /dev/sdc
和 /dev/sdd
。
也可以通过 fdisk -l
查看disk:
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
|
# fdisk -l
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcaf795e0
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 80383999 80381952 38.3G 83 Linux
/dev/sda2 80386046 83884031 3497986 1.7G 5 Extended
/dev/sda5 80386048 83884031 3497984 1.7G 82 Linux swap / Solaris
Disk /dev/sdc: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/149455400000000003592265eae69d00a6e8560cd2833744e: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdd: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/149455400000000005277c9d1f32625c43968336de76fc205: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
|
需要注意的是/dev/mapper/***
是我安装了multipath-tools后生成的device
参考资料
- 记一次Longhorn组件重启导致pv无法正常挂载
- Longhorn企业级云原生容器分布式存储-备份与恢复
警告
本文最后更新于 2022年9月10日,文中内容可能已过时,请谨慎参考。