iSCSI Targets on Linux
最近在研究 iSCSI Multipathing (DM Multipath)
因为需要了解 iSCSI
的工作方式,自己在 Linux 服务器上搭了 iSCSI Target 而不是图方便用 FreeNAS
或 Openfiler
这样的 NAS
发行版。
目前 Linux 上主要有三个 iSCSI Target 实现:
- Linux SCSI Target -
STGT
/tgt
- Linux-IO Target -
LIO
SCST
- Generic SCSI Subsystem for Linux
以 Linux 2.6.38
为分界线,在此之前的标准是 Linux SCSI Target - STGT
之后迄今为止的标准是 Linux-IO Target - LIO 确切的说 Linus Torvalds
在 2011年1月15日将 LIO SCSI Target engine merge 到 Linux 2.6.38 中。
LIO
及其管理工具 targetcli
是由 Detera 这个公司开发和维护的。
SCST
更像是一个编外小众实现,主要由 Fusion-io
的某个工程师在维护。
这里是一个 SCST | STGT | IET | LIO/TCM 特性的比较 Feature Comparison between Linux SCSI Targets
目前 RHEL 7 / CentOS 7 / Oracle Linux 7 默认使用的是 LIO 实现,使用 targetcli
作为管理工具,是一个 Python 写的交互 shell 操作起来还算方便。被替代的 STGT 已经被踢到 EPEL for EL 7 里了。要安装的话得启用 EPEL 然后 yum install scsi-target-utils
这个包,做相关的配置配置,就不多说了。
推荐使用 LIO
+ targetcli
;-D
补充一下 Linux-IO / LIO 和传统的 STGT / tgt 还有 SCST 是不同的,没有服务重启的概念。其配置是用 targetcli
命令行工具通过 ConfigFS (一种 RAM-based
文件系统,类似于 sysfs
但用途不一样,两者是互补的)来和内核 API 交互。
ConfigFS
通常挂载为 /sys/kernel/config
;-D
NOTE: ConfigFS 是在 user-space 创建,管理和销毁内核对象。而 sysfs
是在 user-space
查看,操作由 kernel space
创建和销毁的对象。