NFS v4 导出加密分区。客户端挂载空目录

NFS v4 导出加密分区。客户端挂载空目录

我的 Lan 服务器上有一个加密的硬盘。它是使用 luks/dm-crypt 加密的。服务器运行 NFS v4 以在 LAN 中共享文件。它可以工作,但加密的 USB 硬盘除外。如果客户端将共享安装到他的文件系统中,他会发现一个空文件夹,其中应该包含解密的文件。

这是设置:

如何服务器安装卢克斯分区:

sudo cryptsetup luksOpen /dev/sdb1 data1
sudo mount /dev/mapper/data1 /exports/user1/data1

在服务器上解密和安装驱动器工作正常。如果我去/exports/user1/data1我会得到解密的文件。

NFS 导出:

/exports            192.168.178.20(rw,sync,fsid=0,no_subtree_check,root_squash) 192.168.178.21(rw,sync,fsid=0,no_subtree_check,root_squash)
/exports/user1      192.168.178.20(rw,sync,no_subtree_check,root_squash) 192.168.178.21(rw,sync,no_subtree_check,root_squash)

因此,解密后的 USB 驱动器将直接安装到 NFS 导出中,地址为/exports/user1/data1

这就是如何客户端安装共享文件夹:

sudo mount.nfs4 192.168.178.10:/ /fs_data -o soft,intr,rsize=32768,wsize=32768

现在,如果客户端将服务器导出安装到其文件系统中,他会发现“data1”文件夹为空。

我有什么遗漏的吗?

更新:

感谢吉尔斯很好的答案我成功了。我试图避免crossmntnohide避免遇到最终的情况索引节点问题。这就是我现在使用的:

/etc/出口

/exports/user1           192.168.178.20(rw,sync,fsid=0,crossmnt,no_subtree_check)
/exports/user1/data1     192.168.178.20(rw,sync,no_subtree_check)

客户端命令挂载数据1:

sudo mount.nfs4 192.168.178.10:/data1 /fs_data -o soft,intr,rsize=32768,wsize=32768

答案1

对于 Linux 内核 NFS 服务器,如果导出目录树,则不包括安装在该树上的任何文件系统。请参阅nohide选项中的说明exports(5)手册页

您需要显式导出已安装的文件系统,即您需要在exportsfor中单独一行/exports/user1/data1。此外,您需要在安装后(重新)启动 NFS 服务器/exports/user1/data1

在客户端,需要/fs_data/data1单独挂载。正如手册页中所讨论的exports,您可以通过包含nohideon 选项/exports/users1/data1crossmnton 选项来避免这种情况/exports/users1,但这可能会导致问题,因为客户端将在看似相同的文件系统上看到具有相同 inode 编号的文件。例如,这可能会导致文件复制或归档程序忽略文件,因为它认为它已经备份了它们(如果程序已经看到/fs_data/fooinode 42,它会认为/fs_data/data1/bar与 inode 42 无关的文件似乎是相同的文件系统 - 但实际上不是 - 是相同的文件)。

答案2

我无法评论缺乏要点,所以我会补充一点,在将附加文件系统添加到 /etc/exports 后,我不必重新启动 nfs 服务器,这将是一个痛苦,因为我使用内核 nfs,而不是我只需要执行另一个 exportfs -a 即可导出新指定的导出。

相关内容