以能够容忍网络中断的方式将一台 Linux 主机的文件系统连接到另一台

以能够容忍网络中断的方式将一台 Linux 主机的文件系统连接到另一台

我有两台 Linux 主机(均运行 Ubuntu 10.04),我希望其中一台能够访问另一台的部分文件系统。例如,我希望 remote1 能够访问 remote2:/home/username 的文件

这只是为了允许我以读写的方式访问另一台机器上的我的主目录,而其他用户无需也能访问它。

每个主机上“用户名”使用的 ID 都不同,原因我就不多说了(同样,ADS 等)。

我尝试过 Samba,但发现它不可靠。例如,我有一个程序可以监视目录并更新大约 12,000 个文件的列表。我发现这个列表不断变化,文件丢失,有些文件随机无法读取。它太不可靠了。

我在 remote1 上运行得很好:

sshfs remote2:/home/username ~/remote2 -o idmap=user -o uid=$(id -u) -o gid=$(id -g)

一段时间内,这种方法运行正常。不幸的是,remote1 是一台笔记本电脑,经常与 LAN 断开连接。当挂载此 sshfs 文件系统时,这似乎会彻底破坏一切,通常需要重新启动才能恢复。

我开始研究 NFS,但几年前在用户 ID 映射方面遇到了问题。当时,我发现有一个用户空间 NFS 服务器可以处理这个问题,但它有很多自己的问题。但那是 NFSv3。NFSv4“内核服务器”可以处理不同的用户 ID 并在它们之间正确映射吗?我真的不想使用 NIS,而且我实际上无法更改用户 ID - 它们是通过外部方式设置的。

另外,NFS 如何处理“不可靠”的网络连接?它会自动重新连接吗?还是共享会中断,直到重新安装为止?

那么 CIFS 之类的东西怎么样?它能应对网络经常和不可预测的中断吗?它可能存在与 Samba 相同的问题,但如果合适,值得一试。

我还应该考虑其他选择吗?

答案1

我在本地网络上使用 NFS,安装符号链接非常容易。 https://help.ubuntu.com/community/SettingUpNFSHowTo

在源 PC 上使用 exportfs,在另一台 PC 上使用 /etc/fstab。缺点:需要您保持相当多的端口开放,除非您尝试锁定一个端口(我失败了)。另一个挑战是,即使是相同的用户名,不同机器的 UID/GID 也不同。但这个问题很容易解决,只需编辑 /etc/passwd 和 /etc/group,然后将 find 传送到 chown。

答案2

对于间歇性断线使用,结尾可能是一个不错的选择(如果 2 GB 的文件限制不构成阻碍),即使设置和基础设施一开始可能看起来有点令人生畏。

答案3

这开始是一条评论,但有点失控了……

NFS 和 Samba 等服务类似于 Windows 中的简单文件共享:

  1. 易于设置,
  2. 往往会占用大量资源,因为它们是通用文件系统访问协议,
  3. 它们并不擅长处理您所描述的情况:不稳定/间歇性的连接以及移动数以万计的文件。

为了您的监控和更新,我将使用同步,不是 nfs 或 smb......

您可能仍想使用 samba 或 nfs 进行简单的文件共享、浏览等。几乎每个 ubuntu 版本都变得更简单、更好。首先右键单击要共享的文件夹,然后选择“共享文件夹”即可开始。有一个侏儒虫在 10.04 中没有提供安装所需的软件包,但正在努力解决。

相关内容