Linux iSCSI 目标 (TCM)

来自 Alpine Linux
注意: TCM 是 LinuxIO (LIO) 的别名,它是一个内核 iSCSI 目标(服务器)。LIO 是 Linux 的标准开源多协议 SCSI 目标。LIO 在 Linux 内核版本 2.6.38 及更高版本中取代了 STGT (SCSI Target) 框架,成为标准的统一存储目标。

安装用于配置 Target Core 的实用程序

 # apk add targetcli
 # rc-update add dbus
 # rc-update add targetcli
 # service dbus start
 # service targetcli start

与通常的纯文本文件相反,所有配置都在 ConfigFS 中通过 targetcli shell 完成(您可以使用 tab 键进行命令自动补全,并使用 "ls" 检查当前配置)

 # targetcli
 />
 /> ls
 o- / ..................................................................... [...]
 o- backstores .......................................................... [...]
 | o- fileio ............................................... [0 Storage Object]
 | o- iblock ............................................... [0 Storage Object]
 | o- pscsi ................................................ [0 Storage Object]
 | o- rd_dr ................................................ [0 Storage Object]
 | o- rd_mcp ............................................... [0 Storage Object]
 o- ib_srpt ........................................................ [0 Target]
 o- iscsi .......................................................... [0 Target]
 o- loopback ....................................................... [0 Target]
 o- qla2xxx ........................................................ [0 Target]
 /> 

您可以创建一个文件以导出为目标

 /> cd backstores/fileio
 /backstores/fileio> create file_backstore file1 1M
 Generating a wwn serial.
 Not using buffered mode.
 Created fileio file_backstore.
 /backstores/fileio>

或者您可以使用块设备

 /> cd backstores/blockio
 /backstores/blockio> create block0 /dev/sda1

您可以使用任何块设备,包括 RAID 和 LVM2。现在创建一个 iSCSI 目标和一个目标门户组 (tpg)(iqn 会自动创建。您也可以手动指定一个)

 /> cd /iscsi
 /iscsi> create
 Created target iqn.2003-01.org.linux-iscsi.rtsnode1.x8664:sn.83a8cde7aca8.
 Selected TPG Tag 1.
 Successfully created TPG 1.

现在您必须告诉 Target Core 使用先前创建的后备存储来用于现在创建的目标

 /iscsi> cd iqn.2003-01.org.linux-iscsi.rtsnode1.x8664:sn.83a8cde7aca8/tpg1/luns
 ../tpg1/luns> create lun=0 storage_object=/backstores/blockio/block0
 Successfully created LUN 0.

现在创建 iSCSI 门户

 ../tpg1/luns> cd ../portals
 ../tpg1/portals> create ip_address=192.168.1.10
 Using default IP port 3260
 Successfully created network portal 192.168.1.10:3260.

默认情况下启用身份验证。要禁用它

 ../tpg1> set attribute authentication=0
 Parameter authentication is now '0'.
 ../tpg1> set attribute generate_node_acls=1
 Parameter generate_node_acls is now '1'.

最后保存配置

 /> saveconfig
 Existing file /etc/target/saveconfig.json backed up to saveconfig.json.backup
 Configuration saved to /etc/target/saveconfig.json

对于实际使用,您应始终跟踪对 saveconfig 文件的更改,并确保(有一个标志可以做到这一点)在出现错误情况时不要保存配置。默认情况下,targetcli 在您退出时会创建配置备份,这意味着您可能会丢失当时正在工作的配置。因此最好做好准备。错误不会简单地出现,例如,如果您在启动时缺少 HBA,这些设置将不会被加载,因此不会在保存时的配置中。