iscsi网络存储介绍及客户端配置操作
本文不介绍iSCSI服务端的搭建过程,不然就会很累赘。主题就是怎么去完成iscsi网络存储的挂载过程,并顺带介绍一些必要的概念。 1. iscsi介绍与initiator安装 1.1 iSCSI介绍 iSCSI简单来说,就是把SCSI指令通过TCP/IP协议封装起来,在以太网中传输。iSCSI 可以实现在IP网络上传递和运行SCSI协议,使其能够在诸如高速千兆以太网上进行数据存取,实现了数据的网际传递和管理。基于iSCSI建立的存储区域网(SAN)与基于光纤的FC-SAN相比,具有很好的性价比。 iSCSI属于端到端的会话层协议,它定义的是SCSI到TCP/IP的映射(如下图),即Initiator将SCSI指令和数据封装成iSCSI协议数据单元,向下提交给TCP层,最后封装成IP数据包在IP网络上传输,到达Target后通过解封装还原成SCSI指令和数据,再由存储控制器发送到指定的驱动器,从而实现SCSI命令和数据在IP网络上的透明传输。它整合了现有的存储协议SCSI和网络协议TCP/IP,实现了存储与TCP/IP网络的无缝融合。在本文中,将把发起器Initiator称为客户端,将目标器Target称为服务端以方便理解。 iSCSI 服务端和客户端的通讯就是一个在网络上封包和解包的过程,在网络的一端,数据包被封装成包括TCP/IP头、iSCSI 识别包和SCSI 数据三部分内容,传输到网络另一端时,这三部分内容分别被顺序地解开。为了保证安全,iSCSI 有约定操作顺序。在首次运行时,客户端(initiator)设备需要登录到服务端(target)中。任何一个接收到没有执行登录过程的客户端的iSCSI PDU (iSCSI rotocol Data Units,iSCSI 协议数据单元)服务端都将生成一个协议错误,并且关闭连接。在关闭会话之前,服务端可能发送回一个被驳回的iSCSI PDU。 在工作时,iSCSI使SCSI数据块由原来的SCSI总线连接扩展到internet上,这一过程有些产品通过硬件来实现,这种硬件产品被简称为TOE(TCP Offload Engine),随着近年来服务器芯片技术的不断发展,服务器处理能力日益强劲,目前更为普遍的是通过软件来实现SCSI数据块的封装过程。这种软件通常被称为iSCSI Initiator软件/驱动。Initiator软件可以将以太网卡虚拟为iSCSI卡,接受和发送iSCSI数据报文,通过普通以太网卡来进行网络连接,但是需要占用CPU资源。另外的TOE和HBA连接转换方式都需要专门的硬件设备来完成,虽然相对昂贵但执行效率高,也可以减轻主机CPU的负载。本文客户端采用Initiator驱动的连接方式。 1.2 Initiator安装 在Linux 2.6内核中提供了iscsi驱动,iSCSI 驱动(driver)使主机拥有了通过IP网络访问存储的能力,但还需要一个具体的客户端工具(Linux用户空间组件)初始化iSCSI驱动,即iscsi-initiator-utils,也是大家常说的open-iscsi。 # rpm -qa|grep iscsi iscsi-initiator-utils-6.2.0.873-10.el6.x86_64 iscsi-initiator-utils-devel-6.2.0.873-10.el6.x86_64 # rpm -qi iscsi-initiator-utils (yum install iscsi-initiator-utils iscsi-initiator-utils-devel) 这个安装将iscsid、iscsiadm安装到 /sbin 目录下,它还将把默认的配置文件安装到/etc/iscsi/目录下: /etc/iscsi/iscsid.conf:所有刚发起的iSCSI session默认都将使用这个文件中的参数设定。 /etc/iscsi/initiatorname.iscsi:软件iSCSI initiator的intiator名称配置文件。 确保iscsid和iscsi两个服务器开机自启动,chkconfig --list |grep iscsi,在iscsi启动的时候,iscsid和iscsiadm会读取这两个配置文件。 service iscsid [status|start] service iscsi status 查看iscisi的信息,只有在连接成功后才输出 这里可能遇到start始终没有启动成功的信息输出,请继续往下执行discovery,一般会启动iscsid。 1.3 open-iscsi initiator说明 open-iscsi包括两个守护进程iscsid和iscsi,其中iscsid是主进程,iscsi进程则主要负责根据配置在系统启动时进行发起端(Initiator)到服务端(target)的登录,建立发起端与服务端的会话,使主机在启动后即可使用通过iSCSI提供服务的存储设备。 iscsid进程实现iSCSI协议的控制路径以及相关管理功能。例如守护进程(指iscsid)可配置为在系统启动时基于持久化的iSCSI数据库内容,自动重新开始发现(discovery)目标设备。 Open-iSCSI是通过以下iSCSI数据库文件来实现永久配置的: Discovery (/var/lib/iscsi/send_targets) 在 /var/lib/iscsi/send_targets 目录下包含iSCSI portals的配置信息,每个portal对应一个文件,文件名为“iSCSI portal IP,端口号”(例如172....