什么是iscsi?

iSCSI(Internet Small Computer System Interface,Internet 小型计算机系统接口)是一种由IBM公司研究开发的IP SAN技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,基于 TCP/IP的协议连接iSCSI服务端(Target)和客户端(Initiator),使得封装后的SCSI数据包可以在通用互联网传输,最终实现iSCSI服务端映射为一个存储空间(磁盘)提供给已连接认证后的客户端。

配置iscsi服务端

  1. 安装iscsi服务端程序以及命令工具,然后设置启动以及自启动

    yum install target* -y

    systemctl start target

    systemctl enable target

安装

启动

  1. 配置iscsi服务端共享资源

targetcli命令是用于管理iSCSI服务端存储资源的专用配置命令,它能够提供类似于fdisk命令的交互式配置功能。在该界面中可以使用很多Linux命令,比如:cd,ls,df -h等

先使用targetcli命令进入管理界面

可以使用ls查看目录结构

/backstores/block是iSCSI服务端配置共享设备的位置。 首先要在服务端中添加硬盘,然后使用create命令创建共享设备

进入到 /backstores/block cd backstores/block

创建名为disk0的设备 create disk0 /dev/nvme0n2 (硬盘位置可使用lsblk查看)

然后返回到根目录查看文件有没有变化

cd /

ls

这样就会看到/backstores/block多出一个设备

  1. 创建iSCSI target名称及配置共享资源。

iSCSI target名称是由系统自动生成的,这是一串用于描述共享资源的唯一字符串,系统在生成这个target名称后,还会在 /iscsi 参数目录中创建一个与其字符串同名的新“目录”用来存放共享资源。我们需要把前面加入到iSCSI共享资源池中的硬盘设备添加到这个新目录中。

切换到iscsi目录 cd iscsi

创建iscsi target名称 create

如下图:

iscsi

  1. 设置访问控制列表(ACL)。

打开iqn目录,此处每个人都不一样,可用tab键补齐,然后创建一个与iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.51d5764d7f3f的文件,后缀请随意

cd iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.51d5764d7f3f/tpg1/acls

create iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.51d5764d7f3f.server

acls

  1. 为每个存储创建一个lun,同时会激活每个存储设备,同时acls也将自动分配给每个创建的lun。

切换到luns目录 cd /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.51d5764d7f3f/tpg1/luns/

创建disk0 create /backstores/block/disk0

  1. 设置iSCSI服务端的监听IP地址和端口号。

切换到portals目录

cd /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.51d5764d7f3f/tpg1/portals/

create 192.168.20.121 3260 此处ip请查看自己的网卡,之间是空格,默认是全放通,要创建的话先删除才可以创建

最后输入 exit 回车之后才能保存~

  1. 最后重启iscsi服务端,防火墙放行3260端口

systemctl restart target

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

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

至此服务端配置完毕

iscsi客户端配置

  1. 安装initiator

yum install iscsi-initiator-utils -y

安装客户端

  1. iSCSI协议是通过客户端的名称来进行验证,而该名称也是iSCSI客户端的唯一标识,编辑iSCSI客户端中的initiator名称文件,把服务端的访问控制列表名称填写进去,然后重启客户端iscsid服务程序并将其加入开机自启。

vim /etc/iscsi/initiatorname.iscsi

vim

systemctl restart iscsid

systemctl enable iscsid

  1. iSCSI客户端访问并使用共享存储资源。

iscsiadm是用于管理、查询、插入、更新或删除iSCSI数据库配置文件的命令行工具,先使用这个工具扫描发现远程iSCSI服务端,然后查看服务端上有哪些可用的共享存储资源。

iscsiadm -m discovery -t st -p 192.168.121.9

扫描

  1. 扫描到有iscsi设备的话,表示成功,然后就可以登录iscsi设备

登录命令:iscsiadm

参数:

-m node是将客户端所在主机作为一台节点服务器

-T iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.51d5764d7f3f是要使用的存储资源(建议复制前面扫描的结果,挨个输入很容易输错)

-p 后面接iscsi服务端的ip

末尾的 -l(--login)是进行参数验证

连接 iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.51d5764d7f3f -p 192.168.121.9 -l

end

最后执行lsblk查看有没有多一块硬盘,如果多了即表示成功了,然后就可以像正常的硬盘那样进行操作,但要注意的是,添加/etc/fstab配置文件时,一定要加入\_netdev(加粗部分),表示等到系统联网后再进行挂载,以防系统启动时间过长甚至无法启动。


好啦,这就是Linux配置iscsi的教程,如果有什么疑问或者补充或者缺漏欢迎在评论区留言

最后修改:2024 年 05 月 01 日
如果觉得我的文章对你有用,请随意赞赏