感谢支持
我们一直在努力

【RHCA翻译计划】EX436第三章:iSCSI存储配置

3.0.0 本章简介:


-描述iSCSI存储的工作原理和机制;


-如何定义iSCSI的服务器端和客户端;


-解释说明iSCSI的配置和相关工具;


3.0.1 红帽的iSCSI驱动器:


在第一章中我们就了解到了什么是iSCSI。iSCSI(ip Over SCSI)业内也常叫作ipSAN,即是通过TCP/IP的网络协议来传输磁盘的SCSI数据,随着以太网技术的发展,千兆万兆都将应用在企业中,而以iSCSI存储的性价比,很多中小型企业会更加倾向于使用。


相关阅读:


【RHCA翻译计划】EX436第一章:集群存储概论1 http://www.linuxidc.com/Linux/2011-09/42110.htm


【RHCA翻译计划】EX436第一章:集群存储概论2 http://www.linuxidc.com/Linux/2011-09/42442.htm


【RHCA翻译计划】EX436第二章:udev硬件设备管理机制 http://www.linuxidc.com/Linux/2011-10/45092.htm


也就是说,iSCSI是基于TCP/IP下的网络存储解决方案,那么iSCSI和SCSI/FC存储机制有什么不同呢:



左边的模型是iSCSI存储的整个数据流动模型,右边的是FC SAN的模型,通过这个图可以清晰地看出iSCSI存储和FC光纤存储的对应关系。


iSCSI驱动器提供了一个可以通过IP网络访问存储的主机,这个驱动器使用了iSCSI的协议(由IETF定义的)通过IP网络在主机和iSCSI服务器端来传输SCSI的请求和回应。如果你想了解更多关于iSCSI协议的信息,可以参考RFC 3720(http://www.ietf.org/rfc/rfc3720.txt)标准。


从模型架构的角度来看,iSCSI驱动器结合了主机的TCP/IP协议栈、网络驱动器和网卡,提供了与SCSI/FC驱动器一样的功能。


尽量用单独的网络来使用iSCSI存储。


3.02 iSCSI数据访问:


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是唯一的,存储块设备的LUN ID是由iSCSI target来分配的。iSCSI驱动器为SCSI请求和回应提供了一个通过IP网络传输的渠道。


一旦iSCSI驱动器安装了,主机将会对存储设备做discovery的处理,如下:


-iscsi驱动器通过discovery机制请求存储网络中可用的target;


-每个iscsi target发送可用的iscsi target名称到iscsi驱动器;


-iscsi target接受客户端登入,并且给客户端发送target identitier作为确认;


-iscsi驱动器查询target端的设备信息;


-target端回复相关的设备信息;


-iscsi驱动器为这些可用的target设备创建一个表;


一旦这个表创建完成,iscsi target端对于主机来说就像直连了一个存储设备一样是可用的。

3.03 iSCSI驱动器的特点:


对包头和数据摘要支持加密:iSCSI协议在iSCSI数据包上定义了一个32位的CRC摘要来保护数据的传输,因为16位的校验值用于TCP数据传输显然太过弱了,所以需要更强壮的加密来保证远距离的数据传输安全。


双向的CHAP(握手认证协议)认证:用于对target端做访问控制,并且用以确定客户端的可靠连接。


支持R2T(ready-to-transfer)流控制:用于target端通信流控制的一种类型。


支持多路径:iSCSI的target端通过多路径的使用来实现自动的failover错误轮转的机制。


服务器端的discovery广播机制:一种驱动器可以给可用的target提交请求的机制。


动态的target discovery机制:可用的target信息可以动态的改变。


为入口和target改变的异步事件通知:在target可以和initiator以异步的信息通信时发生的变化。


快速数据支持:通过iSCSI命令PDU(Protocol Data Unit)发送一个未请求的数据的能力。


动态的驱动器重配置:在initiator端做任何修改都不需要重启任何iSCSI的会话。


重启后自动挂载iSCSI:要保证网络的畅通,不然开机自启动也挂载不起来。


3.0.4 iSCSI设备的命名和挂载:


iSCSI驱动器为每个iSCSI设备使用默认的内核名,Linux内核在发现了iSCSI设备后将动态地分配SCSI设备名,但是系统重启之后命名将可能发生变化,SCSI命令可能发送到错误的逻辑单元。


持久的设备命名可以使用UDEV,设备唯一的UUID以及设备卷标,通常为了开机后自动挂载iSCSI上的文件系统,都会将iSCSI设备挂载信息写入到/etc/fstab中,但必须加上_netdev参数,没有加入此参数的话,rc.sysinit会在系统的网络服务启动之前尝试去挂载iSCSI设备,此时挂载必然是失败的。


3.05 iSCSI服务器端的命名:


iSCSI在target端对要发布出去的设备有专门的命名IQN(iSCSI Qualified Name),而且IQN必须在全局是唯一的。


IQN命名的格式:


iqn…[:]


例如:iqn.2011-01.com.example.sales:Oracle.rac.disk2


3.06 配置iSCSI服务器端:


首先是安装scsi-target-utils软件包,在安装完成后,用户程序tgtd服务必须启动了并且设置了开机自启动,接下来就可以在配置文件/etc/tgt/targets.conf中定义新的target条目。


配置实例:


Backing-store  /dev/vol0/iscsi   指定要发布的设备;


Initiator-address  192.168.0.1   对于客户端的访问控制;


Initiator-address  192.168.0.2


3.07 手动的iSCSI配置:


对于iSCSI服务器端的配置,既可以像上一节利用配置文件配置,也可以手动地用命令进行配置。


创建一个新的target条目:


# tgtadm –lld iscsi –op new –mode target –tid 1 -T iqn.2011-10.com.example.cluster2:iscsi


发布本地的块设备以及配置target的访问控制:


# tgtadm –lld iscsi –op new –mode logicalunit –tid 1 –lun 1 -b /dev/vol1/iscsi


设置访问权限:


# tgtadm –lld iscsi –op bind –mode target –tid 1 -I 192.168.0.1


删除target条目:


# tgtadm –lld iscsi –op delete –mode target –tid 1 -T iqn.2011-10.com.example.cluster2:iscsi


3.08 配置iSCSI客户端驱动器:


iSCSI客户端的配置文件是/etc/iscsi/iscsid.conf,其中有以下四大项可设置项:


Startup:设置自动还是手动;


CHAP:用户名和密码;


Timeout:连接,登入/登出;


iSCSI:流控制,负载大小,数据摘要检查;


以下是CHAP项中的部分设置项:


node.session.auth.authmethod 开启CHAP验证,默认是NONE;


node.session.auth.username 用于CHAP验证的用户名;


discovery.sendtargets.auth.authmethod 为discovery会话开启CHAP验证;


discovery.sendtargets.auth.username 为initiator端设置discovery会话的CHAP用户名;

3.09 iSCSI授权验证设置:


可以使用CHAP配置双向授权验证。在不加密的通信中,基于CHAP的授权由以下特点:用户名和密码都是明文传输的;如果用户名和密码被嗅探,遭受攻击将是很大可能的;鉴于此,可以考虑将iSCSI置于一个独立的存储网络中。


3.10 配置open-iscsi客户端:


Iscsiadm是iSCSI的客户端管理工具,可以用于管理discovery和登入iSCSI服务器端,可以管理访问控制和open-iscsi数据库的配置,本工具的很多操作都需要iscsid进程出于运行状态。


客户端有几个重要文件:


/etc/iscsi/iscsid.conf – 客户端主配置文件;


/etc/iscsi/initiatorname.iscsi – 设置initiator名和别名;


/var/lib/iscsi/nodes/ – 节点和target信息;


/var/lib/iscsi/send_targets – target的入口信息;


3.11 首次连接到iSCSI服务器端:


在initiator客户端启动iscsi服务:


# service iscsi start


发现网络中可用的target:


# iscsiadm -m discovery -t sendtargets -p 192.168.0.1:3260


登入某可用的target会话:


# iscsiadm -m node -T iqn.2011-10.com.example.cluster2:iscsi -p 192.168.0.1:3260 -l


查看target信息:


# iscsiadm -m node -P N  查看节点信息(N=0,1)


# iscsiadm -m session -P N  查看iscsi的会话信息(N=1-3)


# iscsiadm -m discovery -P N  查看discovery信息(N=0,1)


3.12 管理iSCSI服务器端的连接:


登出一个target会话:


# iscsiadm -m node -T iqn.2011-10.com.example.cluster:iscsi -p 192.168.0.1:3260 -u


当需要重新进行连接时,可以重启iscsi服务,系统将自动进行连接,也可以通过以下的命令实现重新连接:


# iscsiadm -m node -T iqn.2011-10.com.example.cluster:iscsi -p 192.168.0.1:3260 -l


3.13 关闭iSCSI服务器端:


关闭iSCSI在开机重启或重启iscsi服务时自动对target进行重新连接,就需要在该客户机彻底将该target条目信息删除:


登出target会话:


# iscsiadm -m node -T iqn.2011-10.com.example.cluster:iscsi -p 192.168.0.1:3260 -u


删除target条目的记录:


# iscsiadm -m node -o delete -T iqn.2011-10.com.example.cluster:iscsi -p 192.168.0.1:3260


在客户端删除了之前discovery发现的可用的target条目,则重启或重启服务后将不会自动进行重连接。

赞(0) 打赏
转载请注明出处:服务器评测 » 【RHCA翻译计划】EX436第三章:iSCSI存储配置
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏