Fibre Channel 和iSCSI是我们导出块存储设备给initiator的最常见两种方式,深入理解通过这两种通道建立target、后端存储、ACL、探测target、连接和断开target、实现fail-over的差异,是我们统一设计和前端用户界面和底层文件系统的接口之前必须要做的功课,同时也是确保Fabric应用层的实现更精简高效、避免代码冗余的前提。为此,笔者结合自身工作实际,归纳了两者的差异,以供大家参考,也欢迎一起讨论、细化。



Iscsi

FC

备注

后端驱动依赖

iscsi_target_mod/

target_core_mode

target_core_iblock

tcm_qla2xxx

target_core_mode

target_core_pscsi

qla2xxx


后端工具

targetcli

targetcli


添加后端存储

targetcli /backstores/block create my_vol2 /dev/sdd

targetcli /backstores/block create my_vol2 /dev/sdd


确定后端target

iscsiname=`targetcli /iscsi create | grep "Created" | head -n1 | awk '{print $3}'`;

或者软件指定

fc_target_name=`cat /sys/class/fc_host/host*/port_name | sed -e s/0x// -e 's/../&:/g' -e s/:$// | head -n 1`


创建后端target

targetcli /iscsi create | grep "Created" | head -n1 | awk '{print $3}'`

targetcli /qla2xxx create ${fc_target_name}


导出后端存储

targetcli /iscsi/${iscsiname}/tpg1/luns create /backstores/block/vol2

targetcli /qla2xxx/${fc_target_name}/luns create /backstores/block/my_lun2


Chap

targetcli /iscsi/${iscsiname}/tpg1 set attribute authentication=0

NO


Vol Group

targetcli /iscsi/${iscsiname}/tpg1/luns create /backstores/block/vol2

targetcli /iscsi/${iscsiname}/tpg1/luns create /backstores/block/vol3

targetcli /iscsi/${iscsiname}/tpg1/luns create /backstores/block/vol4

targetcli /iscsi/${iscsiname}/tpg1/luns create /backstores/block/vol5

targetcli /qla2xxx/${fc_target_name}/luns create /backstores/block/my_lun0

targetcli /qla2xxx/${fc_target_name}/luns create /backstores/block/my_lun1

targetcli /qla2xxx/${fc_target_name}/luns create /backstores/block/my_lun2

挂靠在同

一个target

下的一组

逻辑

ACL

targetcli /iscsi/${iscsiname}/tpg1 set generate_node_acls=1

targetcli /qla2xxx/${fc_target_name}/acls create ${acl_host0}


RW/RO

targetcli /iscsi/${iscsiname}/tpg1 set attribute demo_mode_write_protect=1/0

targetcli /iscsi/${iscsiname}/tpg1 set attribute demo_mode_write_protect=1/0


Portals

targetcli /iscsi/${iscsiname}/tpg1/portals create 19.16.1.144 3260

NO






initiator建立

链接方式

iscsiadm -m discovery -t sendtargets -p 19.16.1.144:3260 -l

echo 1 > /sys/class/fc_host/$i/issue_lip


initiator断开

链接

iscsiadm -m session -u

echo 0 > /sys/class/fc_host/$i/issue_lip


Initiator Group

具有相同chap/ACL设置的一组

initiators

具有相同ACL设置的一组

initiators

FCACL

设置需要

cd 到对应Hostacls里面去,然后添加授权逻辑卷





Active-standby 模式下对initiator的要求

安装iscsi 客户端:Linuxiscsiadm;

安装多路径软件,且让多路径软件运行在fail-over模式

iscsi基于TCP/IP绑定后端存储,FC 基于wwn来绑定后端存储