FreeBSD上的NFS

2008-02-23 08:03:27来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

在众多的文件系统中,FreeBSD的支持的是非常独特的,那就是网络文件系统(NFS)。NFS可以使一台或几台机器通过网络共享目录或文件。使用NFS,用户和程序能够访问远程系统上的文件就如同访问本地的一样。 

NFS有以下几种特性: 
本地工作站无须太多磁盘空间,因为常用的数据被存放在单一的机器上并且还会剩余一些空间可被网络上的其它人访问。 

在网络上,每个用户不一定需要有唯一的home目录。一旦建立一个可以通过NFS使用的目录,那么它可以被网络上任何处访问。 

像软盘和CD-ROM能够在网络上被其它机器访问,而不需要额外的硬件。 

它如何工作 
NFS由两个方面组成--客户端和服务器端。考虑到它们的联系,客户端需要服务器端所拥有的数据。服务器与客户共享数据。为了这个系统正常地工作,少数进程不得不在限制下运行。 

服务器必须运行以下几个守护进程: 
nfsd--NFS的守护进程,它响应客户的请求。 
mountd--NFS Mount守护进程,真正实现nfsd传递给它的客户请求。 

客户端只需要运行一个守护进程: 
nfsiod--NFS异步I/O守护进程,响应从NFS服务器来的请求。 

设置NFS 
非常幸运,在FreeBSD系统上设置它是非常容易的。只需通过极少的修改/etc/rc.conf文件,就可以在启动时运行这个进程了。 

在NFS服务器上,请确定你有: 
nfs_server_enable="YES" 
nfs_server_flags="-u -t -n 4" 
mountd_flags="-r" 
每当NFS服务器启动时,mountd就自动运行了。-u和-t标志,告诉nfsd是否服务于UDP和TCP的客户端。-n 4标志,告诉nfsd运行自己的4个相同的拷贝。 

在客户端,确定你有: 
nfs_client_enable="YES" 
nfs_client_flags="-n 4" 
像nfsd,-n 4告诉nfsiod运行自己的4个拷贝。 

最后一个设置是要求你建立一个叫作/etc/exports的文件。这个文件指定你的服务器使用何种文件系统,以及哪几个客户端将要共享。这个文件中的每一行指定一个需要被共享的文件系统。在文件可以使用的这些选择是比较烦的,但只需要涉及其中一部分。你可以查找man page。 

这儿有几个例子: 
以下的几行输出/cdrom到三个"笨"机器上,它们有相同的域名,或者在你的/etc/hosts文件中登录过。-ro标志使得共享的文件系统只读,通过这个标志,远程系统将不可能在共享文件系统上作任何更改。 
/cdrom -ro moe larry curly 
下一行输出/home通过IP地址到三台主机。这是一个非常有用的设置,如果你有一个私有的网络,但没有DNS。-alldirs标志可以使指定的文件系统中的所有目录被输出。 
/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4 
下一行输出/a到两台机器上,它们与NFS服务器在不同域上。-maproot=0标志允许在远程系统上的root用户,使用root权限向共享文件系统写入。除去-maproot=0标志,即使一些人有root权限访问远程系统,但它们不可以修改共享文件系统。 
/a -maproot=0 host.domain.com box.example.com 
为了使客户能够共享一个输出的文件系统,它必须有这个权限。确定你的客户列表在你的/etc/exports文件中。 
现在你已经改动了设置,你可以reboot并且在启动时运行了。或者你也可以在命令行下输入: 

在NFS服务器上: 
# nfsd -u -t -n 4 
# mountd -r 
在NFS客户上: 
# nfsiod -n 4 
现在你已经准备真正地挂起一个远程文件系统。有两种方法。在这个例子中,服务器名字是server,而客户端是client。如果你只是临时挂起一个远程文件系统或希望测试一下你的设置,你可以在客户机的命令行下,以root的权限输入: 
# mount server:/home /mnt 
这样将挂起在server上的/home到client的/mnt。如果一切都设置正确,那么你可以在/mnt下看见server上的文件. 
如果你愿意每次启动时都挂起一人远程文件系统,那么你就需要修改你的/etc/fstab文件.例如: 
server:/home /mnt nfs rw 0 0 
更多细节请参见fstab的man page. 


实际使用 

NFS有许多非常"酷"的用途.我在我管理的网络上大量使用它.以下只是我使用它的一部分方法:. 

在网络上,有好几台机器,但是只有一台机器有CD-ROM.为什么?因为我使用NFS使用所有的机器共享CD-ROM.而对于软驱其实也一样. 

如此多的机器,而你的个人文件就存储地非常地分散了.我使用一台中央NFS服务器存储了所有的用户的home目录,并且与其它机器一起共享它们,所以无论从何处登录,我总是有相同的home目录. 

当你准备在其中的一台机器上重新安装FreeBSD,使用NFS是一种方法.只要将光盘放入你的文件服务器,然后一切照旧. 
我有一个公共目录:/usr/ports/distfiles,所有的机器都共享它.这样,当我将要在一台已经安装过某个port的机器上安装这个port时,我不需要重新再下载一遍所有的源文件. 

问题汇总 
某些ISA的以太网卡可能会引起一些问题,特别是在NFS上.这些困难在FreeBSD上并不特别明显,但系统可能会受影响. 

这些问题几乎总是发生在以及联网的高性能工作站上,例如Sun公司的机器.NFS挂起将会工作非常好,一些操作也是成功的,但是突然server对client没有了响应,即使另外的系统请求继续被响应.这些问题通常在client系统上,无论client是FreeBSD或者是其它的工作站.许多系统上,一旦这个问题出现,系统将无法正常关闭.唯一的解决方法就是经常重置client,因为NFS的情况不能解决. 
尽管这个"正确"的解决方法是对付运行FreeBSD的高性能工作站,但这也是一个简单的安全的方法.如果FreeBSD系统是server,client运行时要有参数-w=1024.如果FreeBSD是client,那么挂起NFS文件系统时,要有参数-r=1024.如果需要在client上自动挂起NFS,这些选择需要在fstab的第四个域中输入,或使用mount命令的-o参数手动挂起. 

需要注意的是,在NFS server和client在不同的网络上时,这个问题也会出现.如果是这个原因,请确定你的路由器有必须支持UDP信息. 

下例中,fastws是高性能工作站的host名,freebox是一台有低效率网卡的FreeBSD系统.当然,/sharedfs将作为NFS文件系统,而在client上就是/project.在所用情况下,注意附加选项. 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:在FreeBSD中安装双网卡实例

下一篇:在FreeBSD中添加用户