我有以下 ZFS 结构:
% sudo zfs list 16:03:46
NAME USED AVAIL REFER MOUNTPOINT
zpool1 1.18T 5.86T 544K legacy
zpool1/home 1.18T 5.86T 96K legacy
zpool1/home/alice 12.6G 5.86T 12.6G /zshare/zpool1/home/alice
zpool1/home/bob 1.17T 5.86T 1.02T /zshare/zpool1/home/bob
zpool2 2.22T 4.82T 188K legacy
zpool2/media 1.13T 4.82T 1.13T /zshare/zpool1/home/media_root
出于性能和存储原因,zpool1
&zpool2
不共享任何磁盘。我希望 bob 和 alice 都能访问media_root
。但 Bob 和 Alice 不允许访问彼此的文件。
- 我无法将 /zshare/zpool1/home 作为文件夹共享,因为它属于根分区,而根分区很小,如果 alice 或 bob 想要将大于 60Gb 的任何东西复制到他们的文件夹中,它就会失败并出现“空间不足”的情况,即使他们的主文件夹有它(Windows 从托管 SMB 共享文件夹的驱动器计算空间)。
- 我无法将两个文件夹共享给两个用户的工作站,因为 Windows 不允许您从同一个 IP 地址挂载多个网络驱动器......
- 我无法
media_root
进行符号链接/alice
,/bob
因为在 Windows 上它不会遵循符号链接,而且我似乎无法让硬链接在 Z 文件系统之间工作。
我真的真的不想将所有文件复制到media_root
alice 和 bob 的子文件夹中,并使用 crontab 样式的 rsync 来使它们彼此更新并在 zpool2 上保持更新,但还有什么其他选择?
我确信有某种方法可以通过 Ubuntu 20.04 上的 ZFS 实现这一点,但是如何实现呢?
编辑:所讨论的网络没有 DNS。
答案1
我无法将两个文件夹共享给两个用户的工作站,因为 Windows 不允许您从同一个 IP 地址挂载多个网络驱动器......
事实并非如此。您可以安装任意数量的网络驱动器(从和到同一台机器)因为您有空闲的信件。您甚至可以使用普通的 UNC 路径或挂载甚至深路径名(如net use t: \\server\share\bobs\eyes\only
)只需创建所需的共享并相应地使用它们即可。
但是 Bob 和 Alice 不允许访问彼此的文件。
这是文件/文件夹权限的问题。
答案2
我认为... 一种方法是为应该有权访问共享文件夹的用户设置一个组,然后设置共享文件夹的权限,以便只有该组的成员才能访问它。
例如,您可以创建一个名为“media_access”的组,并将 Alice 和 Bob 都添加到该组中。然后,您可以设置 media_root 文件夹的权限,以便只有 media_access 组的成员才能访问它。为此,您可以运行以下命令:
chgrp media_access /zshare/zpool1/home/media_root
chmod g+rwx /zshare/zpool1/home/media_root
这会将 media_root 文件夹的组所有权更改为 media_access 组,并授予该组成员对该文件夹的读取、写入和执行权限。
设置权限后,您应该能够从 Alice 和 Bob 的工作站访问共享文件夹。但是,他们只能访问共享文件夹中的文件,而无法访问彼此主目录中的文件。
答案3
最后,我必须启用并托管网络的 DNS 才能使其正常工作。
示例:
在 Windows 上映射两个网络驱动器,如下所示
\\192.168.11.1\share001
\\192.168.11.1\share002
但是使用 DNS 时失败
\\alice\share001
\\bob\share002
^ 即使alice
&都bob
解析为,上述方法也能奏效192.168.11.1
。