首页 > 代码库 > iSCSI服务部署文档
iSCSI服务部署文档
文档目的
部署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] | 删除portals下ip地址和端口 |
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)
查看RAID阵列UUID值
mdadm -D /dev/md0
创建RAID阵列配置文件
vim /etc/mdadm.conf
写入以下语句
DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde
ARRAY /dev/md0 UUID=edf6f2dd:17c58f31:e60b3208:e585f906
2.安装target服务程序
yum -y install targetd targetcli
启动iSCSI target服务程序
systemctl start targetd
添加iSCSI target服务到开机启动项
systemctl enable targetd
3.创建存储对象
targetcli
进入/backstores/block目录中创建设备disk0
cd /backstores/block
create disk0 /dev/md0
返回根目录,查看创建后的设备
cd /
ls
4.配置iSCSI target目标
进入iscis目录
cd iscsi
创建iSCSI target 目标
create
进入target/luns目录中创建LUN设备
cd iqn.2003-...........
cd tpg1
cd luns
create /backstores/block/disk0
5.设置访问控制列表
创建访问控制列表
ls /
cd ..
cd acls
create iqn.2003-01.org.linux-iscsi.centos-cloud.x8664:sn.c15800d54445:client
注:create的acl名字可以用 ls / 查看iscisi下targetID,并在显示的targetID后加上“:client”
切换到portals目录中,先删除0.0.0.0:3260, 再添加允许监听的IP地址
cd ..
cd portals
delete 0.0.0.0 3260
create 172.16.34.71
注:这里一定要先删除0.0.0.0地址,否则会报错“Could not create NetworkPortal in configFS”!
6.关闭端口防火墙
firewall-cmd --zone=public --add-port=3260/tcp --permanent
firewall-cmd --reload
配置iSCSI客户端
1.检查能否与iscsi服务端通信
ping -c 172.16.34.71
2. 安装客户端服务程序
yum install iscsi-initiator-utils -y
3.编辑iscsi客户端名称文件
vim /etc/iscsi/initiatorname.iscsi
替换以下语句
InitiatorName=iqn.2003-01.org.linux-iscsi.centos-cloud.x8664:sn.c15800d54445:client
注:这里的名字必须与iscsi服务端设置的acls名称一致,否则会报错“iSCSI login failed due to authorization failure”!
重启iscsi客户端服务
systemctl restart iscsid
发现iscsi服务端的可用存储设备
iscsiadm -m discovery -t st -p 172.16.34.71
连接iscsi服务端的可用存储设备
iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.centos-cloud.x8664:sn.c15800d54445 -p 172.16.34.71 --login
验证
file /dev/sdb
连接前
fdisk -l
连接后
fdisk -l
格式化磁盘
mkfs.xfs /dev/sdb
mkdir /iscsi
mount /dev/sdb /iscsi
df -h
常见问题
问题一:无法建立本地IP portals 监听,显示“Could not create NetworkPortal in configFS”
解决方法:
删除/iscsi/iqn.20../portals 已有IP:端口,再次建立即可
cd /iscsi/iqn.20../tpg1/portals
delete 0.0.0.0 3260
create 172.16.34.70 (这里的IP是iSCSI服务器的IP地址)
问题二:iSCSI客户端无法连接iSCSI服务端,显示错误“iSCSI login failed due to authorization failure”
解决方法:
客户端中的initiator唯一标识(/etc/iscsi/initiatorname.iscsi)必须和服务器上的名字一直
客户端 vim /etc/iscsi/initiatorname.iscsi
服务端
targetcli
cd /
ls
参考文献
文章架构:
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
本文出自 “11591346” 博客,请务必保留此出处http://11601346.blog.51cto.com/11591346/1867422
iSCSI服务部署文档