iscsi详解

  • 主要介绍iscsi和glusterfs

  • iscsi 将一些协议放在网络中传输,ip-san

  • 以前的scsi是通过物理传输的,硬件协议,传输的

一、ISCSI详解

  • 是一种基于ip网络的存储协议

1、概述

1、什么是iscsi

  • iscsi是一种将scsi命令封装在tcp/ip协议中的技术,允许通过以太网传输的块存储数据

    • 核心功能:将远程的存储设备(磁盘阵列)模拟成本地的硬盘,实现跨网络的块级存储访问

    • 替代方案:相比传统的光纤通道(fc-san),iscsi基于廉价的以太网,成本更低

  • iscsi和scsi

    • 传统的scsi是存储设备最基本的标准协议,但通常需要设备互相靠近并用scsi总线连接,因此受到了物理环境的限制

    • iscsi实现了在ip网络上运行scsi协议的存储技术,能够让scsi接口与以太网技术相结合,使用iscsi协议基于以太网传送scsi命令与数据,克服了scsi需要直接连接存储设备的局限性,可以跨越不同的服务器共享存储设备,并且可以做到不停机的状态扩展存储容量

    • iscsi实现的是ip-san 数据传输基于以太网

img

img

2、iscsi核心组件

  • target 称为iscsi的目标齐(服务端),所谓的目标器可以理解为iscsi的名称,提供存储的一方,通常是存储服务器,通过iscsi协议共享到网络中

  • initator 称为iscsi的启动器(客户端) 用来连接目标器的 使用存储的一方,通常是数据库,文件服务器通过网络连接target,将远程存储识别为本地硬盘

  • iqn号:称为存储识别号,不管是客户端还是服务端,都需要通过iqn来认识和发现彼此,iqn号也是全球唯一的

    • iqn号的命名格式

    • iqn.yyyy-mm.reversed domain name. identifier

    • iqn.2024-03.com.openEuler:disk01

    • yyyy-mm 表示年-月

    • reversed domain name 表示倒过来的域名,全局唯一,反写主机名

    • identifier 是识别名称

2、iscsi配置

  • 一个服务端,一个客户端

  • 防火墙和selinux都需要关闭

1、服务端配置(tgtadm版本)

服务端添加一个硬盘

安装软件包

  • targetcli 在用户空间通过targetd的服务来将块设备共享,支持友好的用户界面,所有的指令都可以补齐

  • scsi-target-utils 支持多个共享块设备的管理并可以启用acl规则,还能做用户的授权访问,命令不能补全

  • 这2个软件包都能实现,我们先安装第二个软件包

yum -y install scsi-target-utils

# 启动服务
[root@server ~]# systemctl start tgtd

创建一个IQN号,就是创建了一个存储目标

# openeuelr.com 需要反写
[root@server ~]# tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2024-03.com.openeuler:disk01


--lld <driver> --mode target --op new --tid <id> --targetname <name>
	add a new target with <id> and <name>. <id> must not be zero.


# driver iscsi类型的

# mode  是操作模式 对target进行操作,也就是对服务器进行操作

# op  是操作类型,new 创建一个

# tid 是一个 target id 分配的id号,1是第一个(在同一台机器上面是唯一的)

# targetname 目标的唯一标识名称,格式为iqn号

将这个新添加的磁盘关联到iqn号上面。添加lun号,实际共享的存储设别

[root@server ~]# tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sdb


[root@server ~]# tgt-admin --dump
default-driver iscsi

<target iqn.2024-03.com.openeuler:disk01>
	backing-store /dev/sdb
</target>

配置acl,允许哪些客户端连接

# 允许这个ip地址连接iscsi设备

[root@server ~]# tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 192.168.50.21

# 敲了这么多的命令就是为了下面这几行
[root@server ~]# tgt-admin --dump
default-driver iscsi

<target iqn.2024-03.com.openeuler:disk01>
	backing-store /dev/sdb
	initiator-address 192.168.50.21
</target>

  • 需要注意的就是这些操作都是临时的,重启就没有了
# 备份一下
[root@server ~]# tgt-admin --dump > 1.txt
[root@server ~]# cat 1.txt 
default-driver iscsi

<target iqn.2024-03.com.openeuler:disk01>
	backing-store /dev/sdb
	initiator-address 192.168.50.21
</target>

# 重启tgtd服务,发现没有了配置
[root@server ~]# systemctl restart tgtd
[root@server ~]# tgt-admin --dump
[root@server ~]# 

# 将1.txt里面的配置写入到/etc/tgt/targets.conf里面

# 写入之后重启tgtd服务,发现配置又有了
[root@server ~]# systemctl restart tgtd
[root@server ~]# tgt-admin --dump
default-driver iscsi

<target iqn.2024-03.com.openeuler:disk01>
	backing-store /dev/sdb
	initiator-address 192.168.50.21
</target>

tgtadmin命令详解

img

img

2、客户端配置

安装软件包

[root@node1 ~]# yum -y install open-iscsi

# 启动服务
[root@node1 ~]# systemctl start iscsid

发现服务端的IQN号

[root@node1 ~]# iscsiadm -m discovery --type sendtargets --portal 192.168.50.20
192.168.50.20:3260,1 iqn.2024-03.com.openeuler:disk01

登录(连接)指定的IQN号

# 不写指定的IQN号的,则接受全部的iqn
[root@node1 ~]# iscsiadm -m node --login iqn.2024-03.com.openeuler:disk01
Logging in to [iface: default, target: iqn.2024-03.com.openeuler:disk01, portal: 192.168.50.20,3260]
Login to [iface: default, target: iqn.2024-03.com.openeuler:disk01, portal: 192.168.50.20,3260] successful.

# 发现了/dev/sdb 在客户端上
[root@node1 ~]# lsblk 
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                           8:0    0   50G  0 disk 
├─sda1                        8:1    0  600M  0 part /boot
└─sda2                        8:2    0 49.4G  0 part 
  └─openeuler_template-root 253:0    0 49.4G  0 lvm  /
sdb                           8:16   0   30G  0 disk 
sr0                          11:0    1  3.5G  0 rom  

# 怎么查看我登录了几台设备了呢
iscsiadm -m session

退出登录,退出连接的IQN号

[root@node1 ~]# iscsiadm -m node --logout iqn.2024-03.com.openeuler:disk01
Logging out of session [sid: 1, target: iqn.2024-03.com.openeuler:disk01, portal: 192.168.50.20,3260]
Logout of [sid: 1, target: iqn.2024-03.com.openeuler:disk01, portal: 192.168.50.20,3260] successful.

# 发现磁盘不见了
[root@node1 ~]# lsblk 
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                           8:0    0   50G  0 disk 
├─sda1                        8:1    0  600M  0 part /boot
└─sda2                        8:2    0 49.4G  0 part 
  └─openeuler_template-root 253:0    0 49.4G  0 lvm  /
sr0                          11:0    1  3.5G  0 rom  

  • 远程共享了这个磁盘的话,就能使用了

3、服务端配置(target版本)

  • 命令补全,非常的快
yum -y install targetcli
systemctl start target
# 进入到target页面
root@server ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.54
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]
  o- vhost ........................................................................ [Targets: 0]
  o- xen-pvscsi ................................................................... [Targets: 0]

创建iqn号

# 注意这个命令是可以补齐的

/> iscsi/ create iqn.2024-03.com.openeuler:disk1
Created target iqn.2024-03.com.openeuler:disk1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/> 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: 1]
  | o- iqn.2024-03.com.openeuler: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]
  o- loopback ..................................................................... [Targets: 0]
  o- vhost ........................................................................ [Targets: 0]
  o- xen-pvscsi ................................................................... [Targets: 0]
/> 

创建一个存储资源,也及时真实的存储对应的

# disk1这个存储资源,真实的存储为/dev/sdb

/> backstores/block create disk1 /dev/sdb
Created block storage object disk1 using /dev/sdb.
/> ls
o- / ..................................................................................... [...]
  o- backstores .......................................................................... [...]
  | o- block .............................................................. [Storage Objects: 1]
  | | o- disk1 ..................................... [/dev/sdb (30.0GiB) write-thru deactivated]
  | |   o- alua ............................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ................................... [ALUA state: Active/optimized]

iqn号关联存储资源

# 这个lun就创建出来了,关联了iqn号和存储资源

/> iscsi/iqn.2024-03.com.openeuler:disk1/tpg1/luns create /backstores/block/disk1 
Created LUN 0.
/> ls
o- / ..................................................................................... [...]
  o- backstores .......................................................................... [...]
  | o- block .............................................................. [Storage Objects: 1]
  | | o- disk1 ....................................... [/dev/sdb (30.0GiB) write-thru activated]
  | |   o- alua ............................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ................................... [ALUA state: Active/optimized]
  | o- fileio ............................................................. [Storage Objects: 0]
  | o- pscsi .............................................................. [Storage Objects: 0]
  | o- ramdisk ............................................................ [Storage Objects: 0]
  o- iscsi ........................................................................ [Targets: 1]
  | o- iqn.2024-03.com.openeuler:disk1 ............................................... [TPGs: 1]
  |   o- tpg1 ........................................................... [no-gen-acls, no-auth]
  |     o- acls ...................................................................... [ACLs: 0]
  |     o- luns ...................................................................... [LUNs: 1]
  |     | o- lun0 .................................. [block/disk1 (/dev/sdb) (default_tg_pt_gp)]
  |     o- portals ................................................................ [Portals: 1]
  |       o- 0.0.0.0:3260 ................................................................. [OK]

配置客户端的acl

# 查看客户端的iqn号
[root@node1 iscsi]# cat initiatorname.iscsi 
InitiatorName=iqn.2012-01.com.openeuler:3e53acc3121f

# 配置acl,iqn号是唯一的,验证了客户端的身份
/> iscsi/iqn.2024-03.com.openeuler:disk1/tpg1/acls create iqn.2012-01.com.openeuler:3e53acc3121fCreated Node ACL for iqn.2012-01.com.openeuler:3e53acc3121f
Created mapped LUN 0.

# 配置访问地址,这个ip地址是可以变的
# 删除默认的配置
/> iscsi/iqn.2024-03.com.openeuler:disk1/tpg1/portals/ delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260

# 配置这个监听的ip地址是 192.168.50.20:3260 服务端的ip地址监听这个服务
/> iscsi/iqn.2024-03.com.openeuler:disk1/tpg1/portals create 192.168.50.20
Using default IP port 3260
Created network portal 192.168.50.20:3260.


保存并退出

/> saveconfig 
Configuration saved to /etc/target/saveconfig.json

总结

  • 就是将块设备通过网络共享给客户端

  • 允许哪些登录等等操作

  • 以前的设备,都是物理连接的

posted @ 2026-03-07 16:36  乔的港口  阅读(1)  评论(0)    收藏  举报