RH358访问基于块的网络存储--提供iSCSI存储

简介: RH358访问基于块的网络存储--提供iSCSI存储

RH358访问基于块的网络存储–提供iSCSI存储

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

RH358专栏地址:https://blog.csdn.net/qq_41765918/category_11532281.html

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。

l 创建后端存储(或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。
  • 若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。

相关实践学习
块存储快速入门
块存储是阿里云为云服务器ECS提供的块设备产品。通过体验挂载数据盘、分区格式化数据盘(Linux)、创建云盘快照、重新初始化数据盘、使用快照回滚云盘和卸载数据盘等功能,带您快速入门块存储。
目录
相关文章
|
15天前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限。它通过设置一系列规则,控制谁可以访问特定资源、在什么条件下访问以及可以执行哪些操作。ACL 可以应用于路由器、防火墙等设备,分为标准、扩展、基于时间和基于用户等多种类型,广泛用于企业网络和互联网中,以增强安全性和精细管理。
78 7
|
4月前
|
消息中间件 存储 Serverless
函数计算产品使用问题之怎么访问网络附加存储(NAS)存储模型文件
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
17天前
|
存储 网络协议 安全
软件管理,磁盘存储,文件系统以及网络协议
【11月更文挑战第9天】本文介绍了软件管理、磁盘存储和网络协议等内容。软件管理包括软件生命周期管理和软件包管理,涉及需求分析、设计、实现、测试、发布、维护等阶段,以及软件包的安装、升级和依赖关系处理。磁盘存储部分讲解了磁盘的物理结构、分区与格式化、存储管理技术(如 RAID 和存储虚拟化)。网络协议部分涵盖了分层模型、重要协议(如 HTTP、TCP、IP)及其应用与安全。
|
2月前
|
网络协议 Ubuntu 前端开发
好好的容器突然起不来,经定位是容器内无法访问外网了?测试又说没改网络配置,该如何定位网络问题
本文记录了一次解决前端应用集成到主应用后出现502错误的问题。通过与测试人员的沟通,最终发现是DNS配置问题导致的。文章详细描述了问题的背景、沟通过程、解决方案,并总结了相关知识点和经验教训,帮助读者学习如何分析和定位网络问题。
105 0
|
3月前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
2月前
|
存储 网络协议 数据挖掘
|
4月前
|
存储 机器学习/深度学习 分布式计算
HDFS与网络附加存储(NAS)的比较
【8月更文挑战第31天】
110 0
|
4月前
|
数据采集 存储 JavaScript
构建你的首个Python网络爬虫:抓取、解析与存储数据
【8月更文挑战第31天】在数字时代的浪潮中,数据成为了新的石油。了解如何从互联网的海洋中提取有价值的信息,是每个技术爱好者的必备技能。本文将引导你通过Python编程语言,利用其强大的库支持,一步步构建出你自己的网络爬虫。我们将探索网页请求、内容解析和数据存储等关键环节,并附上代码示例,让你轻松入门网络数据采集的世界。
|
4月前
|
JSON 安全 网络协议
【Azure Policy】添加策略用于审计Azure 网络安全组(NSG)规则 -- 只能特定的IP地址允许3389/22端口访问
为了确保Azure虚拟机资源的安全管理,只有指定IP地址才能通过RDP/SSH远程访问。解决方案包括使用Azure Policy服务扫描所有网络安全组(NSG),检查入站规则中的3389和22端口,并验证源地址是否在允许的IP列表中。不符合条件的NSG规则将被标记为非合规。通过编写特定的Policy Rule并定义允许的IP地址参数,实现集中管控和合规性检查。
|
8天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的知识,并提供一些实用的技巧和建议,帮助读者更好地保护自己的网络安全和信息安全。