文档目的

部署iSCSI服务

基础知识

传统的SCSI小型计算机系统接口(Small Computer System Interface)技术是存储设备最基本的标准协议,但通常需要设备互相靠近并用SCSI总线链接,因此受到了物理环境的限制。

 

iSCSI小型计算机系统接口(即Internet Small Computer System Interface)则是由IBM公司研究开发用于实现在IP网络上运行SCSI协议的新存储技术,即能够让SCSI接口与以太网技术相结合,使用iSCSI协议基于以太网传送SCSI命令与数据,克服了SCSI需要直接连接存储设备的局限性,使得我们可以跨越不同的服务器共享存储设备,并可以做到不停机状态下扩展存储容量。

 

SAN存储区域网络技术(Storage Area Network)便是基于iSCSI存储协议,采用高速光钎通道传输存储数据的服务程序。

 

逻辑单元LUN(Logical Unit Number)是使用iSCSI协议中的重要概念,因为当客户机想要使用服务端存储设备时都必需输入对应的名称(Target ID),而一个服务端可能会同时提供多个可用的存储设备,于是便用LUN来详细的描述设备或对象,同时每个LUN Device可能代表一个硬盘或RAID设备,LUN的名称由用户指定。

 

 

iSCSI的工作方式分为服务端(target)与客户端(initiator

 

 

常用命令

mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde

创建RAID 5

mdadm -D /dev/md0

查看RAID阵列详细信息,获取UUID

create

iSCSI中创建磁盘镜像

delete [ip] [port]

删除portalsip地址和端口

systemctl restart iscsid

iscsi客户端重启

iscsiadm

 


file /dev/sdb

检查硬盘信息

 

所需软件

 

targetd

targetcli

 

系统环境

服务器:Linux version 3.10.0-229.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) )

 

客户端:Linux version 3.10.0-229.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) )

 

 

 

操作步骤

配置iSCSI服务器

1.准备作为LUN发布的存储设备

现在虚拟机中添加四个容量为20GB的硬盘

 

创建RAID5并且设置一块备份用的故障盘

mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb  /dev/sdc  /dev/sdd  /dev/sde

注:如果提示mdadm命令未找到,请先安装mdadm命令(yum install mdadm -y


wKioL1gV0x-D4CZqAAAcv6f5by8739.png


查看RAID阵列UUID

mdadm -D /dev/md0


wKiom1gV0zyxEs7JAAAZUQZHzfM882.png


创建RAID阵列配置文件

vim /etc/mdadm.conf

 

写入以下语句

DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde

ARRAY /dev/md0 UUID=edf6f2dd:17c58f31:e60b3208:e585f906



wKioL1gV01XTjxbgAAAKm_q1mU0445.png


2.安装target服务程序

yum -y install targetd targetcli

 

启动iSCSI target服务程序

systemctl start targetd

 

添加iSCSI target服务到开机启动项

systemctl enable targetd

 

 

3.创建存储对象

targetcli


wKiom1gV03SzLQgtAAASHSVDvJA820.png


进入/backstores/block目录中创建设备disk0

 

cd /backstores/block

create disk0 /dev/md0



wKiom1gV04ugCjPkAAAuXnujkiU246.png


返回根目录,查看创建后的设备

 

cd /

ls


wKioL1gV06GT_YvfAAA2TNBtves678.png


4.配置iSCSI target目标

进入iscis目录

cd iscsi

 

创建iSCSI target 目标

create

 

进入target/luns目录中创建LUN设备

cd iqn.2003-...........

cd tpg1

cd luns

create /backstores/block/disk0


wKioL1gV08PSWX1LAAAiTIYU7kg232.png


5.设置访问控制列表

创建访问控制列表

ls /

cd ..

cd acls

create iqn.2003-01.org.linux-iscsi.centos-cloud.x8664:sn.c15800d54445:client

注:createacl名字可以用 ls / 查看iscisitargetID,并在显示的targetID后加上“:client


wKiom1gV096CEwf6AABp0Y61s2c984.png


切换到portals目录中,先删除0.0.0.0:3260, 再添加允许监听的IP地址

cd ..

cd portals

delete 0.0.0.0 3260

create 172.16.34.71


wKioL1gV0_nzxdBKAAAf-pgliVw185.png


注:这里一定要先删除0.0.0.0地址,否则会报错“Could not create NetworkPortal in configFS”!


wKiom1gV1BbTS3koAABg5kgbvwc231.png


6.关闭端口防火墙

firewall-cmd --zone=public --add-port=3260/tcp --permanent

firewall-cmd --reload


wKiom1gV1C-BcOdRAAAPknpgov8914.png



配置iSCSI客户端

1.检查能否与iscsi服务端通信

ping -c 172.16.34.71

 

2. 安装客户端服务程序

yum install iscsi-initiator-utils -y


wKioL1gV1FSiiMF4AAALFlM5sjU583.png


3.编辑iscsi客户端名称文件

vim /etc/iscsi/initiatorname.iscsi

 

替换以下语句

InitiatorName=iqn.2003-01.org.linux-iscsi.centos-cloud.x8664:sn.c15800d54445:client


wKiom1gV1HDDRglRAAAJcKcg2L8523.png


注:这里的名字必须与iscsi服务端设置的acls名称一致,否则会报错“iSCSI login failed due to authorization failure”!

 

 

重启iscsi客户端服务

systemctl restart iscsid

 

 

发现iscsi服务端的可用存储设备

iscsiadm -m discovery -t st -p 172.16.34.71



wKiom1gV1LmDARjLAAAL3BESEec000.png


连接iscsi服务端的可用存储设备

iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.centos-cloud.x8664:sn.c15800d54445 -p 172.16.34.71 --login


wKioL1gV1NzQlBK0AAAg8dUbdCY146.png


验证

file /dev/sdb

连接前

fdisk -l



wKioL1gV1P2hHTneAABm2jqUpL4433.png


连接后

fdisk -l


wKioL1gV1RjhbrmLAABp0advC9o644.png


格式化磁盘

mkfs.xfs /dev/sdb



wKioL1gV1TLASuONAAAY2Rd_tpU809.png


mkdir /iscsi

mount /dev/sdb  /iscsi

df -h


wKiom1gV1UnhIqdwAAAoORYQaN4871.png


常见问题

问题一:无法建立本地IP portals 监听,显示“Could not create NetworkPortal in configFS”

wKiom1gV1W_DkfzdAAANAAlDhu8939.png


解决方法:

删除/iscsi/iqn.20../portals 已有IP:端口,再次建立即可

cd /iscsi/iqn.20../tpg1/portals

delete 0.0.0.0 3260

create 172.16.34.70    (这里的IPiSCSI服务器的IP地址)


wKioL1gV1auyFzFdAABPsuOMQxw041.png

wKioL1gV1auw2BtyAAAVWgmepJw981.png



问题二:iSCSI客户端无法连接iSCSI服务端,显示错误“iSCSI login failed due to authorization failure”

wKiom1gV1ciBo1A2AAAqEXNN0xc835.png

解决方法:

客户端中的initiator唯一标识(/etc/iscsi/initiatorname.iscsi)必须和服务器上的名字一直

客户端 vim /etc/iscsi/initiatorname.iscsi 

wKiom1gV1fDhdWVzAAALU9-f0Ig479.png

服务端

targetcli

cd /

ls


wKiom1gV1grCylRXAABpv2zfE3Q907.png

参考文献

文章架构:

http://www.linuxprobe.com/chapter-17.html

http://www.linuxprobe.com/chapter-07.html

 

create IP 问题:

http://target-devel.vger.kernel.narkive.com/kxGYQSnh/could-not-create-networkportal-in-configfs