一、简介

  iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的、可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议。iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料。

       iSCSI 的主要功能是在TCP/IP 网络上的主机系统(客户端 initiator)和存储设备(服务端器 target)之间进行大量数据的封装和可靠传输过程。


二、名词解析

iSCSI HBA卡:是一种专门用于连接ISCSI客户端和 iSCSI 存储服务端的网络适配器。负责将SCSI 命令转换为 iSCSI 协议并传输给存储设备,使用了ISCSI HBA卡后协议的封装不再占用服务器CPU,减少对服务器性能的影响。否则标准的网卡要传输iSCSI协议的TCP/IP,必须要安装initator软件。iSCSI HBA卡的功能就是释放服务器计算资源,提供独立的硬件处理SCSI协议封装为TCP/IP协议。


LUN:在 iSCSI中,LUN(Logical Unit Number)是指逻辑单元号码,用于标识存储设备中的逻辑单元。逻辑单元是存储设备中的一个可寻址的存储单元,可以是整个存储设备、分区、卷或虚拟磁盘等。

客户端可以将 LUN 视为一个独立的磁盘驱动器,LUN 在 iSCSI 中起到了逻辑地址的作用,它允许主机通过网络连接访问存储设备中的特定逻辑单元,从而实现存储资源的共享和管理。每个 LUN 都有一个唯一的标识符

三、配置文件中direct-store 和 backing-store的区别

direct-store 和 backing-store 是两种不同的存储方式。

1. Direct-Store 是将实际的设备直接作为 iSCSI 目标进行共享。这意味着整个磁盘或存储设备将被用作 iSCSI 目标,没有其他层次的抽象或虚拟化。直接存储适合于那些希望完全使用整个磁盘或存储设备进行共享的情况。

2. Backing-Store 是通过创建虚拟设备来提供 iSCSI 共享。在这种情况下,iSCSI 目标是在一个虚拟设备上建立的,并且可以使用不同的技术和协议(如 LVM、RAID 等)对底层物理设备进行管理和抽象。使用 Backing-Store 可以更灵活地管理和分配存储资源。

3. 如果你希望直接共享整个磁盘或存储设备,并且不需要额外的管理和抽象层,那么 direct-store 是一个简单而有效的选择。

4. 如果你需要更高级别的管理和控制,例如对底层物理设备进行 RAID 或 LVM 等操作,并希望能够更灵活地分配和管理存储资源,那么 backing-store 是更适合的选择。


四、安装前准备

iSCSI 支持分享多种类型的存储设备,包括但不限于以下几种:

磁盘卷:这些磁盘卷可以是物理磁盘上的分区,也可以是虚拟磁盘卷(如逻辑卷、RAID 阵列等)。

逻辑单元:逻辑单元是存储设备上的逻辑存储单元,可以是磁盘卷、逻辑卷、虚拟磁盘等。

存储池:存储池是一种逻辑容器,可以将多个物理磁盘或逻辑单元组合在一起,提供统一的存储空间供客户端使用。

五、相关配置文件

服务端

/etc/tgt/conf.d/sample.conf

/etc/tgt/targets.conf


客户端

/etc/iscsi/initiatorname.iscsi

/etc/iscsi/iscsid.conf



六、安装步骤

服务端步骤

1、安装target服务端包

[root@localhost ~]# yum install scsi-target-utils


2、拷贝配置示例文件

[root@localhost conf.d]# cp /etc/tgt/conf.d/sample.conf adesk.conf


3、划分磁盘空间,这里我将/dev/sda划分为sda5sda6两个LVM卷

/dev/sda5   4574930944 15312349183 10737418240    5T Linux LVM

/dev/sda6  15312349184 26049767423 10737418240    5T Linux LVM


4、编辑配置文件添加以下代码

<target iqn.2023-07.com.deapan:server.target1>

backing-store /dev/sda5

backing-store /dev/sda6

#        incominguser deapan 123.com //表示客户端给服务器的单向CHAP认证

# outgoinguser deapan 123.com //表示客户端与服务器的双向CHAP认证

</target>


5、重启服务,查看部署是否完成

1、systemctl restart tgtd

2、tgt-admin -s

I_T nexus information:表示多少个客户端连接到target

LUN information:表示target有多个可被客户端调用的LUN单元

①在输出的内容中,LUN 0代表target共享存储的控制器,LUN #表示#个iscsi存储单元;

②至少要有一个LUN 0以外的LUN单元,才可被iscsi客户端调用

l Account information:表示认证用户的信息


客户端步骤

1、安装客户端软件包

[root@localhost ~]# yum install iscsi-initiator-utils


2、发现target服务器

iscsiadm -m discovery -t st -p 192.168.255.136


1、登录验证节点  iscsiadm -m node -T target.iqn -o update --name node.session.auth.authmethod --value=CHAP   iscsiadm -m node -T target.iqn --op update --name node.session.auth.username --value=username  iscsiadm –m node –T target.iqn–op update –name node.session.auth.password –value=password

登录验证也可以直接修改配置文件/etc/iscsi/iscsid.conf

#node.session.auth.authmethod = CHAP

#node.session.auth.username = username

#node.session.auth.password = password


2、连接节点

[root@localhost ~]# iscsiadm -m node -T iqn.2023-07.com.deapan:server.target1 -l

Logging in to [iface: default, target: iqn.2023-07.com.deapan:server.target1, portal: 192.168.255.136,3260] (multiple)

Login to [iface: default, target: iqn.2023-07.com.deapan:server.target1, portal: 192.168.255.136,3260] successful.


3、查看节点磁盘是否存在;

[root@localhost ~]# fdisk -l

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xbae90873

设备

/dev/sdb1            2048    10487807     5242880   83  Linux


4、对磁盘进行格式化、挂载等操作即可使用(操作省略)


七、常见问题

问题一

[root@localhost ~]# iscsiadm -m discovery -t st -p 192.168.255.136

iscsiadm: Cannot perform discovery. Invalid Initiatorname.

iscsiadm: Could not perform SendTargets discovery: invalid parameter

原因:配置文件/etc/iscsi/initiatorname.iscsi中客户端的iqn异常;参考其他客户端的配置文件进行修改或卸载iscsi-initiator-utils包,再重新安装即可


问题二

[root@localhost iscsi]# ping 192.168.255.136

PING 192.168.255.136 (192.168.255.136) 56(84) bytes of data.

64 bytes from 192.168.255.136: icmp_seq=1 ttl=64 time=0.307 ms

64 bytes from 192.168.255.136: icmp_seq=2 ttl=64 time=0.569 ms


可以正常ping通服务器,但查看/var/log/message显示以下错误

connect to 192.168.255.136:3260 failed (No route to host)

关闭selinux、关闭iptables和关闭firewalld防火墙