CentOS8服务篇7:配置网络存储iSCSI服务

一、iSCSI技术概述

基于IP的存储区域网(Internet Small Computer System InterfaceiSCSI),又称IP-SAN,它是一种基于因特网及SCSI-3协议的存储技术,由IETF提出,并于2003211日成为正式的标准。

下面将简单介绍iSCSI技术在生产环境中的优势和劣势。首先,iSCSI技术非常便捷,它在访问存储资源的形式上发生了很大变化,摆脱了物理环境的限制,同时还可以把存储资源分给多个服务器共同使用,因此它是一种性能比较好的存储技术。但是,iSCSI技术受到了网速的制约。以往,硬盘设备直接通过主板上的总线进行数据传输,现在则需要让互联网作为数据传输的载体和通道,因此,传输速率和稳定性是iSCSI技术的瓶颈。随着网络技术的持续发展,相信iSCSI技术也会随之改善。

既然要通过以太网来传输硬盘设备上的数据,那么数据是通过网卡传入计算机的吗?这就有必要向大家介绍iSCSI-HBA卡了

 与一般的网卡不同(连接网络总线和内存,供计算机上网使用),iSCSI-HBA卡连接的是SCSI接口或FC(光纤通道)总线和内存,专门用于在主机之间交换存储数据,其使用的协议也与一般网卡有本质区别。运行Linux操作系统的服务器会基于iSCSI协议把硬盘设备命令与数据打包成标准的TCP/IP数据包,然后通过以太网传输到目标存储设备,而当目标存储设备接收到这些数据包后,还需要基于iSCSI协议把TCP/IP数据包解压缩成硬盘设备命令与数据。

二、创建RAID

既然要使用iSCSI技术为远程用户提供共享存储资源,那么首先要保障用于存放资源的服务器的稳定性与可用性,否则一旦其在使用过程中出现故障,维护难度相较于本地硬盘设备将会更加复杂、困难。下面以配置RAID 5为例进行讲解。

首先在虚拟机中添加4块新硬盘设备,用于创建RAID 5和备份盘,然后启动虚拟机系统,使用mdadm命令创建RAID。其中,-Cv参数表示创建RAID并显示过程,/dev/md0为生成的RAID名称,-n 3参数为创建RAID 5所需的硬盘个数,-l 5参数为RAID的等级,-x 1参数为备份盘个数。在命令后面要逐一写上使用的硬盘名称。

mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde

在上述命令成功执行之后,会得到一块名为/dev/md0的新设备,这是一块RAID 5等级的RAID,并且有1块备份盘。大家可以使用mdadm -D /dev/md0】命令来查看RAID的详细信息,如图10-2所示。

另外,在使用远程设备时极有可能出现设备识别顺序发生变化的情况,因此,如果直接在fstab挂载配置文件中写入/dev/sdb/dev/sdc等设备名称,就有可能在下一次挂载错误的存储设备。而UUID值是设备的唯一标识符,用于精确标识硬件设备。所以建议填写UUID值到挂载配置文件中。

 三、iSCSI服务器搭建

iSCSI技术在工作形式上分为服务端(Target)与客户端(Initiator)。iSCSI服务端是用于存放硬盘存储资源的服务器,它作为前面创建的RAID的存储端,能够为用户提供可用的存储资源。iSCSI客户端则是用户使用的软件,用于访问远程服务端的存储资源。

1步:安装iSCSI服务端程序。

配置好yum软件仓库后,安装iSCSI服务端程序及配置命令工具。通过在yum命令后面添加-y参数,在安装过程中就不需要再进行手动确认了。

yum -y install targetd targetcli

安装iSCSI服务端程序安装完成后启动iSCSI服务端进程targetd,然后把这个服务进程加入开机启动项中,以便在服务器重启后依然能够为用户提供iSCSI共享存储资源服务。

systemctl start targetd

systemctl enable targetd

2步:配置iSCSI服务端共享资源。

targetcli是用于管理iSCSI服务端存储资源的专用配置命令,它能够提供类似于fdisk命令的交互式配置功能,将iSCSI共享资源的配置内容抽象成目录的形式,只需将各类配置信息填入相应的目录即可。这里的难点主要在于认识每个参数目录的作用。当把配置参数正确地填写到目录中后,iSCSI服务端就可以提供共享资源服务了。

执行targetcli命令后就能看到交互式的配置界面了。在该界面中可以使用很多Linux命令,如利用ls命令查看目录参数的结构,使用cd命令切换到不同的目录。/backstores/blockiSCSI服务端配置共享设备的位置。需要把刚刚创建的RAID 5md0文件加入配置共享设备的资源池,并将该文件重新命名为disk0,这样用户就不会知道是由服务器中的哪块硬盘来提供共享存储资源的,而只会看到一个名为disk0存储设备

 本案例在进入targetcli交互式的配置界面后所需的命令如下:

targetcli

ls

cd /backstores/block

create disk0 /dev/md0

cd /

ls

3步:创建iSCSI target名称及配置共享资源。

iSCSI target名称是由系统自动生成的,这是一串用于描述共享资源的唯一字符串。稍后用户在扫描iSCSI服务端时即可看到这个字符串,因此不需要记住它。系统在生成这个iSCSI target名称后,还会在/iscsi参数目录中创建一个与其字符串同名的新目录,用来存放共享资源。用户需要把前面加入iSCSI共享资源池的硬盘设备添加到这个新目录中,这样用户在登录iSCSI服务端后,即可默认使用此硬盘设备提供的共享存储资源

本案例在进入targetcli交互式的配置界面后所需的命令如下:

targetcli

【cd iscsi

【create】

注意,iqn的值是上一步操作产生的,直接复制后去掉最后的点,然后加斜杠即可。

【cd iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.d9886122cf73/】

【cd tpg1/luns

【create /backstores/block/disk0】

4步:设置访问控制列表。

iSCSI协议是通过客户端名称进行验证的,也就是说,用户在访问存储共享资源时不需要输入密码,只要iSCSI客户端的名称与服务端中设置的访问控制列表中的某一名称条目一致即可,因此需要在iSCSI服务端的配置文件中写入一串能够验证用户信息的名称。acls参数目录用于存放能够访问iSCSI服务端共享存储资源的客户端名称。所以笔者建议在刚刚系统生成的iSCSI target名称后面追加上类似于:client的参数,这样既能保证客户端的名称具有唯一性,又非常便于管理和阅读

 

 本案例在进入targetcli交互式的配置界面后所需的命令如下:

cd ..

cd acls

create iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.d9886122cf73:client

5步:设置iSCSI服务端的监听IP地址和端口号。

生产环境中的服务器上可能有多块网卡,那么到底是由哪个网卡或IP地址对外提供共享存储资源的呢?这就需要在配置文件中手动定义iSCSI服务端的信息了,即在portals参数目录中写上服务器的IP地址

 

接下来将由系统自动开启服务器192.168.88.1883260端口,向外提供iSCSI共享存储资源服务。

本案例在进入targetcli交互式的配置界面后所需的命令如下:

【cd ..】

【cd portals】

【create 192.168.88.188】

 注意:

在运行上述最后一条命令时,笔者的系统提示错误:“Could not create NetworkPortal in configFS,出现此错误提示的原因是已经存在一个IP地址和端口号,使用命令【delete 0.0.0.0 3260】将其删除,再重新创建即可。

6步:应用配置。

配置妥当后检查配置信息,重启iSCSI服务端程序并配置防火墙策略。在参数文件配置妥当后,使用【ls /】命令可以浏览刚刚配置的信息,确保与以下信息保持一致,如图10-7所示。

在确认信息无误后输入【exit】命令来退出配置。注意,千万不要习惯性地按“Ctrl + C”组合键结束进程,这样并不会保存配置文件,前期的工作也就白费了。最后重启iSCSI服务端程序,再设置firewalld防火墙策略,使其放行3260/tcp端口号的流量。

 systemctl restart targetd重启iSCSI服务端程序。

设置firewalld防火墙策略,使其放行3260/tcp端口号的流量。

firewall-cmd --permanent --add-port=3260/tcp

firewall-cmd --reload】重启防火墙。

iSCSI服务端的配置至此全部完成。

四、Linux客户端配置

CentOS 8中,已经默认安装了iSCSI客户端服务程序initiator,如果没有安装,则可以使用yum软件仓库手动安装。

yum install iscsi-initiator-utils 

前面讲到,iSCSI协议是通过客户端的名称来进行验证的,而该名称也是iSCSI客户端的唯一标识,并且它必须与服务端配置文件中的访问控制列表中的信息一致,否则客户端在尝试访问存储共享设备时,系统会弹出验证失败的保存信息。

下面编辑iSCSI客户端中的initiator名称文件,把服务端的访问控制列表名称填写进来,然后重启客户端iscsid服务程序,并将其加入开机启动项。

vim /etc/iscsi/initiatorname.iscsi

InitiatorName=iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.d9886122cf73:client

systemctl restart iscsid

systemctl enable iscsid

访问iSCSI客户端并使用共享存储资源的步骤很简单,只需要记住:先发现,再登录,最后挂载并使用。iscsiadm是用于管理、查询、插入、更新或删除iSCSI数据库配置文件的命令行工具,用户需要先使用这个工具扫描发现远程iSCSI服务端,然后查看找到的服务端上有哪些可用的共享存储资源。其中,-m discovery参数的目的是扫描并发现可用的存储资源,-t st参数为执行扫描操作的类型,-p 192.168.88.188参数为iSCSI服务端的IP地址。

iscsiadm -m discovery -t st -p 192.168.88.188

192.168.88.188:3260,1 iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.d9886122cf73

在使用iscsiadm命令发现远程服务器上可用的存储资源后,接下来准备登录iSCSI服务端。其中,-m node参数为将客户端所在主机作为一台节点服务器,-T iqn.2003-01.org. linux-iscsi.localhost.x8664:sn.d9886122cf73参数为要使用的存储资源,-p 192.168.88.188参数为iSCSI服务端的IP地址。最后使用--login-l参数进行登录验证,如图10-8所示。

iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.d9886122cf73 -p 192.168.88.188 --login

 

iSCSI客户端成功登录之后,会在客户端主机上多出一个名为/dev/sdb的设备文件。接下来可以像使用本地主机上的硬盘一样来操作这个设备文件。

【file /dev/sdb

/dev/sdb: block special

下面进入标准的磁盘操作流程。考虑到大家已经在第8章学习了这部分内容,且此设备文件本身只有40GB的容量,因此,此处不再进行分区,而是直接将其格式化并挂载使用,如图10-9所示。

mkfs.xfs /dev/sdb

mkdir /iscsi

【mount /dev/sdb /iscsi

df -h】

 自此之后,这个设备文件就可以像客户端本机主机上的硬盘一样工作。需要提醒大家的是,由于udev服务是按照系统识别硬盘设备的顺序来命名硬盘设备的,当客户端主机同时使用多个远程存储资源时,如果下一次识别远程设备的顺序发生了变化,那么客户端挂载目录中的文件也将发生混乱。为了防止这样的问题发生,应该在/etc/fstab配置文件中使用远程设备的UUID值进行挂载,这样,无论远程设备的识别顺序怎么变化,系统都能正确找到设备所对应的目录。

blkid命令用于查看设备的名称、文件系统及UUID值。可以使用管道命令符进行过滤,只显示与/dev/sdb设备相关的信息。

blkid | grep /dev/sdb

注意:

由于/dev/sdb是一块网络存储设备,而iSCSI协议是基于TCP/IP网络传输数据的,所以必须在/etc/fstab配置文件中添加_netdev参数,表示当系统联网后再进行挂载操作,以免系统开机时间过长或开机失败。

通过【vim /etc/fstab命令编辑/etc/fstab文件,在末行添加以下信息:

UUID=35c890c5-253a-418b-b4c3-0bbfa68f262c /iscsi xfs defaults,_netdev   0 0

如果不再需要使用iSCSI共享设备资源,则可以用iscsiadm命令的-u参数将其设备卸载。

iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.d9886122cf73 -u】

五、Windows客户端配置

使用Windows操作系统的客户端也可以正常访问iSCSI服务器上的共享存储资源,其操作原理及步骤与Linux操作系统的客户端基本相同。在进行以下实验之前,请先关闭Linux操作系统的客户端,以免这两台客户端主机同时使用iSCSI共享存储资源而产生潜在的问题。

1步:运行iSCSI发起程序。在Windows 7操作系统中已经默认安装了iSCSI客户端程序,只需在控制面板中找到“系统和安全”标签,然后单击“管理工具”按钮,进入“管理工具”页面后即可看到“设置iSCSI发起程序”图标;也可以直接在控制面板中查找“iSCSI”关键字

点击“设置iSCSI发起程序”链接。在第一次运行iSCSI发起程序时,系统会提示“Microsoft iSCSI服务端未运行”,单击“是”按钮即可自动启动并运行iSCSI发起程序。

 2步:扫描发现iSCSI服务端上可用的存储资源。无论是Windows操作系统还是Linux操作系统,要想使用iSCSI共享存储资源,都必须先进行扫描发现操作。运行iSCSI发起程序后在“目标”选项卡的“目标”文本框中写入iSCSI服务端的IP地址,然后单击“快速连接”按钮。

在弹出的“快速连接”提示框中可以看到共享的硬盘存储资源,单击“完成”按钮即可。

 第3步:扫描发现iSCSI服务端上可用的存储资源。无论是Windows操作系统还是Linux操作系统,要想使用iSCSI共享存储资源,都必须先进行扫描发现操作。运行iSCSI发起程序后在“目标”选项卡的“目标”文本框中写入iSCSI服务端的IP地址,然后单击“快速连接”按钮。

在弹出的“快速连接”提示框中可以看到共享的硬盘存储资源,单击“完成”按钮即可。

回到“目标”选项卡页面,可以看到共享存储资源的名称已经出现

                   

 第4步:准备连接iSCSI服务端的共享存储资源。由于在iSCSI服务端程序上设置了ACL,只有客户端名称与ACL策略中的名称保持一致时才能使用远程存储资源,所以需要在“配置”选项卡中单击“更改”按钮,把iSCSI发起程序的名称修改为ACL定义的名称。

在确认iSCSI发起程序的名称修改正确后,即可返回“目标”选项卡页面,然后单击“连接”按钮进行连接请求,成功连接到远程共享存储资源的页面

                     

 第5步:访问iSCSI远程共享存储资源。单击桌面上的“计算机”图标,打开计算机管理程序,然后选择“存储”下的“磁盘管理”。

磁盘进行初始化操作,磁盘初始化结束后弹出设备图标。

 

 

  

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北方的流星

你的鼓励是我创作最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值