求教:使用 iSCSI 共享能否解决 SMB/NFS 的权限冲突问题

93 天前
 Ploter

背景

我有一台 Proxmox VE 主机,虚拟化了两台 VM:

两者通过 PVE 的 VirtIO 网络连接。

需求:我想将 TrueNAS 的存储共享给 Playground 作为扩展磁盘,供 Docker 容器使用。

尝试过 SMB 和 NFS ,但遇到问题:某些 Docker 容器会修改文件权限(所有者或读写权限),导致权限冲突或“Permission denied”错误,可能是 SMB/NFS 的用户映射问题。

我听闻 iSCSI 是块共享协议,但感觉上手有点复杂,所以先来问问大佬们。

问题

  1. iSCSI 是否能有效解决 SMB/NFS 的权限冲突/用户映射问题?
  2. 使用 iSCSI 共享后,文件是否只能通过 iSCSI 客户端查看?能否在 TrueNAS 上访问相同数据?
  3. iSCSI 是否支持多个客户端同时连接呢?

能想到的暂时就这些了,有经验的大佬可以补充一下。

2214 次点击
所在节点    NAS
15 条回复
czk1997
93 天前
TrueNAS 的 iSCSI 得做 zVOL.

1. iSCSI 不涉及权限问题,因为本身只做块共享,不做文件,权限是文件提供的。你可以理解为共享了一块虚拟磁盘出去。至于这个磁盘是什么格式是你自己决定的。
2. 文件只能通过 iSCSi 查看,TrueNAS 无法查看。
3. 支持多客户端链接,但是实际操作中建议不要这么做,容易丢数据。
ruidoBlanco
93 天前
beating around the bush
XY problem

那么多人用 NFS 、smb 没问题,那你有问题就解决问题,别绕来绕去制造新的问题。

其实这复杂度是没必要,为什么会有个 trueNAS 在里面呢?直接 pve 开虚拟盘给虚机或者 container 用不好么?甚至说直接 bind mount 宿主目录到 lxc 里面不也行么。
Ploter
93 天前
@czk1997 明白了,谢谢。多客户端只是顺带问问,没有使用场景。
dilidilid
93 天前
1. iSCSI 能不用就不用,这东西在家庭环境可以直接忽略。在 samba 挂载上运行 docker 的人多了去了,你会遇到问题是你自己 smb.conf 配置的锅,不如请教一下 ChatGPT 怎么解决。SMB 的用户映射逻辑非常直接,根本没啥坑,最多就是全挂成可读写损失权限安全性。
2. 如果你一定要用 VM 层面的虚拟挂载,考虑 virtfs ,这东西比 samba/NFS 更底层但依然是文件层面的共享。在最新版的 PVE 里已经提供 GUI 支持了,至于 TrueNAS 是不是支持我就不太清楚了
Ploter
93 天前
@ruidoBlanco 直接使用 PVE 管理磁盘是个思路,我用 TrueNAS 主要是想要一个统一的存储管理服务,而且应该比 PVE 操作起来要简单一点。等之后我想通了或许就会用老哥提供的思路。
Ploter
93 天前
@dilidilid 好的,其实我也不是很想要 iSCSI ,感觉配置起来好复杂,所以先来问问,防止白折腾。

我再看看 SMB 吧,主要是我之前遇到过容器直接修改挂载路径所有者,SMB 支持这种操作吗
Autonomous
93 天前
iSCSI 的使用场景应该是企业或者网吧搞无盘电脑的吧,便于集中统一管理数据。
webcape233
93 天前
块文件没法共享,不然都写到底听谁的?不得数据乱套
GrayXu
93 天前
其实 iscsi 配置也挺简单的吧

1. iscsi 直接不考虑共享问题的,但你这是单 client 所以无所谓
2. iscsi 本质上就是通过网络暴露 scsi 块设备接口,所以一样可以挂载
3. 不手动做分区隔离或者是本身就支持多 client 的 fs (VMFS 之类的),那就是不支持,会炸
billlee
93 天前
我现在就是差不多的架构,一台 NAS 装 truenas 提供 iSCSI, 另一台计算服务器装 PVE 跑虚拟机,用 iSCSI 块设备做数据盘。
hullopanda
93 天前
iSCSI 是否支持多个客户端同时连接呢?
hullopanda
93 天前
@hullopanda 常规意义下是不行的,iSCSI(san )结构不支持多客户端(操作系统)访问,特例只是拿来做主备双活来用懒得。
scegg
93 天前
@hullopanda 支持。但文件系统是否支持就不一定了。毕竟 iscsi 只是提供了通路。就像 sas 硬盘的两条线同时都会活着,但是否可以同时读写而不会损坏硬盘里的数据结构,那就要看数据结构是如何定义和操作的了。
shalingye
93 天前
Windows 的 iSCSI 实现是服务器创建了一个虚拟硬盘文件 vhdx ,把这个虚拟硬盘挂载为另一台计算机的本地硬盘,就好像真有这么一块物理硬盘一样,可以用磁盘管理软件操作。对此硬盘的任何操作都会先在本地缓存,然后静默同步到服务器,是一对一的绑定关系。连接优先级很高,可以在系统启动时自动挂载。甚至,可以通过类似 wireguard 这样的 vpn 软件进行外网访问。
jamos
91 天前
我就是 iSCSI 分配 20G 空间给虚拟机 win08 ,微信,QQ 的目录放在里面,稳定运行 2 年了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1129271

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX