1iscsi工作原理与服务器搭建1.1概念iSCSI是因特网小型计算机系统接口(internet Small Computer System Interface)的简称,其是IETF制订的一项标准,用于将SCSI数据块映射为以太网数据包。
从根本上来说,它是一种基于IP Storage 理论的新型存储技术。
简单的说,iSCSI就是在IP网络上运行SCSI 协议的一种网络存储技术。
一个可以用于存储数据的iSCSI磁盘阵列或者具有iSCSI功能的设备都可以称为“iSCSI Target”。
目前大部分iSCSI Target 都是收费的,例如DataCoreSoftware,FalconStor Software的iSCSI Server for Windows等,这些都是支持Windows平台的。
不过在linux平台下也存在iSCSI Target软件,例如iSCSI Enterprise Target,而这也是我们KMJ 所使用的,后面则会重点介绍该软件。
1.2iSCSI的工作原理首先客户端Initiator发出请求建立SCSI CDB(命令描述块),并将其传给iSCSI层。
而iSCSI 层则对SCSI的CDB进行封装,完成SCSI到TCP/IP的协议的映射。
TCP/IP层则对IP报文进行路由转发,并且提供端到端的透明可靠的传输。
1.3搭建iSCSI Target服务器1寻找一台linux服务器,搭建好yum源,我们一般使用kylin 3.1.8或kylin3.2.2操作系统。
2安装iSCSI Target 包yum–y install scsi-target-utils3在该服务器上添加一块空闲分区或者硬盘作为存储盘,比如将/dev/sdb作为映射存储。
4修改配置文件vi /etc/tgt/targets.conf<target zkt> //target名称可自定义backing-store /dev/sdb</target>5启动iSCSI Target服务6service tgtd start7关闭selinux 和防火墙关闭selinux,setenforcesoftmode关闭防火墙,service iptables stop 或者/etc/init.d/iptables start1.4搭建iSCSI Initiator 服务器注:以下操作不需要手动去做,KMJ 已经默认安装或通过web进行配置,只需对其有一定了解即可。
1服务器端的iSCSIInitator 的安装(KMJ上已经安装好了的) 2yum –y install iscsi*3启动Initiator 服务,serviceiscsi start4iSCSI Initiator 目录的功能介绍✓/sbin/iscsiadm 命令。
在安装完iSCSI Initiator后,会生成/sbin/iscsiadm命令,此命令是用来管理(更新、删除、插入、查询)iSCSI 配置数据库文件的命令行工具,用户能够用它对iSCSI nodes、sessions、connections和discovery records进行一系列的操作。
✓/var/lib/iscsi/send_targets 目录。
在此目录下。
会生成一个或多个以iSCSI存储服务器的IP地址和端口号命名的文件夹,文件名为“iSCSI target IP,端口号”(例如“10.1.20.151,3260”).✓/var/lib/iscsi/nodes 目录。
在此目录下,会生成一个或多个以iSCSI 存储服务器上的Target 名命名的文件夹,在该文件夹下有一个文件名为“iSCSIportal IP,端口号”(例如“10.1.20.151,3260”)的配置参数文件,该文件是iSCSIInitator 登陆iSCSI Target时要使用的参数,而这些参数的设置是从/etc/iscsi/iscsi.conf中的参数继承而来的,可以通过iscsiadm 命令对某一个文件参数文件进行修改。
5通过iscsiadm 命令发现存储可以通过如下指令查询iSCSI Target 主机划分了那些luniscsiadm -m discovery –type sendtargets–portal IP或者iscsiadm–m discovery –t sendtarges–p IP如在KMJ上执行以下命令,其中10.1.20.151 为存储服务器:注:需要说明的是,当成功执行一次Target发现后,iSCSI Initiator 就会查询记录写到/var/lib/iscsi/send_targets对应的目录下。
因此,Target发现只需要执行一次即可。
6通过iscsiadm 命令登陆存储,具体指令如下:-T 名字要写对,不然会出现no records found的错误iscsiadm–m node –T <target-name> -p <ip-address>:<portal> --login或者iscsiadm–m node –T <target-name> -p <ip-address> -l这里的“-T”后面跟的是Target名称,“ip-address”是Target 主机的IP地址,“portal”是Target主机的端口号,默认是3260。
注:需要说明的是,执行Target发现操作,其实已经与iSCSI Target 主机建立了连接,此时如果再次执行iscsiadm命令与Target主机建立连接,会提示“iscsiadm:initiator reported error(15 –already exists)”错误,所以需要先断开与iSCSI主机的连接。
具体命令如下所示:7如果存在多个Target主机时,可以通过如下命令一次登陆到所有的Target主机:iscsiadm–m node –loginall=all8验证Target主机已经成功映射到Initiator主机✓通过iscsiadm 命令查看,iscsiadm –m session -i✓通过fdisk -l命令查看分区表,找到对应Target共享磁盘。
9清除连接停止服务:service iscsi stop去除挂载:iscsiadm –m node –o delete重启服务:service iscsi restart2iscsi配置问题的故障排除2.1从本地系统到iscsi目标无连接1成为管理员2列出iscsi目标信息iscsiadm list target3如果iscsiadm list target未列出任何连接,检查/var/adm/message文件,查找失败可能原因✓ping命令或telnet命令与存储设备的iscsi端口连接,可验证连接是否可以访问,从而确保iscsi服务可用,缺省端口为3260。
✓此外检查存储设备的日志文件是否有错误。
4如果iscsiadm list target列出目标,检查/var/adm/message文件,查找原因。
✓如果当前使用SendTargets作为搜索方法,请尝试使用-v选项列出discovery-address,以确保预期目标对于主机是可见的。
如:iscsiadm list discovery-address –v 10.0.0.1✓如果当前使用iSNS作为搜索方法,尝试启用iSNS搜索模式如:iscsiadm list isns-server –v2.2iscsi设备或磁盘在本地系统上不可用1成为管理员2确定在枚举过程中在该目标上搜到到LUN,-s选项可显示在枚举过程中在该目标上搜索到的LUN。
如:iscsiadm list target –S3查看/var/adm/message文件,查看是否报告了错误。
4如果某个LUN应该已列出,但没有列出,检查存储设备的日志文件是否有错误,确保任何存储设备LUN屏蔽均为正确配置。
2.3在使用iSNS搜索方法时使用LUN屏蔽✓避免将iSNS搜索域用作控制特定启动器的存储验证方式,如果确保只有获得授权的启动器才能访问LUN,则使用LUN屏蔽。
✓如果在目标正在使用时从搜索域中删除该目标,则iscsi启动器将不会从该目标注销,如果不需要该启动器访问该目标及关联的LUN,则必须使用LUN屏蔽,仅从搜索域中删除目标是不够的。
2.4一般iscsi错误消息(/var/adm/message)消息格式:iscsi TYPE(OID) STRING (STATUS-CLASS#/STATUS-DETAIL#)TYPE:连接或会话OID:连接或会话的对象ID,此ID对于OS实例是唯一的STRING:条件的说明STATUS-CLASS#/STATUS-DETAIL#:将在iscsi登录响应中返回10iscsi connection(OID) login failed –Initiator is not allowed access to the given target.原因:该设备不允许启动器访问iscsi目标设备。
解决方法:验证启动器名称,并确认该名称已由存储设备正确屏蔽或提供。
11iscsi connection(OID) login failed - Requested ITN does not exist at this address.原因: 该设备不提供对正在请求的iSCSI 目标名称(iSCSI target name, ITN) 的访问权限。
解决方法: 验证正确指定了启动器搜索信息,并且正确配置了存储设备。
12iscsi connection(OID) login failed - Requested ITN has been removed and no forwarding address is provided.原因: 该设备无法再提供对正在请求的iSCSI 目标名称(ITN) 的访问权限。
解决方法: 验证正确指定了启动器搜索信息,并且正确配置了存储设备。
13iscsi connection(OID) login failed - Requested iSCSI version range is not supported by the target.原因: 存储设备不支持启动器的iSCSI 版本。
14iscsi connection(OID) login failed - No more connections can be accepted on this Session ID (SSID).原因: 存储设备无法接受此启动器节点到iSCSI 目标设备的更多连接。