在 smartos 上托管 iSCSI

mgo*_*zke 5 zfs iscsi

我正在尝试为我们正在进行的一些存储项目重新投入 Unix 游戏。我们很乐意为此使用joyents smartos(基于illumos)。

使用它是一种真正的乐趣(设置 vms 等),但我无法让 iscsi 工作。

我很想简单地共享一个 zfs 设备作为 iSCSI 连接点,但无法让它工作。我也不能让 smb 或 nfs 工作,但这些属性至少存在,我相信它们会工作。

我能找到的文档似乎有点杂乱无章,有一些旧的solaris、新的solaris、illumos 等。这是可以理解的,因为它是一个新版本。

有人有任何指示吗?

我已经试过了

zfs set shareiscsi=on zones/name
Run Code Online (Sandbox Code Playgroud)

这导致“未知属性”。无论如何它都没有列在 zfs 属性中。

我也试过

sbdadm create-lu /dev/zvol/rdsk/zones/
Run Code Online (Sandbox Code Playgroud)

但这导致

sbdadm: unknown error
Run Code Online (Sandbox Code Playgroud)

itadm 也不可用,并且“svcs”中未列出包含 iSCSI 的服务。

任何帮助是极大的赞赏。

更新:似乎 iscsi 是由 COMSTAR 提供的,与旧的 solaris 提供的方式不同,因此不支持 set shareiscsi。

更新:我发现需要为它启动 stmf 服务(与 COMSTAR 相关)。遗憾的是它处于维护模式(svcs|grep stmf)登录 /var/svc/log/system-stmf:default.log 说:

svc-stmf: Unable to load the configuration. See /var/adm/messages for details
Run Code Online (Sandbox Code Playgroud)

/var/adm/messages 说:

svc:/system/stmf:default: Method "/lib/svc/method/svc-stmf start" failed with exit status 1.
system/stmf:default failed: transitioned to maintenance (see 'svcs -xv' for details)
Run Code Online (Sandbox Code Playgroud)

可能缺少一个驱动程序,但是哪一个?以及如何安装它?

mgo*_*zke 4

创建 ISCSI 目标

如有必要,启用存储服务器和 iSCSI 目标服务器

svcadm enable stmf
svcadm enable -r svc:/network/iscsi/target:default
Run Code Online (Sandbox Code Playgroud)

如有必要,创建一个卷(例如稀疏 10T)

zfs create -V 10T -s zones/iscsi
Run Code Online (Sandbox Code Playgroud)

创建逻辑单元

sbdadm create-lu /dev/zvol/rdsk/zones/iscsi
Run Code Online (Sandbox Code Playgroud)

在其上添加一个视图(GUID由之前的命令或list-lu输出)

stmfadm add-view GUID
Run Code Online (Sandbox Code Playgroud)

创建要连接的目标组(选择 GROUPNAME 和 TARGETNAME 并使用当前服务器的 IP) TARGETNAME 示例可以是:iqn.2010-08.org.illumos:02:iscsi-100T其中iscsi-100T部分可以是任何你喜欢的。我认为创建目标群体并不是必要的,尽管它可能是明智的。

itadm create-tpg GROUPNAME IP
Run Code Online (Sandbox Code Playgroud)

在此组中创建目标

itadm create-target -t GROUPNAME  -n TARGETNAME
Run Code Online (Sandbox Code Playgroud)

顺便说一句:如果您不设置 TARGETNAME,将生成唯一标识符。但这种情况每次在 smartos 上启动时都会发生,因此客户端将无法自动重新连接。

  • 顺便说一句:这将在重新启动时丢失。为了坚持下去,您应该创建一个将在启动时执行的脚本。 (2认同)