硬件情况

Table 1. 主机角色
角色 主机名 ip地址

iscsi target

storage1.jklab.com

192.168.55.120

192.168.56.120

192.168.57.120

iscsi initiator

pmx2.jklab.com

192.168.55.232

192.168.56.232

192.168.57.232

pmx3.jklab.com

192.168.55.233

192.168.56.233

192.168.57.233

术语

iscsi

iscsi是Internet SCSI的缩写,是一种存储通信协议。它将SCSI协议封装在传统的TCP/IP协议中。可以实现一台主机通过IP网络远程访问另一台主机所提供的存储设备,就像访问本地块设备一样。

COMSTAR

COmmon Multiprotocol SCSI TARget的缩写。是solaris中的一个软件框架,它可以将solaris*转换成一个SCSI target设备。initiator可通过存储网络访问SCSI target设备。支持的存储协议为 iSCSI、FC、iSER 和 SRP,本文仅涉及iSCSI。

iscsi target

iscsi target设备,可以看作是具备网络通信功能的硬盘驱动器;

iscsi initator

iscsi启动器,向iscsi target设备发起scsi请求,可以看作是客户端。

iqn

iqn是iscsi网络中的设备的唯一标识符。当初始化iscsi target或initiator时,系统将自动为它们分配一个唯一是iqn。

LU

Logical Unit的缩写,逻辑单元,是iscsi存储系统中实际被读写的实体。每个LU都有一个唯一的Logical Unit Number(LUN)。

host group

指的是被允许访问相同LUs的一组initiators的名称。

target group

指的是将同一组LU导出到同一组host group的一组target的名称。

view

view是粘合剂,负责将LU、initiator/host group、target/target group关联起来。当来自host group的initiator登录到包含在target group中的target端口时,LU可被访问。

target portal group

确定一组iSCSI targets将侦听哪些接口的`IP地址:TCP端口`(又名network portal)列表。换句话说,它是network portals的集合,通过与view的配合可以灵活的控制target和initiator的关系。

iscsi各组件关系图如下:

LU是initiator最终读写数据的地方,然而initiator连接的是target,那么LU和target是如何关联的呢?

首先创建一个LU,然后创建一个target和target group,接着将target添加到该target group中,随后创建一个view,将target group和LU关联起来,实现LU和target的结合。

在生产环境中建议每个LU、Target、Target Group、View是一一对应关系,便于管理,减少数据冲突风险。当然,如果是构建cluster的话请参考OmniOS中的iscsi-part2。

iscsi target(server)的配置

iscsi multipath

当iscsi target主机有超过一块网卡的时候,可以通过iscsi multipath功能来提升性能和可用性。

  • 假如要启用multipath,则还需要创建第二个tpg

    $ pfexec itadm create-tpg igb1 192.168.57.120:3260
  • 将iscsi target添加到第二个tpg中

    $ pfexec modify-target -t igb0,igb1 iqn.2010-08.org.illumos:02:35d2f21f-2385-6274-b267-8d325db86491
  • 检查状态

    $ pfexec itadm list-target -v
    
    TARGET NAME                                                  STATE    SESSIONS
    iqn.2010-08.org.illumos:02:35d2f21f-2385-6274-b267-8d325db86491 online   3  (1)
            alias:                  -
            auth:                   none (defaults)
            targetchapuser:         -
            targetchapsecret:       unset
            tpg-tags:               igb1 = 3,igb0 = 2 (2)
    1 `sessions`为3,这是因为omnios默认有一个`default`的tpg,之前由于没有手工创建新的tpg,所以iscsi target被自动添加到`default`这个tpg中。default tpg的系统设定是在全部的网卡上启用。而pmx2的3张网卡跟storage1的3张网卡处于同一个网段,路由可达,因而pmx2在,所以它通过这iscsi initiator可以看到这这分别是。
    2 从`tpg-tags`中可以看出,该iscsi target目前存在于两个tpg中。

    这个时候在pmx2.jklab.qmcc中执行`$ sudo iscsiadm --mode session`将自动找到该iscsi target了。随后可以使用磁盘管理工具对该块设备进行格式化、创建文件系统等操作。

  • 启用静态发现模式(static mode discovery)

    $ pfexec devfsadm -i iscsi

至此完成了iscsi target服务的配置,接下来轮到iscsi initator。

At this point once you have configured your iSCSI initiator on the client side then you should be able to see your iSCSI block device.

iscsi initator的配置

iscsi initator可以理解为客户端,主流OS都有各自的实现。

linux

本文中所用的linux OS为proxmox,基于debian的虚拟化平台。