研发环境,当服务器本地磁盘存储不足时,可通过挂载远程iscsi 设备作为块设备,为服务器做存储扩容
准备
假设环境已经安装好了iscs initiator 客户端工具 查看客户端配置: cat /etc/iscsi/initiatorname.iscsi
操作记录
1.查看当前环境的iscsi 连接信息:
iscsiadm -m node
返回:
10.253.167.1:3260,1 iqn.2023-08.com.xxx.iscsi.414.1009dfab2e90e56d
iscsiadm -m session
返回:
tcp: [1] 10.253.167.3:3260,1 iqn.2023-08.com.xxx.iscsi.414.1009dfab2e90e56d (non-flash)
当环境里面已经有iscsi 链接时,
/var/lib/iscsi/nodes/ 目录下会缓存记录连接信息,这样下次关机重启后能自动连接
/var/lib/iscsi/send_targets/ 目录会缓存已经发现的target 目标信息
/var/lib/iscsi/ifaces
2. 重新发现连接目标:
iscsiadm -m discovery -t st -p 10.253.167.3
-m discovery //侦测target
-t sendtargets //通过iscsi协议返回targets 信息
-p IP:port //指定target的IP和port,不写port的话,默认为3260
(st是sendtargets的缩写, -p 后跟着server地址,端口不写默认3260)
会返回全部可用的target (一个target目标中,可能有多个lun):
10.253.167.3:3260,1 iqn.2023-08.com.xxx.iscsi.414.1009dfab2e90e56d
完成discovery之后, 执行 iscsiadm -m node
可以发现有新的记录生成, 对应的本地持久化文件咋/var/lib/iscsi/nodes下
3.指定target和iscsi server,执行target login/logout:
iscsiadm -m node -T iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d -p 10.253.167.3:3260 -l
(-T 跟着discovery 发现的目标target, -l 是--login 的缩写)
执行完login, 再执行iscsiadm -m session 发现已经有连接记录,此时环境里全部可用的关联到10.253.167.3特定target会做一次登录。
iscsiadm -m node -T iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d -p 10.253.167.3:3260 -u
(-T 跟着discovery 发现的目标target, -u 是--logout 的缩写)
logout后,iscsiadm -m session 可以发现对应的服务器连接session已经不存在了
4.不指定target,仅指定iscsi server node 做login /logout
login:
iscsiadm -m node -p 10.253.167.3:3260 -l
执行完login, 再执行iscsiadm -m session 发现已经有连接记录,此时环境里全部可用的关联到10.253.167.3的全部target都会做一次登录
logout:
iscsiadm -m node -p 10.253.167.3:3260 -u
执行了logout后, iscsiadm -m session发现连接session都没有了,
但是iscsiadm -m node还是可以看到缓存的连接配置信息,如果彻底清空,就清空/var/lib/iscsi/nodes/目录下的文件
当iscsiadm -m node 发现无记录后,需要重新第 discover 发现target
5.不指定node,target, 对全部缓存node,作login / logout:
iscsiadm -m node -l
iscsiadm -m node -L all
iscsiadm -m node -u
iscsiadm -m node -U all
也可以是使用 -U all / -L all
The correct command is iscsiadm -m node --loginall=all. This command logs in to all available iSCSI targets. The -m node option specifies that we are performing operations on iSCSI nodes. The --loginall=all option specifies that we want to log in to all available targets.
The iscsiadm -m node -U command logs out of all available iSCSI targets. The -m node option specifies that we are performing operations on iSCSI nodes. The -U option specifies that we want to log out of all targets.
6.查看iscsi 磁盘挂载情况
ll /dev/disk/by-path/
total 0
lrwxrwxrwx. 1 root root 9 Aug 30 05:09 ip-10.253.167.3:3260-iscsi-iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d-lun-0 -> ../../sde
lrwxrwxrwx. 1 root root 9 Aug 30 05:09 ip-10.253.167.3:3260-iscsi-iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d-lun-1 -> ../../sdf
lrwxrwxrwx. 1 root root 9 Aug 30 05:09 ip-10.253.167.3:3260-iscsi-iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d-lun-2 -> ../../sdg
这里实验的target下包含3个lun,所以login后, by-path目录下多了3个块设备软连接,分别链接到/dev/sde, /dev/sdf, /dev/sdg , 在未做多路径的情况下,可以直接使用这些块设备
同时可以通过/sys/block目录查看更多块关联信息:
ll /sys/block/sde
lrwxrwxrwx. 1 root root 0 Aug 30 05:09 /sys/block/sde -> ../devices/platform/host33/session16/target33:0:0/33:0:0:0/block/sde
realpath /sys/block/sde
/sys/devices/platform/host33/session16/target33:0:0/33:0:0:0/block/sde
假设开启了多路径multipath服务,可以通过
ll /dev/dm-xx/slaves 查看实际关联的块设备
7.挂载的块设备扩容
先执行lscsi 查看到块设备的id 信息,这里假设对/dev/sde做扩容:
lsscsi
[0:0:0:0] disk VMware Virtual disk 2.0 /dev/sda
[0:0:3:0] disk VMware Virtual disk 2.0 /dev/sdb
[1:0:0:0] disk ATA VMware Virtual I 0001 /dev/sdd
[1:0:1:0] disk ATA VMware Virtual I 0001 /dev/sdc
[3:0:0:0] cd/dvd NECVMWar VMware SATA CD00 1.00 /dev/sr0
[33:0:0:0] disk CECLOUD CeaStor 1.0 /dev/sde
[33:0:0:1] disk CECLOUD CeaStor 1.0 /dev/sdf
[33:0:0:2] disk CECLOUD CeaStor 1.0 /dev/sdg
出发块设备rescan:
echo "---" > /sys/class/scsi_device/33\:0\:0\:0/device/rescan
8.为iscsi 数据连接指定网卡
设想一个场景,一个节点上有两个网卡,一个用于管理网,一个用于业务网(防止业务网的流量过大影响管理服务,所以进行流量隔离)
假设我们想让挂载的iscsi指定使用业务网网卡去执行数据读写传输,可以借助iscsi 的iface能力来做。
8.1 查看当前session使用的iface 信息
iscsiadm -m session -P 1
8.2 iface操作
创建一个iface 对象 iscsi_ens34
iscsiadm -m iface -I iscsi_ens34 --op=new
iface 对象关联到实际网卡ens34:
iscsiadm -m iface -I iscsi_ens34 --op=update -n iface.net_ifacename -v ens34
此时执行: iscsiadm -m iface 发现多了一条记录,对应本地持久化在如下目录/var/lib/iscsi/ifaces/:
ll /var/lib/iscsi/ifaces/
-rw-------. 1 root root 468 Aug 30 03:27 iscsi_ens34
指定网卡进行discovery:
iscsiadm -m discovery -t st -p 10.253.167.1 -I iscsi_ens34
完成后,会缓存对应的信息:
/var/lib/iscsi/nodes/iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d/10.253.167.1,3260,1/iscsi_ens34
注意:
1. 假设此时再次换网卡执行:
iscsiadm -m discovery -t st -p 10.253.167.1 -I default
/var/lib/iscsi/nodes/iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d/10.253.167.1,3260,1/iscsi_ens34 目录会被删除
接着多出一条 /var/lib/iscsi/nodes/iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d/10.253.167.1,3260,1/default
仅当iscsi_ens34 之前有login过时,则原目录不会被删除,即缓存了两个网卡到目标的连接路线
2. 如果每次都保持多个网口出口,可以指定多个-I:
iscsiadm -m discovery -t st -p 10.253.167.1 -I default -I iscsi_ens34
返回多个连接:
10.253.167.1:3260,1 iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d
10.253.167.1:3260,1 iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d
指定iface,使用特定网卡login:
iscsiadm -m node -T iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d -p 10.253.167.3:3260 -I iscsi_ens34 -l
返回结果,可以看到提示是使用对应的iface进行登录:
Logging in to [iface: iscsi_ens34, target: iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d, portal: 10.253.167.3,3260]
Login to [iface: iscsi_ens34, target: iqn.2023-08.com.xsky:ceasphere-sds.iscsi.414.1009dfab2e90e56d, portal: 10.253.167.3,3260] successful.
9.重新扫描以及删除不可用node
参考:access.redhat.com/documentati…
fio测试记录:
顺序读:
fio -filename=/dev/dm-1 -name=test1 -ioengine=libaio -direct=1 -blocksize=4k -runtime=120 -rw=read -iodepth=32 -numjobs=1 -size=10G
read: IOPS=103k, BW=403MiB/s (423MB/s)(1024MiB/2541msec)
read: IOPS=103k, BW=402MiB/s (422MB/s)(10.0GiB/25448msec)
fio -filename=/dev/sdd -name=test1 -ioengine=libaio -direct=1 -blocksize=4k -runtime=120 -rw=read -iodepth=32 -numjobs=1 -size=10G
read: IOPS=110k, BW=430MiB/s (451MB/s)(10.0GiB/23831msec) sdd
随机读:
fio -filename=/dev/dm-1 -name=test1 -ioengine=libaio -direct=1 -blocksize=4k -runtime=120 -rw=randread -iodepth=32 -numjobs=1 -size=10G
read: IOPS=105k, BW=411MiB/s (431MB/s)(1024MiB/2492msec)
read: IOPS=104k, BW=407MiB/s (427MB/s)(10.0GiB/25134msec)
fio -filename=/dev/sdd -name=test1 -ioengine=libaio -direct=1 -blocksize=4k -runtime=120 -rw=randread -iodepth=32 -numjobs=1 -size=10G
read: IOPS=111k, BW=433MiB/s (454MB/s)(10.0GiB/23635msec)
顺序写:
fio -filename=/dev/dm-1 -name=test1 -ioengine=libaio -direct=1 -blocksize=4k -runtime=120 -rw=write -iodepth=32 -numjobs=1 -size=10G
write: IOPS=57.6k, BW=225MiB/s (236MB/s)(1024MiB/4550msec); 0 zone resets
write: IOPS=58.5k, BW=228MiB/s (239MB/s)(10.0GiB/44838msec); 0 zone resets
fio -filename=/dev/sdd -name=test1 -ioengine=libaio -direct=1 -blocksize=4k -runtime=120 -rw=write -iodepth=32 -numjobs=1 -size=10G
write: IOPS=55.3k, BW=216MiB/s (227MB/s)(10.0GiB/47401msec); 0 zone resets
随机写:
fio -filename=/dev/dm-1 -name=test1 -ioengine=libaio -direct=1 -blocksize=4k -runtime=120 -rw=randwrite -iodepth=32 -numjobs=1 -size=10G
write: IOPS=74.3k, BW=290MiB/s (304MB/s)(1024MiB/3530msec); 0 zone resets
write: IOPS=64.5k, BW=252MiB/s (264MB/s)(10.0GiB/40667msec); 0 zone resets
fio -filename=/dev/sdd -name=test1 -ioengine=libaio -direct=1 -blocksize=4k -runtime=120 -rw=randwrite -iodepth=32 -numjobs=1 -size=10G
write: IOPS=63.0k, BW=246MiB/s (258MB/s)(10.0GiB/41579msec); 0 zone resets
参考链接:
iscsiadm命令说明:linux.die.net/man/8/iscsi…
redhat官网文档: access.redhat.com/documentati…