《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