ISCSI网络存储服务
iSCSI技术是一种由IBM、Cisco公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料。
技术优点和成本优势主要体现以下方面:
硬件成本低:构建iSCSI存储网络,除了存储设备外,交换机、线缆、接口卡都是标准的以太网配件,价格相对来说比较低廉。
操作简单,维护方便:对iSCSI存储网络的管理,实际上就是对以太网设备的管理。
扩充性强:对于已经构建的iSCSI存储网络来说,增加iSCSI存储设备和服务器都将变得简单且无需改变网络的体系结构。
带宽和性能:iSCSI存储网络的访问带宽依赖以太网带宽。随着千兆以太网的普及和万兆以太网的应用,iSCSI存储网络会达到甚至超过FC(FiberChannel,光纤通道)存储网络的带宽和性能。
基本概念:
在SAN中,主机一般都是Initiator,存储设备则是Target。
Initiator
- SCSI会话的发起方
- 向Target请求LUN,并将数据的读写指令发送给Target
Target(默认采用TCP 3260端口)
- 接受SCSI回话的一方
- 它接收来自Initiator的指令,为Initiator提供LUN,并实现对LUN的读写
Linux主要的开源Target项目
- Linux SCSI Target-STGT/tgt
- Linux-IO Target - LIO Linux 2.6.38开始纳入内核
- SCST-Generic SCSI Subsystem for linux
http://scst.sourceforge.net/comparison.html
Linux-IO Target概述
- http://linux-iscsi.org/wiki/Main_Page
- Linux-IO Target在Linux内核中,用软件实现各种SCSI Target
- 前端:FC、FCoE、iSCSI、1394、USB、vHost等
- 后端:SATA, SAS, SCSI, SSD, FLASH, DVD, USB, ramdisk等
- 架构:支持SSE4.2高性能、多线程;支持x86, ia64, Alpha, Cell, PPC, ARM, MIPS等多种CPU;支持高可用、负载平衡群集等。。。。
Lunux-IO的iSCSI Target架构:http://linux-iscsi.org/wiki/File:LIO_iSCSI_Architecture.png
iscsi实现网络存储,提供存储端叫 target,使用存储端叫 initiator。target 上可以提供存储空间,initiator负责连接ISCSI设备,在ISCSI设备中创建文件系统,以及存取数据,在initiator 上看上去是多了一块硬盘。
服务器端配置target,准备做为LUN发布的ISCSI的存储设备(可以是一整块磁盘、一个分区、逻辑卷或RAID阵列)。
在target端的配置:
准备磁盘作为iscsi的存储设备:
安装target:yum install -y targetcli
启动服务:
防火墙开放端口:
执行targetcli工具:
help查看帮助:
基本思路:
先把准备共享的块做出来,创建一个target,在target上创建LUN,一个LUN连接一个块
-
创建块时给逻辑卷起名字:
backstores/block create test1 /dev/vgtest/lvtest
查看块:
-
创建iqn名字即创建ISCSI对象:
/iscsi create iqn.2021-03.com.test:test1
查看iscsi对象:
-
设置ACL将ISCSI对象与客户端IP或主机名绑定:
iscsi/iqn.2021-03.com.test:test1/tpg1/acls create iqn.2021-03.com.test:test1
注意:iqn.2021-03.com.test:test1
是initiator的名字,需要在客户端中设置 -
创建LUN并绑定块:
/iscsi/iqn.2021-03.com.test:test1/tpg1/luns create /backstores/block/test1
一个ISCSI对象可以创建多个LUN(LUN0、LUN1……)。
执行ls查看:
-
启动监听程序:
/iscsi/iqn.2021-03.com.test:test1/tpg1/portals/ create 192.168.48.129
报错是因为程序默认启用了监听0.0.0.0,将其删除后即可正常创建:/iscsi/iqn.2021-03.com.test:test1/tpg1/portals/ delete 0.0.0.0 3260
其中192.168.48.129为ISCSI服务端网卡IP
可以查看/etc/target/saveconfig.json
配置文件,该配置文件保存着ISCSI的配置。
在initiator端的配置:
安装软件:yum install -y iscsi-initiator-utils
给initiator设置名字:vim /etc/iscsi/initiatorname.iscsi
启动服务:
发现存储:iscsiadm -m discovery -t st -p 192.168.48.129
-m mode discovery 发现
-t type,st为sendtargets的缩写 发现网络设备类型
-p portal 主机IP
登录存储:iscsiadm -m node -T iqn.2021-03.com.test:test1 -p 192.168.48.129 -l
-m node
-T targetname
-l 表示连接iscsi目标
-u 表示断开iscsi目标的连接
验证客户端iscsi连接:lsscsi
其它命令:
iscsiadm -m discovery [-P 1|0] 显示有关已发现目标的信息
iscsiadm -m node [-P 1|0] 显示有关已知目标的信息
iscsiadm -m session [-P 1|0] 显示有关活动回话的信息
连接后,接下来的操作和管理本地磁盘一样:
在/etc/fstab
设置开机自动挂载,需要在挂载选项中添加_netdev
选项:
测试:
在initiator端存储盘挂载目录创建测试文件:
在target端停止服务,将该硬盘挂载查看: