Open-iSCSI (简体中文)
来自 维基百科:iSCSI 可以通过基于 IP 的网络访问存储设备。
提供受访的实体是 目标(target),发起访问的实体称为 发起者(initiator)。
本文讲述如何通过 Open-iSCSI[失效链接 2021-11-15 ⓘ] 的 initiator 访问 iSCSI target。
安装
概览
下图显示各组件是如何协同工作的。更详细的版本参见:Open-iSCSI 模块
+-------------------------------------------------------+ | Targets & Sessions configuration Database (DBM based) | +-------------------------------------------------------+ +--------------------------+ +----------------------------------+ | iscsiadm | | iscsid: iSCSI daemon | | | | | | * Command line tool |<--->| * Implements Session management | | * Manages database of | | * Communicates with iscsiadm | | sessions and targets | | and iscsi kernel modules | +--------------------------+ +---------------+------------------+ | User space | - - - - - - - - - - - - - - - - - - - - - - - - - | - - - - - - - - - - Kernel v +-----------------------------------------------------------+ | kernel modules: scsi_transport_iscsi, iscsi_tcp, libiscsi | +-----------------------------------------------------------+
来自 Open-iSCSI README[失效链接 2021-05-17 ⓘ]:
持久化的配置通过一个 DBM 数据库实现,它包括两个表:
- 发现表(Discovery table)(/etc/iscsi/send_targets)
- 节点表(Node table)(/etc/iscsi/nodes)
配置
启动服务
iscsid
由一个 systemd单元 来管理。
用 systemd 启动 open-iscsi.service
。
You only have to include the IP of the target as SERVER
in /etc/conf.d/open-iscsi
at the client.
发现目标
# iscsiadm -m discovery -t sendtargets -p <portalip>
删除废旧目标
# iscsiadm -m discovery -p <portalip> -o delete
登录到有效的目标
# iscsiadm -m node -L all
或者,登录到指定目标
# iscsiadm -m node --targetname=<targetname> --login
登出:
# iscsiadm -m node -U all
信息
对于运行中的会话
# iscsiadm -m session -P 3
上面命令输出的最后一行会显示连接到的设备名,比如
Attached scsi disk sdd State: running
对于已知节点
# iscsiadm -m node
在线修改卷大小
如果 iscsi 块设备包含一个分区表,则不能在线修改卷大小。这种情况下必须首先卸载文件系统,然后再调整相关分区的大小。
- 重新扫描当前会话中的活动节点。
# iscsiadm -m node -R
- 在多路径环境中,也必须重新扫描多路径下的卷信息。
# multipathd -k"resize map sdx"
- 完成后再调整文件系统大小。
# resize2fs /dev/sdx
提示与排错
可以用下列命令检查已连接的 iSCSI 设备在 /dev 设备树中的位置:
ls -lh /dev/disk/by-path/*
。
在服务器端(target)的 acl 配置中应当包含客户端的 iqn(位于客户端的 /etc/iscsi/initiatorname.iscsi
)。
iscsiadm
的许多操作要求 iSCSI 的守护进程 iscsid
处于运行状态。To verify that this is the case,
check the status of the open-iscsi.service
.
参阅
- iSCSI Boot Booting Arch Linux with / on an iSCSI target.