RH358访问基于块的网络存储–访问iSCSI存储
本章节介绍如何访问iSCSI存储。
RH358专栏地址:https://blog.csdn.net/qq_41765918/category_11532281.html
1. 配置 iSCSI initiator
在Red Hat Enterprise Linux中,iSCSI initiator通常是在软件中实现的。使用基于软件的iSCSI initiator需要连接到现有的以太网网络,有足够的带宽来承载存储流量。
注意:作为本节中介绍的软件实现的替代方案,可以使用在专用主机总线适配器(HBA)中包含所需协议的硬件initiators。这可以将以太网、TCP和iSCSI处理转移到硬件上,从而减少其他系统资源的负载。
系统准备
配置iSCSI客户端启动器需要安装iscsi-initiator-utis包,其中包含iscsi和iscsid服务,以及/etc/iscsi/iscsid.conf和/etc/iscsi/initiatorname.iscsi配置文件。
[root@host ~]# yum install iscsi-initiator-utils
作为iSCSI启动器,客户端需要自己唯一的IQN (iSCSI Qualified Name)。在安装iscsi-initiator-utils的过程中,该包会使用Red Hat的DNS域生成一个唯一的IQN,并将该IQN保存到/etc/iscsi/initiatorname.iscsi中。管理员通常将该文件中的IQN更改为他们的DNS域,除了适当的客户端名称字符串。
/etc/iscsi/iscsid.conf文件包含连接的targets的默认设置。这些设置包括iscsi超时时间、重试参数以及用于身份验证的用户名和密码。
安装包会自动配置iscsi和iscsid服务,以便启动器在系统启动时自动重新连接任何已经发现的targets。当修改启动器的配置文件时,请重新启动iscsid服务。
连接 iSCSI target
在连接和使用远端设备之前,首先需要发现target.。发现过程将目标信息和设置保存在/var/ib/iscsi/nodes/目录下,默认为/etc/iscsi/iscsid.conf。
使用如下命令发现远程目标:
[root@host ~]# iscsiadm -m discovery -t st -p portal_ip[:port]
192.168.0.10:3260,1 iqn.2014-06.com.example:disk1
192.168.0.10:3260,1 iqn.2014-06.com.example:disk2
192.168.0.10:3260,1 iqn.2014-06.com.example:target1
portal_ip为目标portal的IP地址。如果不指定端口参数,则使用默认端口3260。该命令返回可用目标器的iqn。
要使用列出的目标之一,请使用以下命令登录:
[root@host ~]# iscsiadm -m node -T iqn.2014-06.com.example:disk1 -p portal_ip[:port] -l
此时,系统会检测到一个新的SCSI块设备,就像它是一个本地连接的硬盘驱动器一样。您可以使用iscsiadm -m session -P 3命令识别新设备,该命令将在打印级别3显示当前iSCSI登录会话的信息。
[root@host ~]# iscsiadm -m session -P 3
iSCSI Transport Class version 2.0-870
version 6.2.0.877-0
Target: iqn.2014-06.com.example:disk1 (non-flash)
Current Portal: 192.168.0.10:3260,1
...output omitted...
Attached scsi disk sdc State: running
也可以查看 dmesg、tail /var/log/messages 或 ls -l /dev/disk/bypath/iscsi 命令的输出
登录过程在重新引导时是持久的。因此,块设备在启动后自动可用。
格式化iSCSI设备
如果发现的块设备已经有分区、文件系统或LVM卷,那么可以使用常用命令(如mount)访问这些数据。可以使用Isblk --fs命令检查设备来发现这样的结构。
[root@host ~]# lsblk --fs
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs f7614c41-2835-4125-bb13-50772dc2f30c /boot
├─sda2 swap 78a5f1eb-a593-4db3-b15a-f49042e182a2 [SWAP]
└─sda3 xsf ac2790c4-cfbb-409e-88a9-fe8c963fcd00 /
sdb LVM2_member 4ALe1y-oEXe-XLer-PjYW-n5ud-Ryko-XZZ2PM
├─dbdata-log ext4 bd566c1f-01a1-404d-8f01-9495004f327c /data/db/log
└─dbdata-data ext4 5640b4ae-5868-4bf5-8715-51fc18d8656b /data/db/data
sdc
其中,/dev/sda有三个分区,/dev/sdb是LVM的物理卷,/dev/sdc没有数据。
如果磁盘是空的,可以格式化它、创建分区或将它用作LVM物理卷。
当在/etc/fstab中的iSCSl目标上持久化挂载文件系统时,请确保遵循以下建议:
-
使用带有 --fs选项的lsblk命令来确定文件系统UUID,然后使用该UUID挂载文件系统。不要使用设备名(/dev/sd*),因为它会在boot和boot之间发生变化。设备的名称取决于iSCSl设备通过网络响应的顺序。如果您使用/etc/fstab中的设备名称,并且该名称在重新引导后更改,那么系统可能会将设备挂载在错误的挂载点下。
-
使用/etc/fstab中的_netdev挂载选项。因为iSCSl依赖于网络来访问远端设备,所以该选项确保系统不会尝试挂载文件系统,直到网络和启动器启动为止。
2. 断开与 target 的连接
如果需要停止使用iSCSI目标,请执行以下步骤。
-
确保目标提供的设备都没有在使用中。例如,卸载文件系统。
-
从/etc/fstab等位置删除对目标的所有持久化引用。
-
注销 iSCSI target。
[root@host ~]# iscsiadm -m node -T iqn.2014-06.com.example:disk1 -p 192.168.0.10:3260 -u
- 删除iSCSI目标器的本地记录,避免启动器在启动时自动登录该目标器。
[root@host ~]# iscsiadm -m node -T iqn.2014-06.com.example:disk1 -p 192.168.0.10:3260 -o delete
3. 课本练习
[student@workstation ~]$ lab iscsi-initiator start
在serverd配置iSCSl target。将使用servera的initiator连接到该target。
1. 安装iscsi-initiator-utils软件包。
[root@servera ~]# yum -y install iscsi-initiator-utils
2. 设置客户端initiator。
[root@servera ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2014-06.com.example:servera
[root@servera ~]# systemctl restart iscsid
3. 发现并登录配置的target。
[root@servera ~]# iscsiadm -m discovery -t st -p 172.25.250.13
172.25.250.13:3260,1 iqn.2014-06.com.example:serverd
[root@servera ~]# iscsiadm -m node -T iqn.2014-06.com.example:serverd -p 172.25.250.13 -l
Logging in to [iface: default, target: iqn.2014-06.com.example:serverd, portal:
172.25.250.13,3260]
Login to [iface: default, target: iqn.2014-06.com.example:serverd, portal:
172.25.250.13,3260] successful.
[root@servera ~]# iscsiadm -m session -P 3
iSCSI Transport Class version 2.0-870
version 6.2.0.877-0
Target: iqn.2014-06.com.example:serverd (non-flash)
Current Portal: 172.25.250.13:3260,1
...output omitted...
Attached scsi disk sda State: running
4. 请确认新块设备没有分区和文件系统。将设备格式化为XFS,然后将其配置为在引导时持久地挂载在/data上。
[root@servera ~]# lsblk --fs
sda
vda
└─vda1 xfs f7614c41-2835-4125-bb13-50772dc2f30c /
vdb
[root@servera ~]# mkfs.xfs /dev/sda
meta-data=/dev/sda isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@servera ~]# mkdir /data
[root@servera ~]# lsblk --fs /dev/sda
NAME FSTYPE LABEL UUID MOUNTPOINT
sda xfs d3da0d6a-a00f-4132-b539-5b26802ddcf5
[root@servera ~]# echo "UUID=d3da0d6a-a00f-4132-b539-5b26802ddcf5 /data xfs _netdev 0 0" >> /etc/fstab
[root@servera ~]# mount -a
[root@servera ~]# df /data
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda 5232640 69616 5163024 2% /data
5. 把实验清理干净。
卸载文件系统,注销iSCSI目标器,然后删除目标器的所有记录。
[root@servera ~]# umount /data
[root@servera ~]# cat /etc/fstab # 删除挂载/data 条目
UUID=f7614c41-2835-4125-bb13-50772dc2f30c / xfs defaults 0 0
[root@servera ~]# iscsiadm -m node -T iqn.2014-06.com.example:serverd -p 172.25.250.13 -u
Logging out of session [sid: 1, target: iqn.2014-06.com.example:serverd, portal: 172.25.250.13,3260]
Logout of [sid: 1, target: iqn.2014-06.com.example:serverd, portal: 172.25.250.13,3260] successful.
[root@servera ~]# iscsiadm -m node -T iqn.2014-06.com.example:serverd -p 172.25.250.13 -o delete
完成实验
[student@workstation ~]$ lab iscsi-initiator finish
总结
- 介绍如何配置 iSCSI initiator。
- 介绍如何连接和断开 iSCSI target。
- 若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。