金鱼哥RHCA回忆录:RH358访问基于块的网络存储--提供iSCSI存储

举报
金鱼哥 发表于 2022/05/17 17:45:26 2022/05/17
【摘要】 第十一章 访问基于块的网络存储--提供iSCSI存储

本章节介绍如何提供iSCSI存储。做为对基于块的网络存储的了解,还是需要进行学习。

🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质:CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥


1. 描述 iSCSI

iSCSI是基于TCP/IP的协议,用于在基于IP的网络上发送SCSl命令。它允许您将基于块的存储设备通过网络从服务器连接到客户端,这些设备的作用类似于普通硬盘驱动器或固态驱动器。作为存储区域网络(SAN)协议,iSCSI可以帮助您整合本地或远程数据中心中的存储设备。

由于共享网络上的带宽拥塞会导致性能下降,所以应该在电缆上实现独立于标准LAN流量的iSCSI。通常,iSCSI与专用的万兆以太网或更好的网络配对,以最大限度地提高性能。

SAN通信通常不加密,以最大限度地提高性能。从物理服务器到存储的电缆通常封闭在数据中心中,理想情况下不直接连接到LAN网络。为了广域网的安全,iSCSI管理员可以使用IPsec,一种保护IP网络流量的协议套件。


iSCSI关键术语的定义

iSCSl协议工作在 C/S 配置中。客户端系统配置启动器软件发送SCSI命令到远程服务器存储目标。在客户端系统上,iSCSI目标显示为本地SCSI磁盘,就像连接SCSI电缆或光纤通道交换结构的设备一样。

当使用iSCSI时,会提及一些术语,包括:

Initiator

一个iSCSl客户端,通常作为软件可用。还可以购买iSCSI主机总线适配器(hba)形式的硬件启动器。启动器必须有唯一的名称(参见IQN)。

Target

iSCSI服务器上的iSCSI存储资源。目标必须有唯一的名称(参见IQN)。每个目标提供一个或多个块设备,或逻辑单元。在大多数情况下,目标只提供一个设备。单个服务器可以提供多个targets。

IQN (iSCSI Qualified Name)

用于识别initiators和targets的唯一全球名称。IQN的格式如下:

iqn.YYYY-MM.com.reversed.domain:name_string

YYYY-MM:年和月。(例如,2020-06 表示 2020 年 6月。)

com.reversed.domain:域名反写。例如:www.example.com 写为 com.example.www

name_string:命名空间中的唯一字符串 (YYYYMM.com.reversed.domain,用于识别管理的特定目标,有时可省略)

Portal

每个 target 具有一个或多个 portal,即 initiator 可用来访问目标的 IP:Port 对

LUN(逻辑单元号)

表示由目标提供的块设备。每个 target提供一个或多个 LUN

ACL(访问控制列表)

验证 initiator 的 IQN 确定其能否访问 target

TPG(目标门户组)

TPG 是 target 的完整配置,包括Portal、LUN 和 ACL。几乎所有 target 都使用一个 TPG,但高级配置有时可能会定义多个 TPG


2. 准备系统以提供 iSCSI Target

  • 在 iSCSI 服务器上,targetcli 命令既提供命令行,也提供一个交互式 shell,可用来创建、删除和配置 iSCSI target

  • targetcli 命令将 target 整理为层级树,为在该树中进行导航,工具使用了熟悉的 Linux 命令,如 cd、ls 和 pwd

  • 它的shell还支持tab补全。

# 在iSCSl服务器上,首先安装targetcli。
[root@host ~]# yum install targetcli

# 启用target服务以在引导期间激活目标。
[root@host ~]# systemctl enable --now target

# 如果使用默认的防火墙配置,请打开iscsi-target服务以允许启动器访问目标器。这允许客户端访问端口3260/TCP。
[root@host ~]# firewall-cmd --permanent --add-service=iscsi-target
[root@host ~]# firewall-cmd --reload

3. 配置iSCSI target

当不带任何选项运行targetcli时,命令将进入交互模式。在下面的示例中,ls命令显示当前布局。

[root@host ~]# targetcli
targetcli shell version 2.1.fb49
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> ls
o- / ................................................................. [...]
o- backstores ...................................................... [...]
| o- block .......................................... [Storage Objects: 0]
| o- fileio ......................................... [Storage Objects: 0]
| o- pscsi .......................................... [Storage Objects: 0]
| o- ramdisk ........................................ [Storage Objects: 0]
o- iscsi .................................................... [Targets: 0]
o- loopback ................................................. [Targets: 0]
/>

下面的过程演示如何创建新target。

  • 创建后端存储(或backstore)对象。有几种后备存储器类型:

block:服务器中的块设备,如磁盘、磁盘分区或逻辑卷

fileio:本地文件系统中的普通文件。targetcli 使用该文件作为磁盘镜像(不推荐)

pscsi:物理 SCSI 设备,透传到连接到服务器的物理 SCSI 设备

ramdisk:内存中的磁盘设备,存储不会持久

要使用targetcli声明后端存储,请使用create命令。该命令的行为取决于在配置树中的当前位置。

例如,要为/dev/vdb存储设备创建基于块的后端存储,运行targetcli,切换到目录/backstores/block/,然后运行create命令。

/> cd /backstores/block
/backstores/block> create myblock1 /dev/vdb
Created block storage object myblock1 using /dev/vdb.

# 作为替代方法,您还可以在命令前面加上伪目录的路径。
/> /backstores/block create myblock1 /dev/vdb
Created block storage object myblock1 using /dev/vdb.

在这个位置中,create命令接受两个参数: 后端存储的名称和块设备的路径。

  • 为目标创建IQN。在/iscsi伪目录中,create命令创建一个IQN,使用选择的IQN名称作为其第一个参数
/> cd /iscsi
/iscsi> create iqn.2014-06.com.example:disk1
Created target iqn.2014-06.com.example:disk1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> ls
o- iscsi ...................................................... [Targets: 1]
o- iqn.2014-06.com.example:disk1 ............................... [TPGs: 1]
o- tpg1 ......................................... [no-gen-acls, no-auth]
o- acls .................................................... [ACLs: 0]
o- luns .................................................... [LUNs: 0]
o- portals .............................................. [Portals: 1]
o- 0.0.0.0:3260 ............................................... [OK]

注意:ls 命令在树中显示新的 IQN。targetcli 将该 IQN 的所有参数都分组到 /iscsi/iqn.2014-06.com.example:disk1 伪目录下。此外,create 会创建⼀个默认门户,该门户侦听所有网卡上的3260 端口

  • 创建LUN作为存储存储。这将为该门户上的特定存储设备设置SCSl地址。

在新目标IQN的伪目录下,在其目标门户组(通常为tpg1)的伪目录中,更改为lun伪目录。create命令将创建一个LUN,并以备份存储的路径作为参数来使用该LUN。

/> cd /iscsi/iqn.2014-06.com.example:disk1/tpg1/luns
/iscsi/iqn.20...sk1/tpg1/luns> create /backstores/block/myblock1
Created LUN 0.
  • 创建acl,允许客户端启动器访问目标器。更改目标TPG中的acl伪目录,并运行create命令。

在 RHEL 上,initiator 的 IQN 存储在/etc/iscsi/initiatorname.iscsi 中

/> cd /iscsi/iqn.2014-06.com.example:disk1/tpg1/acls
/iscsi/iqn.20...sk1/tpg1/acls> create iqn.1994-05.com.redhat:b3d05c75ec7
Created Node ACL for iqn.1994-05.com.redhat:b3d05c75ec7
Created mapped LUN 0.
  • 默认门户侦听iSCSl服务器上的所有网络接口。如果希望门户只侦听特定接口,请删除默认门户,然后创建一个新的门户。delete和create命令都以接口和端口的IP地址作为参数。
/> cd /iscsi/iqn.2014-06.com.example:disk1/tpg1/portals/
/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/iscsi/iqn.20.../tpg1/portals> create 192.168.0.10 3260
Using default IP port 3260
Created network portal 192.168.0.10:3260.
  • 保存配置。退出targetcli shell时,将保存在/etc/target/saveconfig.json文件中。
/> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
[root@host ~]#

当systemd在引导时启动target服务时,它使用该文件来配置目标。


4. 命令行模式下管理target

可以使用targetcli命令通过命令行模式执行一系列子命令。下面以targetcli创建后端存储对象、IQN、LUN、ACL和portal为例进行说明。此方法对于脚本目标配置很有用。

[root@host ~]# targetcli /backstores/block create myblock1 /dev/vdb
Created block storage object myblock1 using /dev/vdb.
[root@host ~]# targetcli /iscsi create iqn.2014-06.com.example:disk1
Created target iqn.2014-06.com.example:disk1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
[root@host ~]# targetcli /iscsi/iqn.2014-06.com.example:disk1/tpg1/luns \
> create /backstores/block/myblock1
Created LUN 0.
[root@host ~]# targetcli /iscsi/iqn.2014-06.com.example:disk1/tpg1/acls \
> create iqn.1994-05.com.redhat:b3d05c75ec7
Created Node ACL for iqn.1994-05.com.redhat:b3d05c75ec7
Created mapped LUN 0.
[root@host ~]# targetcli /iscsi/iqn.2014-06.com.example:disk1/tpg1/portals \
> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
[root@host ~]# targetcli /iscsi/iqn.2014-06.com.example:disk1/tpg1/portals \
> create 192.168.0.10 3260
Using default IP port 3260
Created network portal 172.25.250.10:3260.
[root@host ~]# targetcli saveconfig
Configuration saved to /etc/target/saveconfig.json

警告:targetcli的交互式使用不同,命令行模式不会自动将配置保存在/etc/target/saveconfig中。您必须显式地运行saveconfig子命令来保存配置。


5. 课本练习

[student@workstation ~]$ lab iscsi-target start

这个命令确保serverd上有第二块磁盘可用。将使用iSCSI将该磁盘从serverd提供给客户端


1. 识别服务器上的第二个磁盘。

[root@serverd ~]# lsblk --fs
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
vda                                                      
└─vda1 xfs          f7614c41-2835-4125-bb13-50772dc2f30c /
vdb  
# 注意,vdb磁盘没有分区,也没有文件系统。

2. 将服务器准备为iSCSI目标服务器。

为此,安装目标配置实用程序,启动目标服务,然后打开防火墙端口

[root@serverd ~]# yum -y install targetcli
[root@serverd ~]# systemctl enable --now target
[root@serverd ~]# firewall-cmd --permanent --add-service=iscsi-target
success
[root@serverd ~]# firewall-cmd --reload
success

3. 使用targetcli命令将/dev/vdb块设备声明为名为serverd.disk1的后端存储。

[root@serverd ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb49
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> cd /backstores/block
/backstores/block> create serverd.disk1 /dev/vdb
Created block storage object serverd.disk1 using /dev/vdb.

4. 为目标创建一个唯一的IQN。

/backstores/block> cd /iscsi
/iscsi> create iqn.2014-06.com.example:serverd
Created target iqn.2014-06.com.example:serverd.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

5. 创建目标器提供的LUN。使用serverd.Disk1用于后端存储。

/iscsi> cd /iscsi/iqn.2014-06.com.example:serverd/tpg1/luns
/iscsi/iqn.20...erd/tpg1/luns> create /backstores/block/serverd.disk1
Created LUN 0.

6. 在服务器上创建允许启动器使用的ACL。

/iscsi/iqn.20...erd/tpg1/luns> cd ../acls
/iscsi/iqn.20...erd/tpg1/acls> create iqn.2014-06.com.example:servera
Created Node ACL for iqn.2014-06.com.example:servera
Created mapped LUN 0.

7. 删除默认门户,然后创建一个门户,该门户只监听主网络接口172.25.250.13上的端口3260。

/iscsi/iqn.20...erd/tpg1/acls> cd ../portals
/iscsi/iqn.20.../tpg1/portals> ls
o- portals ..................................................... [Portals: 1]
o- 0.0.0.0:3260 ...................................................... [OK]
/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260

/iscsi/iqn.20.../tpg1/portals> create 172.25.250.13 3260
Using default IP port 3260
Created network portal 172.25.250.13:3260.
/iscsi/iqn.20.../tpg1/portals> ls
o- portals ..................................................... [Portals: 1]
o- 172.25.250.13:3260 ................................................ [OK]

8. 列出验证工作的目标配置。

/iscsi/iqn.20.../tpg1/portals> ls /


/iscsi/iqn.20.../tpg1/portals> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json

完成实验

[student@workstation ~]$ lab iscsi-target finish


总结

  • 介绍iSCSI。
  • 介绍如何部署和配置iSCSI target。
  • 介绍如何在命令行模式下管理target。

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第十一章 访问基于块的网络存储–提供iSCSI存储 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾红帽认证专栏系列:
RHCSA专栏:戏说 RHCSA 认证
RHCE专栏:戏说 RHCE 认证
此文章收录在RHCA专栏:RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。