跳转到内容

块存储:iSCSI 与 NVMe/TCP ​

完成后,OMV 把一块磁盘、一个镜像文件或一个 ZFS 卷当成裸盘通过网络交给另一台机器。那台机器看到的是一块本地硬盘,自己分区、格式化、挂载。

适合谁与不适合谁 ​

目的选什么
在 Windows、Linux 客户机上要一块「本地盘」(游戏库、程序目录、虚拟化平台的存储)块存储:iSCSI 或 NVMe/TCP
多台电脑同时读写同一批文件不要用块存储,用 SMB 或 NFS
只想在客户机上多一块盘块存储可以,但要想清楚备份

块存储与文件共享的根本区别:OMV 看不到目标里的文件,只提供一堆块;文件系统在客户端那边。所以:

  • OMV 的共享文件夹、权限、回收站、SMB 审计对它都没有作用。
  • 同一个目标不要同时挂到两台机器上,除非客户端用的是集群文件系统,否则必然损坏数据。
  • OMV 上的文件级备份工具读不到里面的文件。

这两个插件没有或只有很弱的认证,数据可能被抹掉

  • 影响范围:目标的后备存储(backing store)填成了某块数据盘,客户端一格式化,这块盘的数据就没了;删除 tgt 的镜像会连同镜像文件一起删除;iSCSI 目标的发起端地址(Initiator address)留空表示任何地址都能连;NVMe/TCP 只靠主机 NQN 白名单,NQN 不是秘密,插件界面里也没有 TLS 或认证设置。
  • 前置条件:只在可信的内网或专用网口、VLAN 上使用,不要映射到公网。先在测试用的小镜像上练习;后备设备用 存储器 → 磁盘(Storage → Disks)按型号和序列号核对。NVMe/TCP 插件标注为实验性。
  • 怎么回退:先在客户端断开连接,再在 OMV 里禁用目标,最后才删除。镜像文件和后备盘上的数据没有回退,靠客户端侧的备份。

插件信息 ​

项iSCSINVMe/TCP
包名openmediavault-tgtopenmediavault-nvmetcp
来源omv-extrasomv-extras
OMV 8 状态截至 2026-10-22 的 omv-extras synchrony 软件源为 8.0.18.0.1,README 标注为实验性(experimental)
菜单位置服务 → Tgt(Services → Tgt):设置、目标、镜像服务 → NVMe/TCP(Services → NVMe/TCP):Settings、Ports、Subsystems、Associations
依赖tgt、openmediavault-sharerootfs内核自带的 nvmet、nvmetcli、openmediavault-sharerootfs

两个插件都依赖 sharerootfs,不要卸载它,见 sharerootfs。先装 omv-extras。

安装 ​

系统 → 插件(System → Plugins)搜索 tgt 或 nvmetcp,安装需要的那个,硬刷新浏览器。

iSCSI(tgt) ​

配置 ​

  1. 服务 → Tgt → 设置:勾选启用(Enable),保存、应用。
  2. 服务 → Tgt → 镜像(Images):如果后备存储用镜像文件,创建一个。路径(Path)用文件夹浏览器在根文件系统下选择,大小(Size)以 GB 为单位。镜像是用 dd 以跳过的方式创建的稀疏文件,不会立刻占满空间,但写满之后会占满,要留够空间,放在数据盘上而不是系统盘。
  3. 服务 → Tgt → 目标(Targets)→ 创建:
字段说明
启用(Enable)默认不勾
名称(Name)只允许小写字母、数字、- 和 .。IQN 由插件生成,形如 iqn.年-月.<域名反写>:<名称>
后备存储(Backing store)镜像文件路径或块设备路径,多个用逗号分隔
发起端地址(Initiator address)允许连接的客户端,主机名或 IP,多个用空格分隔。留空表示任何地址都能访问,务必填写
扩展选项(Extra options)原样写入目标配置,CHAP 等认证只能在这里按 tgt 语法写,插件界面没有专门的认证字段
  1. 保存,点黄色提示条上的应用。

客户端连接 ​

在客户端电脑上操作。Windows 用自带的 iSCSI 发起程序;Linux 安装 open-iscsi 后:

sh
iscsiadm -m discovery -t sendtargets -p <OMV 的 IP>
iscsiadm -m node -T <目标的 IQN> -p <OMV 的 IP> --login

连接成功后客户端出现一块新盘,由客户端自己分区、格式化。

NVMe/TCP(实验性) ​

  1. 服务 → NVMe/TCP → Settings:Enable,保持 Auto-associate ports and subsystems(默认开)。
  2. Ports → 添加:Address 填专用网口的 IP(0.0.0.0 表示监听所有地址,暴露面更大,不推荐),TCP port 填 4420,Address family 选 IPv4。填的地址不属于本机时,插件会退回到监听该地址族的全部地址,所以要核对填对了。
  3. Subsystems → 创建:勾选 Enable,填 NQN(必须唯一,客户端依赖它,创建后别改),Allow any host 关闭,在 Hosts 里填客户端的主机 NQN(客户端上看 /etc/nvme/hostnqn)。再添加命名空间(Namespace),Backing path 填 /dev/sdX、/dev/mapper/<卷组>-<逻辑卷> 或 /dev/zvol/<池>/<卷> 等块设备。
  4. 保存,点黄色提示条上的应用。

命名空间固定以读写方式导出,内核的 nvmet 没有单个命名空间的只读开关;想限制访问,只能靠主机白名单。

在 Linux 客户端电脑上连接:

sh
modprobe nvme-tcp
nvme discover -t tcp -a <OMV 的 IP> -s 4420
nvme connect -t tcp -a <OMV 的 IP> -s 4420 -n <子系统 NQN>
lsblk

设备出现为 /dev/nvme0n1 之类。长期使用建议把 NQN 稳定下来,每个子系统用不同的序列号,并用专用网卡或 VLAN 传输。Windows 客户端要求 4K 块大小和单个命名空间,具体以插件 README 为准。

检查结果 ​

  1. 客户端连上后能看到新盘,格式化、写入、读取、断开再重连都正常。
  2. 在 OMV 的 shell(root)只读查看服务端状态:
sh
tgtadm --lld iscsi --mode target --op show
nvmetcli ls
  1. 反向验证:从一台没有被列入白名单的机器尝试连接,应该失败。能连上就说明暴露了。
  2. 重启 OMV,目标和端口自动恢复。

备份与维护 ​

  • 备份:OMV 读不到里面的文件,所以主要在客户端侧备份文件;要备份镜像文件本身,必须先让客户端断开,否则拿到的是不一致的镜像。见 备份策略。
  • 后备设备用 ZFS 卷或 LVM 逻辑卷最方便扩容和快照,见 ZFS 插件、LVM 插件。
  • iSCSI 镜像扩容:镜像页有增长(Grow)按钮,输入新的大小(GB);之后还要在客户端扩展分区和文件系统。
  • 更新:NVMe/TCP 迭代很快,更新前读 changelog。
  • 卸载:先在客户端断开所有连接,再卸载插件。

常见问题 ​

客户端发现不了目标。 确认服务已启用并应用、目标已启用、发起端地址包含客户端 IP、防火墙放行 iSCSI 的 3260 或 NVMe/TCP 的 4420 端口。

NVMe/TCP 报 Host not allowed。 把客户端的主机 NQN 加到子系统,或临时打开 Allow any host(只在受控网络)。

服务端起不来。 NVMe/TCP 查看 journalctl -u nvmet,确认内核有 nvmet 和 nvmet-tcp。

多台机器要共享同一份数据。 改用 SMB 或 NFS。

参考资料 ​

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。