第17章 使用iSCSI部署网络存储

413 阅读3分钟

《Linux就该这么学》

实验环境

准备俩台虚拟机

  • iscsi-server端:172.22.7.7 (服务端准备3块硬盘)
  • iscsi-client端:172.22.7.10

iSCSI简介

iSCSI是一种协议,这种协议规定了客户端要如何通过TCP/IP网络去访问远端的存储设备,简单来说就是将SCSI接口的命令和数据封装在IP数据包中,以实现跨区域的存储资源共享。

1. 服务端配置

1.1 创建磁盘阵列

创建磁盘阵列是为了给客户端提供更稳定可靠的服务,也可以直接使用硬盘

mdadm -Cv /dev/md0 -n 3 -l 5  /dev/vdb /dev/vdc /dev/vdd
# 查看
mdadm -D /dev/md0

1.2 配置iscsi服务端

#安装targetcli工具
yum install -y targetcli

1.3 将创建的md0设备交给iscsi管理

这里使用targetcli命令进入交互式的配置页面,这里可以使用cd切换不同的目录进行配置,使用ls查看当前目录下的配置

  • targetcli 下主要有两个目录
  • backstores目录: iscsi的后端存储资源池
  • iscsi目录: 用于存放iscsi target设备,客户端挂载时使用的就是这些设备
#targetcli

/>ls
/>cd backstores/block/        # 这里是iscsi配置服务端要提供给客户端的后端存储的位置(存储资源池)
/backstores/block>  create disk0 /dev/md0       # 将md0纳入iscsi管理,使用别名disk0来提供服务(将md0放入存储资源池)

/>cd /iscsi                   # 在该目录下创建target, 系统会自动生成名称
/iscsi> create

/iscsi/iqn.20...f85/tpg1/acls>  # 进入target的acl 创建客户端名称,可以创建多个(客户端配置该名称后才能访问存储) 
/iscsi/iqn.20.../tpg1/portals>   # 配置服务端监听的地址和端口, delete删除后可重新配置
/>exit    # 保存退出,必须使用exit,否则不会保存

[root@master03 ~]# targetcli
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/>
/>
/>
/>
/>
/> cd backstores/block
/backstores/block> ls
o- block ...................................................................................................... [Storage Objects: 0]
/backstores/block>
/backstores/block>
/backstores/block> create czpool1 /dev/sdj
Created block storage object czpool1 using /dev/sdj.
/backstores/block>
/backstores/block>
/backstores/block> ls
o- block ...................................................................................................... [Storage Objects: 1]
  o- czpool1 .......................................................................... [/dev/sdj (838.4GiB) write-thru deactivated]
    o- alua ....................................................................................................... [ALUA Groups: 1]
      o- default_tg_pt_gp ........................................................................... [ALUA state: Active/optimized]
/backstores/block>
/backstores/block>
/backstores/block>
/backstores/block> cd /iscsi
/iscsi> ls
o- iscsi .............................................................................................................. [Targets: 0]
/iscsi>
/iscsi> create   #创建IQN
Created target iqn.2003-01.org.linux-iscsi.master03.x8664:sn.3b7dc8b1c47d.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> 
/iscsi> ls
o- iscsi .............................................................................................................. [Targets: 1]
  o- iqn.2003-01.org.linux-iscsi.master03.x8664:sn.3b7dc8b1c47d .......................................................... [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>
/iscsi>
/iscsi> cd iqn.2003-01.org.linux-iscsi.master03.x8664:sn.3b7dc8b1c47d/tpg1/luns
/iscsi/iqn.20...47d/tpg1/luns> 
/iscsi/iqn.20...47d/tpg1/luns> create /backstores/block/czpool1
Created LUN 0.
/iscsi/iqn.20...47d/tpg1/luns> 
/iscsi/iqn.20...47d/tpg1/luns> cd ../
../acls/     ../luns/     ../portals/
/iscsi/iqn.20...47d/tpg1/luns> cd ../portals/
/iscsi/iqn.20.../tpg1/portals> ls
o- portals ............................................................................................................ [Portals: 1]
  o- 0.0.0.0:3260 ............................................................................................................. [OK]
/iscsi/iqn.20.../tpg1/portals> 
/iscsi/iqn.20.../tpg1/portals> 
/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/iscsi/iqn.20.../tpg1/portals> 
/iscsi/iqn.20.../tpg1/portals> 
/iscsi/iqn.20.../tpg1/portals> 
/iscsi/iqn.20.../tpg1/portals> create 172.22.1.18 3260
Using default IP port 3260
Created network portal 172.22.1.18:3260.
/iscsi/iqn.20.../tpg1/portals> 
/iscsi/iqn.20.../tpg1/portals> 
/iscsi/iqn.20.../tpg1/portals> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
[root@master03 ~]# vi /etc/target/saveconfig.json


/backstores/block> create dev=/dev/sdh name=czpool3   # 1. 创建一个后端存储
Created block storage object czpool3 using /dev/sdh.
/backstores/block>
/iscsi> create                                        # 2. 创建一个target
Created target iqn.2003-01.org.linux-iscsi.master03.x8664:sn.5dc08ca15b3c.
Created TPG 1.
Default portal not created, TPGs within a target cannot share ip:port.
/iscsi>
/iscsi> cd iqn.2003-01.org.linux-iscsi.master03.x8664:sn.5dc08ca15b3c/tpg1/luns
/iscsi/iqn.20...b3c/tpg1/luns> 
/iscsi/iqn.20...b3c/tpg1/luns> create /backstores/block/czpool3 # 3. 在target下创建一个lun


/iscsi/iqn.20.../tpg1/portals> create 172.22.1.18 3260  # 4. 创建一个访问端点
Using default IP port 3260
Created network portal 172.22.1.18:3260.
/iscsi/iqn.20.../tpg1/portals>



2. 客户端配置

2.1 安装工具

yum install -y iscsi-initiator-utils

vi /etc/iscsi/initiatorname.iscsi
修改name为在服务端acl中配置的name

systemctl restart iscsid
重启使配置生效

2.2 发现服务端的可用的iscsi target

iscsiadm -m discovery -t st -p 172.22.7.10

2.3 登录

iscsiadm -m node -T iqn.2003-01.x.x.x.x  -p 172.22.7.10 --login
iscsiadm -m node -T iqn.2003-01.x.x.x.x  -p 172.22.7.10 --logout  (logout 前需要umount)

login后会看到该设备 ls -l /dev/sdb

2.4 格式化,然后挂载

mkfs.xfs  /dev/sdb
mount /dev/sdb /opt
# 注意,同一客户端挂载了多个设备时名称在重启后可能会变,导致挂载失败,在/etc/fstab写入后id可以避免
blkid | grep /dev/sdb