我有两台 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 的文件限制不构成阻碍),即使设置和基础设施一开始可能看起来有点令人生畏。