# ISCSI Target (简体中文)

Related articles

- iSCSI initiator (简体中文)
- iSCSI Boot

翻译状态： 本文是英文页面 ISCSI_Target 的翻译，最后翻译时间：2015-06-11，点击这里可以查看翻译后英文页面的改动。

使用 iSCSI 可以通过 IP 网络访问磁盘。

接受来访的实体称为 目标(target)，发起访问的实体称为 发起者(initiator)。有多种设置目标的方式：

- SCSI Target Framework (STGT/TGT) 是 Linux 2.6.38 之前的标准。
- LIO target 是现在的标准。
- iSCSI Enterprise Target (IET) 是旧版本的实现，SCSI Target Subsystem (SCST) 是 IET 的升级版本，曾是 LIO 最终入选内核之前的候选方案之一。

## 启用 LIO Target

LIO target 包含在2.6.38及以后版本的内核中。但从3.1版才开始包含 iSCSI target fabric。

关键的内核模块是 target_core_mod 和 iscsi_target_mod，它们应该已内置并自动加载。

强烈建议使用 LIO 的免费分支版本：targetcli-fbAUR，python-rtslib-fbAUR 和 python-configshell-fbAUR。原生包 targetcliAUR[broken link: archived in aur-mirror] 虽也有效，但其使用另外的方法保存配置，该方法使用不再推荐的 lio-utils 及依赖 epydoc。

如果使用免费分支版本，则 python-rtslib-fbAUR 中包含一个 systemd `target.service` 文件。如果直接使用原生的 targetcli 或 lio-utils，则在 lio-utilsAUR[broken link: archived in aur-mirror] 中包含一个 `/etc/rc.d/target`文件。

用下列命令启动 LIO target：

    # systemctl start target

这样会加载必要的模块，挂载 configfs 并加载之前保存的 iscsi target 配置。

用下列命令可以显示运行中的配置信息（仅免费分支版有效）:

    # targetcli status

若要 lio target 随系统引导时启动，可用下列命令：

    # systemctl enable target

可以用 targetcli 创建全部配置。不推荐直接使用 lio utils 中的 tcm_* 和 lio_* 。

### 使用 targetcli

外部使用手册仅对免费分支版有效。targetd 尚未进入 AUR ，这取决于该免费分支。

用命令行式的配置工具可以自动生成绝大部分的名称和数值，但也支持自定义。 在配置工具中随时可以输入 `help` 命令查看当前状态可用的命令。

提示: 配置工具命令行支持 TAB 键命令补全
提示: 配置工具命令行支持 `cd` 命令查看和选择路径
target 启动以后，用下列命令进入配置工具：

    # targetcli

在配置工具中，用下列命令启用一个块设备（此例为：`/dev/disk/by-id/md-name-nas:iscsi`）作为 target：

    /> cd backstores/block
    /backstores/block> create md_block0 /dev/disk/by-id/md-name-nas:iscsi

注意: 任何块设备都可以用做 target，包括 RAID 和 LVM 设备。如果用 fileio 替换了 block，也可以将文件用作 target。

然后，用下列命令创建一个“iSCSI 合格名称“（iSCSI Qualified Name，即 iqn）和一个 target 入口组（target portal group，tpg)

    ...> cd /iscsi
    /iscsi> create

注意: With appending an iqn of your choice to create you can keep targetcli from automatically creating an iqn

In order to tell LIO that your block device should get used as backstore for the target you issue

注意: 别忘了可以用 `cd` 命令选择 <iqn>/tpg1 路径

    .../tpg1> cd luns
    .../tpg1/luns> create /backstores/block/md_block0

接下来需要创建一个入口(portal)，以使守护进程监听传入连接：

    .../luns/lun0> cd ../../portals
    .../portals> create

Targetcli 将会告诉你 LIO 监听传入连接的 IP 地址和端口（默认是 0.0.0.0，即全部地址）。 需要为客户端提供至少一个 IP 地址。端口应当是标准的 3260 。

为了让客户端/发起者能够连接，需要把发起者的 iqn 写入 target 的配置中：

    ...> cd ../../acls
    .../acls> create iqn.2005-03.org.open-iscsi:SERIAL

将上面命令中的 `iqn.2005-03.org.open-iscsi:SERIAL` 换成所用的发起者的 iqn ，通常位于 `/etc/iscsi/initiatorname.iscsi`。 每个将要接入的发起者都必须如此配置一遍。 Targetcli 将自动把最新创建的 acl 映射到已创建的 lun 。

注意: 所映射的 lun 及其访问权限为 rw 或是 ro 都是可修改的。在配置工具中用 `help create` 命令查阅说明。

所有配置工作完成后的最后一步是保存配置：

    ...> cd /
    /> saveconfig

配置数据将保存在 `/etc/target/saveconfig.json` 文件中。 现在就可以安全地启动或停止 `target.service` 而不会丢失做好的配置数据了。

提示: 可以给出一个文件名作为 `saveconfig` 命令的参数，也可以用 `clearconfig` 命令清除配置

#### 认证

Authentication per CHAP is enabled per default for your targets. 也可以设置口令或禁用认证。

##### 禁用认证

在配置工具中进入所创建的 target 路径（例如 /iscsi/iqn.../tpg1），输入下列命令：

    .../tpg1> set attribute authentication=0

警告: 这样设置会导致任何获得了任一客户端（发起者）iqn 的人都可以访问 target。因此仅可用于测试或自用。

##### 设置证书

在配置工具中进入某个选定 target 的 acl 路径 (例如 /iscsi/iqn.../tpg1/acls/iqn.../) 。下列命令将显示当前的认证证书：

    ...> get auth

下列命令将以 foo:bar 启用认证：

    ...> set auth userid=foo
    ...> set auth password=bar

### 使用原生 LIO 工具

You have to install lio-utilsAUR[broken link: archived in aur-mirror] from AUR and the dependencies (python2).

### 提示与技巧

- 使用 `targetcli sessions` 命令可以列出当前已打开的会话。这个命令包含在 targetcli-fbAUR 软件包中，但没有包含在 lio-utils 或原生的 targetcli 中。

### 上游文档

- targetcli
- LIO utils
- You can also use `man targetcli` when you installed the free branch version targetcli-fbAUR.

## 使用 SCSI Target Framework (STGT/TGT)

You will need the Package tgtAUR from AUR.

See: TGT iSCSI Target

## 使用 iSCSI Enterprise Target (IET)

You will need iscsitarget-kernelAUR[broken link: archived in aur-mirror] and iscsitarget-usrAUR[broken link: archived in aur-mirror] from AUR.

### 创建 Target

Modify /etc/iet/ietd.conf accordingly

#### 基于硬盘的 Target

    Target iqn.2010-06.ServerName:desc
    Lun 0 Path=/dev/sdX,Type=blockio

#### 基于文件的 Target

Use "dd" to create a file of the required size, this example is 10GB.

    dd if=/dev/zero of=/root/os.img bs=1G count=10

    Target iqn.2010-06.ServerName:desc
    Lun 0 Path=/root/os.img,Type=fileio

### 启动服务

This article or section is out of date.

Reason: Mentions rc.d scripts and rc.conf. (Discuss in Talk:ISCSI Target (简体中文)#)

    rc.d start iscsi-target

Also you can "iscsi-target" to DAEMONS in /etc/rc.conf so that it starts up during boot.

## 参阅

- iSCSI Boot Booting Arch Linux with / on an iSCSI target.
- Persistent block device naming (简体中文) 给 target 赋予正确的块设备名称

Categories:

- 简体中文
- Storage (简体中文)
- Networking (简体中文)

Hidden categories:

- Pages with broken package links
- Pages or sections flagged with Template:Out of date