3.0.0本章简介:-描述iSCSI存储的工作原理和机制;-如何定义iSCSI的服务器端和客户端;-解释说明iSCSI的配置和相关工具;3.0.1红帽的iSCSI驱动器:在第一章中我们就了解到了什么是iSCSI。iSCSI(ipOverSCSI)业内也常叫作ipSAN,即是通过TCP/IP的网络协议来传输磁盘的SCSI数据,随着以太网技术的发展,千兆万兆都将应用在企业中,而以iSCSI存储的性价比,很多中小型企业会更加倾向于使用。也就是说,iSCSI是基于TCP/IP下的网络存储解决方案,那么iSCSI和SCSI/FC存储机制有什么不同呢:左边的模型是iSCSI存储的整个数据流动模型,右边的是FCSAN的模型,通过这个图可以清晰地看出iSCSI存储和FC光纤存储的对应关系。iSCSI驱动器提供了一个可以通过IP网络访问存储的主机,这个驱动器使用了iSCSI的协议(由IETF定义的)通过IP网络在主机和iSCSI服务器端来传输SCSI的请求和回应。如果你想了解更多关于iSCSI协议的信息,可以参考RFC3720(http://www.ietf.org/rfc/rfc3720.txt)标准。从模型架构的角度来看,iSCSI驱动器结合了主机的TCP/IP协议栈、网络驱动器和网卡,提供了与SCSI/FC驱动器一样的功能。尽量用单独的网络来使用iSCSI存储。3.02iSCSI数据访问:iSCSI存储分为服务器端(targets)和客户端(initiators),客户端发送SCSI命令到远程的存储设备端(服务器端),iSCSI使用的是TCP/IP协议,默认使用TCP的3260端口。客户端:-通过discovery程序来请求远程的块设备;-客户端必须安装了iscsi设备驱动器;-要安装iscsi-initiator-utils-*.rpm软件包;服务器端:-发布一个或多个块设备给initiator访问;-从RHEL5.3以后开始支持iSCSI;-需要安装scsi-target-utils-*.rpm软件包;对于每个target来说,主机ID是唯一的,存储块设备的LUNID是由iSCSItarget来分配的。iSCSI驱动器为SCSI请求和回应提供了一个通过IP网络传输的渠道。一旦iSCSI驱动器安装了,主机将会对存储设备做discovery的处理,如下:-iscsi驱动器通过discovery机制请求存储网络中可用的target;-每个iscsitarget发送可用的iscsitarget名称到iscsi驱动器;-iscsitarget接受客户端登入,并且给客户端发送targetidentitier作为确认;-iscsi驱动器查询target端的设备信息;-target端回复相关的设备信息;-iscsi驱动器为这些可用的target设备创建一个表;一旦这个表创建完成,iscsitarget端对于主机来说就像直连了一个存储设备一样是可用的。3.03iSCSI驱动器的特点:对包头和数据摘要支持加密:iSCSI协议在iSCSI数据包上定义了一个32位的CRC摘要来保护数据的传输,因为16位的校验值用于TCP数据传输显然太过弱了,所以需要更强壮的加密来保证远距离的数据传输安全。双向的CHAP(握手认证协议)认证:用于对target端做访问控制,并且用以确定客户端的可靠连接。支持R2T(ready-to-transfer)流控制:用于target端通信流控制的一种类型。支持多路径:iSCSI的target端通过多路径的使用来实现自动的failover错误轮转的机制。服务器端的discovery广播机制:一种驱动器可以给可用的target提交请求的机制。动态的targetdiscovery机制:可用的target信息可以动态的改变。为入口和target改变的异步事件通知:在target可以和initiator以异步的信息通信时发生的变化。快速数据支持:通过iSCSI命令PDU(ProtocolDataUnit)发送一个未请求的数据的能力。动态的驱动器重配置:在initiator端做任何修改都不需要重启任何iSCSI的会话。重启后自动挂载iSCSI:要保证网络的畅通,不然开机自启动也挂载不起来。3.0.4iSCSI设备的命名和挂载:iSCSI驱动器为每个iSCSI设备使用默认的内核名,Linux内核在发现了iSCSI设备后将动态地分配SCSI设备名,但是系统重启之后命名将可能发生变化,SCSI命令可能发送到错误的逻辑单元。持久的设备命名可以使用UDEV,设备唯一的UUID以及设备卷标,通常为了开机后自动挂载iSCSI上的文件系统,都会将iSCSI设备挂载信息写入到/etc/fstab中,但必须加上_netdev参数,没有加入此参数的话,rc.sysinit会在系统的网络服务启动之前尝试去挂载iSCSI设备,此时挂载必然是失败的。3.05iSCSI服务器端的命名:iSCSI在target端对要发...