iscsi 服务搭建

ISCSI 简介

iSCSI(Internet Small Computer System Interface,发音为/ˈаɪskʌzi/),Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:

  • 把原来只用于本机的SCSI协义透过TCP/IP网络发送,使连接距离可作无限的地域延伸;

  • 连接的服务器数量无限(原来的SCSI-3的上限是15);

  • 由于是服务器架构,因此也可以实现在线扩容以至动态部署。

ISCSI原理图 ISCSI原理图

安装配置ISCSI服务

安装

yum install -y targetcli

启动服务

systemctl start target

配置服务

先需要有一块硬盘,再新建一个分区

[root@localhost ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0      2:0    1    4K  0 disk 
sda      8:0    0   60G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0    4G  0 part [SWAP]
└─sda3   8:3    0 55.5G  0 part /
sdb      8:16   0   10G  0 disk 
└─sdb1   8:17   0    2G  0 part 
sr0     11:0    1    4G  0 rom

使用targetcli命令配置

[root@localhost ~]# targetcli 
targetcli shell version 2.1.fb46
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]
/>

创建一个block设备 关联设备/dev/sdb1

/backstores/block create westos:storage1 /dev/sdb1

/> /backstores/block create westos:storage1 /dev/sdb1
Created block storage object westos:storage1 using /dev/sdb1.
/> ls
o- / ............................................................................................................. [...]
  o- backstores .................................................................................................. [...]
  | o- block ...................................................................................... [Storage Objects: 1]
  | | o- westos:storage1 .................................................. [/dev/sdb1 (0 bytes) 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共享,iqn是唯一标识

/iscsi create iqn.2018-10.com.westos:storage1

/> /iscsi create iqn.2018-10.com.westos:storage1
Created target iqn.2018-10.com.westos:storage1.
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: 1]
  | | o- westos:storage1 .................................................. [/dev/sdb1 (0 bytes) 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: 1]
  | o- iqn.2018-10.com.westos:storage1 ....................................................................... [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]
/>

然后配置tpg1属性

  • /iscsi/iqn.2018-06.com.westos:storage1/tpg1/acls create iqn.2018-06.com.example:westoskey #cal配置

  • /iscsi/iqn.2018-06.com.westos:storage1/tpg1/luns create /backstores/block/westos:storage1 #luns配置

  • /iscsi/iqn.2018-06.com.westos:storage1/tpg1/portals/ create 172.25.254.101 #portals配置

/> /iscsi/iqn.2018-10.com.westos:storage1/tpg1/acls create iqn.2018-10.com.example:westoskey
Created Node ACL for iqn.2018-10.com.example:westoskey
/> /iscsi/iqn.2018-10.com.westos:storage1/tpg1/luns create /backstores/block/westos:storage1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2018-10.com.example:westoskey
/> /iscsi/iqn.2018-10.com.westos:storage1/tpg1/portals/ create 192.168.3.150
Using default IP port 3260
Could not create NetworkPortal in configFS
/> ls
o- / ............................................................................................................. [...]
  o- backstores .................................................................................................. [...]
  | o- block ...................................................................................... [Storage Objects: 1]
  | | o- westos:storage1 .................................................... [/dev/sdb1 (0 bytes) 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.2018-10.com.westos:storage1 ....................................................................... [TPGs: 1]
  |   o- tpg1 ................................................................................... [no-gen-acls, no-auth]
  |     o- acls .............................................................................................. [ACLs: 1]
  |     | o- iqn.2018-10.com.example:westoskey ........................................................ [Mapped LUNs: 1]
  |     |   o- mapped_lun0 ........................................................... [lun0 block/westos:storage1 (rw)]
  |     o- luns .............................................................................................. [LUNs: 1]
  |     | o- lun0 ............................................... [block/westos:storage1 (/dev/sdb1) (default_tg_pt_gp)]
  |     o- portals ........................................................................................ [Portals: 1]
  |       o- 0.0.0.0:3260 ......................................................................................... [OK]
  o- loopback ............................................................................................. [Targets: 0]
/>

有一个报错信息:

Could not create NetworkPortal in configFS

原因是再/iscsi/portals/下已经存在IP地址。可以直接跳过,获取删除,重新创建。

/> /iscsi/iqn.2018-10.com.westos:storage1/tpg1/portals/ delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/> /iscsi/iqn.2018-10.com.westos:storage1/tpg1/portals/ create 192.168.3.150
Using default IP port 3260
Created network portal 192.168.3.150:3260.
/> ls
o- / ............................................................................................................. [...]
  o- backstores .................................................................................................. [...]
  | o- block ...................................................................................... [Storage Objects: 1]
  | | o- westos:storage1 .................................................... [/dev/sdb1 (0 bytes) 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.2018-10.com.westos:storage1 ....................................................................... [TPGs: 1]
  |   o- tpg1 ................................................................................... [no-gen-acls, no-auth]
  |     o- acls .............................................................................................. [ACLs: 1]
  |     | o- iqn.2018-10.com.example:westoskey ........................................................ [Mapped LUNs: 1]
  |     |   o- mapped_lun0 ........................................................... [lun0 block/westos:storage1 (rw)]
  |     o- luns .............................................................................................. [LUNs: 1]
  |     | o- lun0 ............................................... [block/westos:storage1 (/dev/sdb1) (default_tg_pt_gp)]
  |     o- portals ........................................................................................ [Portals: 1]
  |       o- 192.168.3.150:3260 ................................................................................... [OK]
  o- loopback ............................................................................................. [Targets: 0]
/>

exit 退出

/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json

客户端连接

安装客户端:

yum install -y iscsi-initiator-utils

客户端命令:

  • iscsiadm -m discovery -t st -p 192.168.3.150 #查看

  • iscsiadm -m node -T iqn.2018-10.com.westos:storage1 -p 192.168.3.150 -l #登陆连接

  • iscsiadm -m node -T iqn.2018-10.com.westos:storage1 -u #退出登陆

  • iscsiadm -m node -T iqn.2018-10.com.westos:storage1 -o delete #删除登陆数据

先发现共享设备

[root@localhost ~]# iscsiadm -m discovery -t st -p 192.168.3.150
192.168.3.150:3260,1 iqn.2018-10.com.westos:storage1

登陆的时候要先更改登陆key,设置成我们刚才配置的cals,key

key在/etc/iscsi/initiatorname.iscsi #key路径

[root@localhost ~]# vim /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.2018-10.com.example:westoskey

登录

注:请关闭防火墙和selinux

[root@localhost mnt]# iscsiadm -m node -T iqn.2018-10.com.westos:storage1 -p 192.168.3.150 -l
Logging in to [iface: default, target: iqn.2018-10.com.westos:storage1, portal: 192.168.3.150,3260] (multiple)
Login to [iface: default, target: iqn.2018-10.com.westos:storage1, portal: 192.168.3.150,3260] successful.
[root@localhost ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0      2:0    1    4K  0 disk 
sda      8:0    0   40G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0    8G  0 part [SWAP]
└─sda3   8:3    0 31.5G  0 part /
sdb      8:16   0    2G  0 disk 
└─sdb1   8:17   0    2G  0 part 
sr0     11:0    1 1024M  0 rom

使用

[root@localhost mnt]# mount /dev/sdb1 /mnt

自动挂载

$ vim /etc/fstab

UUID=36a782c3-277d-482a-a96d-c9bb1f3fc2a6 /                       xfs     defaults        0 0
UUID=dfaefcf8-2ab7-4d94-b64b-1cce99ba2839 /boot                   xfs     defaults        0 0
UUID=85a837f3-3aba-4f28-a26b-12d7cdbbd123 swap                    swap    defaults        0 0
/dev/sdb        /mnt    xfs     defaults,_netdev        0 0
$ vim /etc/rc.local

touch /var/lock/subsys/local
mount /dev/sdb /mnt

登出

  • iscsiadm -m node -T iqn.2018-10.com.westos:storage1 -u #登出

  • iscsiadm -m node -T iqn.2018-10.com.westos:storage1 -o delete #删除本地登陆

若不删除本地文件,重启后自动登陆本地记录的远程设备

最后更新于

这有帮助吗?