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 数据传输基于以太网
-


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命令详解


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
总结
-
就是将块设备通过网络共享给客户端
-
允许哪些登录等等操作
-
以前的设备,都是物理连接的

浙公网安备 33010602011771号