Centos创建iscsi存储

参考:

https://blog.csdn.net/weixin_45052781/article/details/121300343

ISCSI服务介绍

  • 全称:Internet Small Computer System Interface——互联网小型计算机接口
    通过网络获取磁盘设备在本地进行存储使用。
  • iscsi是基于TCP/IP和scsi协议的一项技术,任一主机通过iscsi target功能成为iscsi存储空间的共享者/服务端;同样的,任一主机通过iscsi initiator(初始化用户)功能可以成为iscsi存储空间的使用者/客户端;限制iscsi的相互之间的联系需要配置规则,在无规则情况下,双方是可以建立联系的

  • 由于iscsi和scsi差的是一个internet(tcp/ip协议),大同小异,所以阅读本文时可以将iscsi和scsi视为同一物。(虽然严格来说不一样

环境规划

地址角色其他
10.0.0.10服务端
10.0.0.11客户端

服务端搭建

安装服务端软件

1
2
3
# 安装软件
yum install targetcli.noarch -y
yum install targetd targetcli -y # 共享磁盘服务

环境配置

1
2
3
4
5
systemctl restart target //重启target服务
systemctl stop firewalld //记得关闭防火墙或者配置防火墙规则也可以
# centos7永久开放3260端口:
firewall-cmd --zone=public --add-port=3260/tcp --permanent
setenforce 0 //暂时关闭selinux

配置服务端输入 targetcli 进入交互式界面

交互式操作需要用到的命令:标黄色部分

targetcli

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
[root@zxw1 ~]# 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'.

/> 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]
/> cd /backstores/block
/backstores/block> ls
o- block ...................................................................................................... [Storage Objects: 0]
/backstores/block> create dev=/dev/sdb name=disk0
Created block storage object disk0 using /dev/sdb.
/backstores/block> cd iscsi
No such path /backstores/block/iscsi
/backstores/block> ls
o- block ...................................................................................................... [Storage Objects: 1]
o- disk0 .............................................................................. [/dev/sdb (5.0GiB) write-thru deactivated]
o- alua ....................................................................................................... [ALUA Groups: 1]
o- default_tg_pt_gp ........................................................................... [ALUA state: Active/optimized]
/backstores/block> cd /iscsi
/iscsi> ls
o- iscsi .............................................................................................................. [Targets: 0]
/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> ls
o- iscsi .............................................................................................................. [Targets: 1]
o- iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22 .............................................................. [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]
/iscsi> cd iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22/tpg1/
/iscsi/iqn.20...f8aabb22/tpg1> ls
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]
/iscsi/iqn.20...f8aabb22/tpg1> set attribute authentication=0 demo_mode_write_protect=0 generate_node_acls=1 cache_dynamic_acls=1
Parameter demo_mode_write_protect is now '0'.
Parameter authentication is now '0'.
Parameter generate_node_acls is now '1'.
Parameter cache_dynamic_acls is now '1'.
/iscsi/iqn.20...f8aabb22/tpg1> cd luns
/iscsi/iqn.20...b22/tpg1/luns> ls
o- luns .................................................................................................................. [LUNs: 0]
/iscsi/iqn.20...b22/tpg1/luns> create /backstores/block/disk0
Created LUN 0.
/iscsi/iqn.20...b22/tpg1/luns> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json

上述无论任何IP客服端均可连接

参数命令解释

配置iscsi服务器端的共享资源
  • 使用targetcli命令管理iscsi的配置,它提供了一个交互式的配置界面,类似fdisk命令
  • 执行targetcli进入配置界面
  • 查看初始配置

进入到 /backstores/block 目录,将创建的md0或者磁盘添加到共享设备的“资源池”中

将文件重新命名为disk0

backstores/block #物理卷 如果创建的是物理卷在该目录创建

backstores/fileio #逻辑卷 如果创建的是逻辑卷在该目录创建 如lv

我们之前加入了一个sdb磁盘

利用sdb创建

1
2
cd backstores/block
create disk0 /dev/sdb

创建iscsi target名称及配置共享资源

  • iscsi target名称是由系统自动生成的,这是一串用于描述共享资源的唯一字符串
  • 用户在扫描iscsi服务端时会显示这个target名称。进入到/iscsi目录下,生成target名称,
  • 同时会创建一个同名的“目录”,来存放共享资源
1
2
cd /iscsi
create

进入到新创建的目录中,将disk0添加到这个新目录
1
2
3
cd iqn.2003-01.org.linux-iscsi.ceph01.x8664:sn.22f6a7064678/tpg1/luns

create /backstores/block/disk0

目录:/iscsi/iqn.2003-01.org.linux-iscsi.ceph01.x8664:sn.22f6a7064678/tpg1/luns

二、设置访问控制列表(ACL)

  • 不设置则所有人都可以挂载此块磁盘

  • 名称与服务端中设置的访问控制列表中某一名称条目一致即可。acls参数目录用于存放能够访问iscsi服务

  • 共享存储资源的客户端名称。

  • 在iscsi服务端的配置文件中写入一串能够验证用户信息的名称,这里使用target名称,加上:client,这个

  • 自己定义的字符串,具有唯一性即可

  • iscsi协议是通过客户端名称进行验证的,用户在访问存储共享资源是不需要输入密码,只要iscsi客户端的

  • targetcli进入交互界面

    目录:/iscsi/iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22/tpg1/acls

    1
    2
    cd /iscsi/iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22/tpg1/acls
    create iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22:client

设置iscsi服务端监听的IP和端口号

目录:/iscsi/iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22/tpg1/portals

此IP需要是服务端的IP(10.0.0.10)

1
2
3
cd /iscsi/iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22/tpg1/portals
delete 0.0.0.0 3260
create 10.0.0.10 3260

先删掉之前默认生成的0.0.0.0否则会报错

检查配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/iscsi/iqn.20.../tpg1/portals> cd /
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- disk0 ............................................................................ [/dev/sdb (5.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.zxw1.x8664:sn.a27ff8aabb22 ............................................................ [TPGs: 1]
| o- tpg1 .................................................................................................. [gen-acls, no-auth]
| o- acls .......................................................................................................... [ACLs: 1]
| | o- iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22:client ........................................ [Mapped LUNs: 1]
| | o- mapped_lun0 ................................................................................. [lun0 block/disk0 (rw)]
| o- luns .......................................................................................................... [LUNs: 1]
| | o- lun0 ...................................................................... [block/disk0 (/dev/sdb) (default_tg_pt_gp)]
| o- portals .................................................................................................... [Portals: 1]
| o- 10.0.0.11:3260 ................................................................................................... [OK]
o- loopback ......................................................................................................... [Targets: 0]
/> saveconfig
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json

最后:saveconfig 保存

若:有多块磁盘依次创建即可

如果一个客服端要连接多个服务端则需要设置的chap一样 ascl一样如下

三、重启服务,配置防火墙

1
2
3
systemctl restart targetd
firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload

iscsi服务器端配置完成。

四、iscsi客户端搭建

配置linux客户端

使用yum安装客户端软件iscsi-initiator-utils

1
yum install iscsi-initiator-utils -y
修改配置文件

编辑客户端中的initiator名称文件,把服务器端的访问控制列表名称填写进来(服务器端acls目录中自定义的名称),重启服务。

1
2
3
4
5
6
7
8
9
vim /etc/iscsi/initiatorname.iscsi
# 默认配置
InitiatorName=iqn.1994-05.com.redhat:391499fd3913
# 修改后
InitiatorName=iqn.1994-05.com.redhat:391499fd3913
InitiatorName=iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22:client
# 重启客户端
systemctl restart iscsid
systemctl enable iscsid
扫描iscsi服务器端,查看可用的共享存储资源
  • 口诀“先发现,在登陆,最后挂载并使用”。

  • iscsiadm 用于管理、查询、插入、更新或删除iscsi数据库配置文件的工具。

  • -m discovery 扫描并发现可用的存储资源

  • -t st 执行扫描操作的类型

  • -p 192.168.137.10 参数为iscsi服务端的IP地址

1
iscsiadm -m discovery -t st -p 10.0.0.10
登录iscsi服务端
  • 使用iscsiadm命令
  • -m node 将客户端所在主机作为一台节点服务器
  • -T iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22 指定要使用的资源
  • –login 或-l 进行登录验证
1
2
3
4
iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22 -p 10.0.0.10 --login
......

successful

登录成功后,会在客户端多出一块存储设备/dev/sdb(设备名可能不同),现在就可以对新设备进行分区,挂载使用了。

四、卸载存储设备

使用iscsiadm -u 将设备卸载

1
2
iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.zxw1.x8664:sn.a27ff8aabb22 -p 10.0.0.10 -u

五、扩展

创建chap认证 等待下次文档更新时间