Contents
iSCSI简介
iSCSI(Internet Small Computer System Interface)是一种基于因特网及SCSI-3协议下的存储技术,也称为IP-SAN。以下是关于iSCSI的详细简介:
1. 定义与标准
- iSCSI是Internet小型计算机系统接口的简称,由IETF(Internet Engineering Task Force)提出,并于2003年2月11日成为正式的标准。
- 它利用TCP/IP的port 860和3260作为沟通的渠道,允许两个主机通过IP网络相互协商并交换SCSI命令。
2. 技术特点
- 革命性变化
- 突破地域限制:通过TCP/IP网络发送原来只用于本机的SCSI协议,使连接距离可作无限的地域延伸。
- 连接服务器数量无限制:相比原SCSI-3的上限15个,iSCSI的连接数量无限制。
- 在线扩容与动态部署:由于是服务器架构,可以实现在线扩容和动态部署。
- 存储方式:利用iSCSI协议,计算机可以透过高速的局域网集线来把SAN模拟成为本地的储存装置。
3. 应用场景
- 数据中心存储:在大型数据中心中,存储设备通常集中在一个地方,而计算机则分布在各个位置。使用iSCSI协议,计算机可以通过网络连接到存储设备,实现集中存储和共享访问。
- 虚拟化环境:在虚拟化环境中,多个虚拟机可能需要同时访问存储设备。iSCSI协议可以提供高性能和可靠的存储访问,满足虚拟机对存储的需求。
- 远程备份和恢复:通过iSCSI协议,可以将数据备份到远程存储设备,保护数据免受本地故障和灾难的影响。
- 远程复制和镜像:iSCSI协议还可以用于远程复制和镜像数据,提供数据的冗余和容错能力。
4. 优势
- 灵活性:iSCSI协议可以在现有的IP网络上运行,无需额外的硬件和设备,使得部署和管理变得更加简单和灵活。
- 性能:通过使用TCP/IP协议提供可靠的数据传输和流量控制,iSCSI可以实现高性能的存储访问。
- 可扩展性:iSCSI协议可以支持大规模的存储网络,并且可以轻松地扩展和添加新的存储设备。
5. 工作原理
- 当计算机需要访问远程存储设备时,它会发送一个iSCSI请求,该请求被封装在TCP/IP数据包中,并通过网络传输到存储设备。
- 存储设备接收到请求后,执行相应的操作,并将结果返回给计算机。
总的来说,iSCSI是一种强大而灵活的存储访问协议,它可以使计算机通过IP网络访问远程存储设备,在数据中心存储、虚拟化环境、远程备份和恢复以及远程复制和镜像等应用场景中都有广泛的应用。
6.iSCSI的构成
iSCSI的构成主要可以分为以下几个部分,这些部分共同协作以实现iSCSI网络存储的功能:
- 后端存储(Backstore)
- 定义:后端存储是一个对应到服务端提供实际存储的设备。
- 作用:存储实际的数据,是iSCSI系统的数据源头。
- 硬盘组(Target)
- 定义:硬盘组是客户的访问目标,作为一个框架,由多个逻辑单元(LUN)组成。
- 作用:作为客户端访问的集中点,将多个LUN组合在一起,形成一个逻辑上的存储目标。
- 逻辑单元(Logical Unit, LUN)
- 定义:每一个LUN需要关联到某一个后端存储设备,在客户端会被视为一块虚拟硬盘。
- 作用:将后端存储设备的物理空间划分为多个逻辑单元,以便客户端可以像访问本地硬盘一样访问这些逻辑单元。
- iSCSI Initiator
- 定义:iSCSI Initiator是客户端的软件或硬件组件,用于与iSCSI Target建立连接并发起存储请求。
- 作用:在客户端上安装iSCSI Initiator软件后,客户端可以通过网络连接到iSCSI Target,从而访问存储资源。
- iSCSI Target
- 定义:iSCSI Target是服务器端的软件或硬件组件,负责响应iSCSI Initiator的请求并提供存储服务。
- 作用:接收来自iSCSI Initiator的请求,执行相应的存储操作(如读、写等),并将结果返回给iSCSI Initiator。
- 网络传输
- 定义:iSCSI使用TCP/IP协议进行网络传输。
- 作用:确保iSCSI Initiator和iSCSI Target之间的通信畅通无阻,实现数据的可靠传输。
- 存储连接桥(iSCSI Bridge)
- 定义:在某些情况下,为了将现有的存储系统(如SCSI硬盘阵列或FC存储设备)转换为iSCSI存储设备,可能需要使用存储连接桥。
- 作用:将SCSI或FC协议转换为iSCSI协议,使得传统的存储设备可以接入iSCSI网络。
归纳来说,iSCSI的构成主要包括后端存储、硬盘组、逻辑单元、iSCSI Initiator、iSCSI Target以及网络传输等部分。这些部分共同协作,实现了iSCSI网络存储的功能,使得客户端可以通过网络访问远程的存储资源。
7.IQN命名规范
IQN(iSCSI Qualified Name)命名规范是用于iSCSI(Internet Small Computer System Interface)协议中,以唯一标识iSCSI节点(目标或发起程序)的命名方式。以下是IQN命名规范的详细解释:
- 格式
- IQN的基本格式是
iqn.<YYYY-MM>.<naming-authority>:<unique name>
。 - 其中:
iqn
表示这是一个iSCSI限定名称。<YYYY-MM>
是命名机构获取此iSCSI名称中使用的域名的年份和月份。<naming-authority>
通常是命名机构的Internet域名的反向语法。<unique name>
是要使用的任何名称,例如主机名,它必须是唯一的。
- 示例
iqn.2001-04.com.example.iscsi:SRV1-85412701
是一个IQN命名的例子。
iqn
表明这是一个iSCSI限定名称。2001-04
表示example.com域名是在2001年4月注册的。com.example.iscsi
是example.com域名的反向语法,表示命名机构。SRV1-85412701
是一个唯一名称,可能表示某个特定的服务器或设备。
共享存储使用
服务端进行分区
[root@nnode1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 47.7G 0 part /
sde 8:64 0 2G 0 disk
├─sde1 8:65 0 1G 0 part
└─sde2 8:66 0 1023M 0 part
sr0 11:0 1 1024M 0 rom
安装服务端
yum -y install targetcli
systemctl start target
进行共享配置
[root@nnode1 ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> backstores/block create name=nsd dev=/dev/sde1
Created block storage object nsd using /dev/sde1.
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- nsd ........................................................................... [/dev/sde1 (1.0GiB) write-thru deactivated]
| | 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: 0]
o- loopback ......................................................................................................... [Targets: 0]
/> iscsi/ create iqn.2023-08.club.shadow.www:isc1
Created target iqn.2023-08.club.shadow.www:isc1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/> iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/luns create /backstores/block/nsd
Created LUN 0.
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- nsd ............................................................................. [/dev/sde1 (1.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.2023-08.club.shadow.www:isc1 .................................................................................. [TPGs: 1]
| o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
| o- acls .......................................................................................................... [ACLs: 0]
| o- luns .......................................................................................................... [LUNs: 1]
| | o- lun0 ....................................................................... [block/nsd (/dev/sde1) (default_tg_pt_gp)]
| o- portals .................................................................................................... [Portals: 1]
| o- 0.0.0.0:3260 ..................................................................................................... [OK]
o- loopback ......................................................................................................... [Targets: 0]
/> iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/acls create iqn.2023-08.club.shadow.www:shadow
Created Node ACL for iqn.2023-08.club.shadow.www:shadow
Created mapped LUN 0.
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- nsd ............................................................................. [/dev/sde1 (1.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.2023-08.club.shadow.www:isc1 .................................................................................. [TPGs: 1]
| o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
| o- acls .......................................................................................................... [ACLs: 1]
| | o- iqn.2023-08.club.shadow.www:shadow ................................................................... [Mapped LUNs: 1]
| | o- mapped_lun0 ................................................................................... [lun0 block/nsd (rw)]
| o- luns .......................................................................................................... [LUNs: 1]
| | o- lun0 ....................................................................... [block/nsd (/dev/sde1) (default_tg_pt_gp)]
| o- portals .................................................................................................... [Portals: 1]
| o- 0.0.0.0:3260 ..................................................................................................... [OK]
o- loopback ......................................................................................................... [Targets: 0]
/>
/> iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/portals/ delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/> iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/portals/ create ip_address=192.168.126.21
Using default IP port 3260
Created network portal 192.168.126.21:3260.
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- nsd ............................................................................. [/dev/sde1 (1.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.2023-08.club.shadow.www:isc1 .................................................................................. [TPGs: 1]
| o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
| o- acls .......................................................................................................... [ACLs: 1]
| | o- iqn.2023-08.club.shadow.www:shadow ................................................................... [Mapped LUNs: 1]
| | o- mapped_lun0 ................................................................................... [lun0 block/nsd (rw)]
| o- luns .......................................................................................................... [LUNs: 1]
| | o- lun0 ....................................................................... [block/nsd (/dev/sde1) (default_tg_pt_gp)]
| o- portals .................................................................................................... [Portals: 1]
| o- 192.168.126.21:3260 .............................................................................................. [OK]
o- loopback ......................................................................................................... [Targets: 0]
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json
指定ip提供服务,默认所有ip提供服务,这步可以不做
iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/portals/ delete 0.0.0.0 3260
iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/portals/ create ip_address=192.168.126.21
Using default IP port 3260
systemctl restart target
总结,下面将两个分区都创建为lun
1、创建名为nsd的块设备backstore,关联/dev/sde1。
backstores/block create name=nsd dev=/dev/sde1
2、创建名为nsd2的块设备backstore,关联/dev/sde2。
backstores/block create name=nsd2 dev=/dev/sde2
3、创建一个iSCSI Target,IQN为iqn.2023-08.club.shadow.www:isc1。
iscsi/ create iqn.2023-08.club.shadow.www:isc1
4、在Target的tpg1中创建LUN,关联nsd。
iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/luns create /backstores/block/nsd
5、在Target的tpg1中创建LUN,关联nsd2。
iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/luns create /backstores/block/nsd2
6、为Target的tpg1设置ACL,允许iqn.2023-08.club.shadow.www:shadow访问。
iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/acls create iqn.2023-08.club.shadow.www:shadow
7、删除Target的tpg1默认监听地址。
iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/portals/ delete 0.0.0.0 3260
8、为Target的tpg1设置监听地址为192.168.126.21。
iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/portals/ create ip_address=192.168.126.21
systemctl restart target
安装客户端软件(一般默认安装了)
yum install iscsi-initiator-utils
vim /etc/iscsi/initiatorname.iscsi
复制acl的名字复制到InitiatorName后
InitiatorName=iqn.2023-08.club.shadow.www:shadow
重启服务,刷新配置
systemctl restart iscsid
发现共享存储
从man帮助种找到发现命令
man iscsiadm /EXAMPLE
修改ip为服务器ip即可使用
iscsiadm --mode discoverydb --type sendtargets --portal 192.168.126.21 --discover
[root@dnode1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.126.21 --discover
192.168.126.21:3260,1 iqn.2023-08.club.shadow.www:isc1
共享硬盘查看
[root@dnode1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 47.7G 0 part /
sr0 11:0 1 1024M 0 rom
重启服务,获得共享存储
[root@dnode1 ~]# systemctl restart iscsi
看到多了sdb硬盘
[root@dnode1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 47.7G 0 part /
sdb 8:16 0 1G 0 disk
sr0 11:0 1 1024M 0 rom
systemctl enable iscsi
systemctl enable iscsid
使用lvs共享存储
lvs方便拓展,重新共享,首先删除之前的lun
targetcli
backstores/block delete name=nsd2
backstores/block delete name=nsd
创建lvs,占用整个sde硬盘
vgcreate vgci /dev/sde1 /dev/sde2
lvcreate -n lvci -l 100%FREE vgci
targetcli
backstores/block create name=lvnsd dev=/dev/vgci/lvci
iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/luns create /backstores/block/lvnsd
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- lvnsd ...................................................................... [/dev/vgci/lvci (2.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: 2]
| o- iqn.2023-08.club.shadow.www:isc1 .................................................................................. [TPGs: 1]
| | o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
| | o- acls .......................................................................................................... [ACLs: 1]
| | | o- iqn.2023-08.club.shadow.www:shadow ................................................................... [Mapped LUNs: 1]
| | | o- mapped_lun0 ................................................................................. [lun0 block/lvnsd (rw)]
| | o- luns .......................................................................................................... [LUNs: 1]
| | | o- lun0 ................................................................ [block/lvnsd (/dev/vgci/lvci) (default_tg_pt_gp)]
| | o- portals .................................................................................................... [Portals: 1]
| | o- 192.168.126.21:3260 .............................................................................................. [OK]
| o- iqn.2023-08.club.shadow.www:isc2 .................................................................................. [TPGs: 1]
| o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
| o- acls .......................................................................................................... [ACLs: 0]
| o- luns .......................................................................................................... [LUNs: 0]
| o- portals .................................................................................................... [Portals: 0]
o- loopback ......................................................................................................... [Targets: 0]
exit
客户端reboot,查看到lvs被使用了
报错及解决
Could not create NetworkPortal in configFS
/> iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/portals/ create ip_address=192.168.126.21
Using default IP port 3260
Could not create NetworkPortal in configFS
/> delete 0.0.0.0 3260
Command not found delete
删除0.0.0.0 3260
/> iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/portals/ delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/> iscsi/iqn.2023-08.club.shadow.www:isc1/tpg1/portals/ create ip_address=192.168.126.21
Using default IP port 3260
Created network portal 192.168.126.21:3260.