使用NFS还是Samba?

我正在家里设置一个文件服务器。它主要用于与网络上的其他Linux机器和一台OS X机器共享音乐、图片和电影。根据我所了解,NFS和Samba都可以在我的情况下使用,因此我不确定该选择哪个。对我来说,重要的是盒子之间的传输速度和设置的难度。
你会推荐哪个,并且为什么?
5个回答

在一个封闭的网络中(你了解每个设备的情况下),NFS是一个很好的选择。通过良好的网络,吞吐量非常快速,同时对服务器的CPU负荷较低。它非常简单设置,并且可以在不需要写入权限的共享上切换为只读模式。
我不同意Anders的观点。v4和v3一样简单。只有当你想要通过LDAP/gssd添加安全层时,才会变得复杂。它具备非常复杂和完整的安全机制...但你并不需要它们。实际上,默认情况下它们是关闭的。
sudo apt-get install nfs-kernel-server

然后编辑/etc/exports来配置您的共享。这是我实际版本中共享音乐的一行代码。
/media/ned/music        192.168.0.0/255.255.255.0(ro,sync,no_subtree_check)

这与192.168.0.*上的任何人共享路径,以只读(注意是ro)方式。
编辑完成后,请重新启动NFS。
sudo /etc/init.d/nfs-kernel-server restart

要连接客户端,您需要NFS的一些东西(默认情况下未安装):
sudo apt-get install nfs-common

然后在/etc/fstab中添加一行

192.168.0.4:/media/ned/music  /media/music  nfs ro,hard,intr 0 0

这实际上还是NVSv3客户端,因为我懒得换,但在这种情况下是兼容的。 192.168.0.4 是NFS服务器(在这种情况下是我的台式机)。你需要确保挂载路径(这里是/media/music)存在。
对于Mac用户,按照以下步骤操作:http://www.techrepublic.com/blog/apple-in-the-enterprise/mounting-nfs-volumes-in-os-x/ 这比一些旧教程所说的要简单得多。
它可能看起来比实际更复杂,但它是稳定、可预测和快速的。这是你无法对Samba提出的指责...至少在我的经验中是如此。

谢谢你提供的所有细节。我觉得现在我已经准备好了,这个周末我会尝试一下。 - Jacob Schoen
如何使此持久(对客户端)在服务器重新启动时仍然存在?我的类似设置运行良好(/etc/fstab设置为挂载,例如我的NAS文件夹),但当服务器重新启动时,我需要在终端中反复执行umountmount -a的操作才能重新挂载。这对我来说大部分都没问题(除了一些烦人的事情,比如Picasa在网络照片文件夹突然不见时会清除本地数据库:(),但这让我妻子非常恼火... - Russ
@Russ 听起来你的网络连接启动时间很长。考虑在选项片段中添加 auto,_netdev,使其类似于:auto,_netdev,ro,hard,intr。这样可以强制文件系统等待网络连接。 - Oli
1谢谢您的解释!还有一些问题:为什么不使用FTP?我听说UID必须是唯一的...这对我来说听起来很复杂。NFS如何处理文件权限? - lumbric
@lumbric 很晚回复,抱歉。FTP是事务性的,因此非常笨重和慢。它具有相当不错的吞吐量,但对于实际使用中的文件系统中的所有重要操作(如状态查询、列表等),都很繁琐。权限可以定制,并且可以通过各种LDAP/gssd配置映射用户,但这些超出了我的需求(目前也超出了我的知识范围)。 - Oli

最近我测试了通过SMB和NFS连接到我的Synology NAS站。对我来说,NFS连接的速度比SMB连接快两倍。特别是当你需要处理100 GB的照片和音乐文件,分布在1000个目录中时,你会爱上NFS的速度。

NFS(第3版)性能更高且非常易于设置。主要问题是完全缺乏可靠的安全性。
NFS(第4版)提供了安全性,但几乎无法设置。
Samba可能稍微慢一些,但易于使用,并且可以与Windows客户端配合使用。

20但几乎不可能设置:你能提供一些证据支持吗,还是这只是基于你主观的感觉? - lanoxx
4我从来没有遇到过v4的问题,那么问题在哪里? - KingCrunch
我觉得NFSv4没有比NFSv3更难。当然,这是在没有使用Kerberos的情况下。 - MountainX
作为最近一直在努力比较NFS和SMB的人,我可以告诉你它们都很糟糕。就配置而言,SMB甚至更糟糕,因为我花了更多时间来配置它,但仍然存在一个权限问题。不过这并不重要,因为经过比较,SMB的速度甚至比NFS和SSHFS还要慢详见 - Hi-Angel

我最近在Ubuntu 10.04服务器上设置了一个本地NFS服务器,但我的MacBook Pro(OS X 10.6.X)无法连接。为了让Mac能够连接,我不得不在/etc/exports中添加insecure。
我的/etc/exports:
/mnt/sdcard *(rw,sync,no_subtree_check,insecure,all_squash)

在你决定将接下来的X年和Y TB用于某个协议之前,先进行真实世界的测试,以免意识不到还有更好的选择。
关于哪个协议更快,人们有各种不同的观点,Samba的人声称他们与NFS相当。根据你的需求,最好的做法是设置一个Samba共享和一个NFS共享,并在网络上运行各种真实世界的读/写/CPU测试。如果你和我有类似的需求(Windows机器),你可能会惊讶地发现Samba比NFS快20%。
选择在你的环境中给出最佳结果的那个,并忽略别人所说的最快的协议。

  • 相关问题