目录
- 概念
- 实验介绍
- 环境准备
- 存储端
- 软件安装
- 使用targetcli来管理iSCSI共享存储
- 客户端
- 软件安装
- 连接存储
概念
iSCSI是一种在Internet协议上,特别是以太网上进行数据块传输的标准,它是一种基于IP Storage理论的存储技术,该技术是将存储行业广泛应用的SCSI接口技术与IP网络技术相结合,可以在IP网络上构建SAN存储区域网,简单地说,iSCSI就是在IP网络上运行SCSI协议的一种网络存储技术。
实验介绍
使用iSCSI共享存储来模拟存储实际挂载到操作系统中的情况,我这里使用两张网卡模拟两条路径的存储挂载。
IP | 用途 |
---|---|
10.253.170.200 | 客户端IP |
10.253.170.201、10.253.170.202 | 存储端IP,使用两个IP模拟多路径挂载 |
环境准备
两台虚拟机,其中,一台服务器做存储端,需要两张网卡,单独的一块或多块磁盘做共享存储。
另一台做客户端,只需要一张网卡。
需要保障两台服务器之间网络互通,另外,需要配置好yum源,来安装所需的软件。
关于配置yum源,可以参考我之前写的关于yum源搭建的文章。
存储端
软件安装
安装targetcli软件包,我这里已经提前安装过了
启动target服务,并配置target服务开机自启动,确保服务状态为active
使用targetcli来管理iSCSI共享存储
使用用tragetcli进入交互模式,修改服务端配置信息
$ targetcli
/> ls #使用ls命令查看菜单结构
o- / ..... [...] #顶级目录
o- backstores ........................... [...] #后备存储,主备存储空间要共享的设备或分区需要添加到此处
| o- block ............... [Storage Objects: 0] #块存储,backstores子目录
| o- fileio .............. [Storage Objects: 0] #文件存储镜像img根据一个事先准备的文件提供存储功能,backstores子目录
| o- pscsi ............... [Storage Objects: 0] #真实物理scsi设备不推荐使用,backstores子目录
| o- ramdisk ............. [Storage Objects: 0] #闪存利用内存当做存储,backstores子目录
o- iscsi ......................... [Targets: 0] #以ISCSI的方式共享存储设备的目录
o- loopback ...................... [Targets: 0] #回路
将我们准备的分区添加进来(注意我们准备的分区是块设备,所以应将其添加到块设备文件之中)
/>/backstores/block create dev=/dev/sda name=lun0 #通过create命令添加设备dev用来指定要添加的设备磁盘,nam为逻辑单元名(可以自定义)
通过ls命令查看所添加的设备
创建 iSCSI target
iSCSI target 名称是由系统自动生成的,这是一串用于描述共享资源的唯一字符串。稍后用户在扫描 iSCSI 服务端时即可看到这个字符串,因此我们不需要记住它。系统在生成这个 target 名称后,还会在/iscsi 参数目录中创建一个与其字符串同名的新“目录”用来存放共享资源。我们需要把前面加入到 iSCSI 共享资源池中的硬盘设备添加到这个新目录中,这样用户在登录 iSCSI 服务端后,即可默认使用这硬盘设备提供的共享存储资源了。
也可自定义生成target 名称如下规则:
通用格式:iqn.YYYY-MM.com.reversed.domain[:optional_string];
iqn:表示此名称将使用域作为其标识符;
YYYY-MM:拥有域名的第一个月;
com.reversed.domain:此 iSCSI 名称的创建组织的逆向域名;
optional_string:以冒号为前缀的可选字符串
查看target
默认会一个网络监听信息 {portal} 以发现target,也可以删除默认监听自行添加
我这里配置两个IP来做共享,因为要模拟两条路径的情况
/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952/tpg1/portals/ delete 0.0.0.0 3260
/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952/tpg1/portals/ create 10.253.170.201 3260
/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952/tpg1/portals/ create 10.253.170.202 3260
配置共享资源
创建LUN代表设备(LUN 逻辑单元关联后端存储)
create /backstores/block/lun0 lun=lun0 #链接后端存储,lun可以自定义,默认是lun0
设置访问控制列表
开启ACL
/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952/tpg1/ set attribute generate_node_acls=1
Parameter generate_node_acls is now '1'.
/>
查看全局配置
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- test ............................................................................ [/dev/vdb (40.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.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952 ..................................................... [TPGs: 1]
| o- tpg1 .................................................................................................. [gen-acls, no-auth]
| o- acls .......................................................................................................... [ACLs: 1]
| | o- iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952 ........................................ [Mapped LUNs: 1]
| | o- mapped_lun0 .................................................................................. [lun0 block/test (rw)]
| o- luns .......................................................................................................... [LUNs: 1]
| | o- lun0 ....................................................................... [block/test (/dev/vdb) (default_tg_pt_gp)]
| o- portals .................................................................................................... [Portals: 2]
| o- 10.253.170.201:3260 .............................................................................................. [OK]
| o- 10.253.170.202:3260 .............................................................................................. [OK]
o- loopback ......................................................................................................... [Targets: 0]
o- vhost ............................................................................................................ [Targets: 0]
o- xen-pvscsi ....................................................................................................... [Targets: 0]
这里监听端口配置使用默认设置,也就是0.0.0.0:3206,也就是说使用本机的所有IP都可访问到,因为本次测试不涉及到端口监听,所以不用修改这块的配置
退出会自动保存配置信息,并重启target服务
确认下端口监听是否正常
到这里,存储端(服务端的配置就完成了)
关闭firewalld和selinux这个两个默认步骤别忘记!!!
客户端
软件安装
安装iSCSI客户端,我这里是open-iscsi
因为操作系统的不同,客户端软件可能会有所不同,但是操作是一样的。
### 配置修改
修改客户端iSCSI 唯一标识
iSCSI 协议是通过客户端的名称来进行验证,而该名称也是 iSCSI 客户端的唯一标识,而且必须与服务端配置文件中访问控制列表中的信息一致,否则客户端在尝试访问存储共享设备时,系统会弹出验证失败的保存信息。
将原先文件中的InitiatorName注释,添加配置好的服务端的InitiatorName
重启iscsi服务
连接存储
扫描iSCSI服务端的存储资源,这里没有指定监听IP,所以需要使用客户端的主机IP
m discovery 扫描并发现可用的存储资源
-t sendtargets 指定 SCSI 目标发现
-p xx.xx.xx.xx 指定 iSCSI 发现的网络地址
[root@client ~]# iscsiadm -m discovery -t st -p 10.253.170.201:3260
10.253.170.201:3260,1 iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952
10.253.170.202:3260,1 iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952
[root@client ~]#
[root@client ~]# iscsiadm -m discovery -t st -p 10.253.170.202:3260
10.253.170.201:3260,1 iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952
10.253.170.202:3260,1 iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952
[root@client ~]#
连接iSCSI Target
[root@client ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952 -p 10.253.170.202:3260 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952, portal: 10.253.170.202,3260]
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952, portal: 10.253.170.202,3260] successful.
[root@client ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952 -p 10.253.170.201:3260 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952, portal: 10.253.170.201,3260]
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952, portal: 10.253.170.201,3260] successful.
查看客户端的连接情况
sda和sdb设备就是我们的iSCSI存储,到这里iSCSI存储的配置就完成了
[root@client ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 1 disk
sdb 8:16 0 40G 1 disk
sr0 11:0 1 3.9G 0 rom /mnt
vda 253:0 0 40G 0 disk
├─vda1 253:1 0 600M 0 part /boot/efi
├─vda2 253:2 0 1G 0 part /boot
└─vda3 253:3 0 38.4G 0 part
├─klas-root 252:0 0 34.4G 0 lvm /
└─klas-swap 252:1 0 4G 0 lvm [SWAP]