42 FreeBSD连载:NFS客户支持

网络文件系统(NFS)NFS是一种Unix之间通过网络共享文件的标准方式 。使用NFS,就能够透明的安装和访问网络上远程主机上的文件系统,将其安装到本机的文件系统中 。
NFS客户支持
安装NFS服务器上的文件系统的方式与安装本机磁盘文件系统非常相似,同样是通过mount命令:
# mountnfssrv:/exports/mnt这个命令将nfssrv主机上的/exports目录安装到本机的/mnt目录下 。可以看到安装NFS与本地磁盘文件系统的不同在于 ── 文件系统的描述方法不同 。本地磁盘文件系统使用/dev下的设备文件来描述,而NFS文件系统使用远程主机名和主机上的共享目录名(中间使用:分隔)来描述 。当然其执行的实质是不同的,事实上mount根据文件系统的类型,执行mount_nfs来真正安装nfs文件系统 。
/mnt应该是本地文件系统上的一个空目录,没有安装其他文件系统 。如果这个目录非空,那么使用mount之后,原有的本地文件系统中的内容将不可被访问,只能看到新安装上的文件系统中的内容 。
由此来看,NFS客户不需要进行复杂的配置,只需知道NFS服务器的主机名和共享出的目录名即可 。事实上,知道了NFS服务器的主机名,就可以使用showmount命令,来查看这台服务器共享出的目录名和访问限制 。
# showmount -e nfssrv使用NFS文件系统只需要内核支持,而不需其他额外设置,但是同时使用nfsiod进程能够提供高效的缓冲机制,从而改善nfs文件系统的性能,应该可以在装载NFS文件系统之前执行这个守护进程 。
# nfsiod -n 4参数-n 4用于限制nfsiod的副本数量,每一个nfsiod用于辅助处理一次I/O操作,因此如果通过NFS文件系统进行频繁的I/O操作,就要考虑增加nfsiod的副本数量 。
由于使用nfsiod能够提升系统性能,对于NFS客户计算机,就可以在系统启动时执行这个守护进程 。这需要在FreeBSD的系统配置文件rc.conf中设置nfs_clIEnt_enable参数的值为"YES",系统启动时就自动执行nfsiod 。
使用fstab
对于经常用到的NFS文件系统,并且提供NFS服务的Unix主机也非常可靠 。那么就可以将这些系统加入/etc/fstab文件中,在系统启动时自动安装该NFS文件系统 。由于NFS文件系统不在本地,因此在服务器不能提供NFS服务时就会造成故障,系统会遇到启动障碍,而不同正常启动 。因此对于一台不稳定的服务器系统,最好不要使用/etc/fstab来装载NFS文件系统,或者在/etc/fstab的设置参数选项中使用noauto参数,不让系统自动装载这个文件系统 。
# DeviceMountpointFStypeOptions DumpPass#/dev/wd0s3bnoneswapsw00/dev/wd0s3a/ufsrw11/dev/wd0s3f/usrufsrw22/dev/wd0s3e/varufsrw22proc/proc procfsrw00/dev/wcd0c/cdromcd9660ro,noauto00nfssrv:/exports /nfsnfsro,noauto00/etc/fstab文件中的第四列为安装文件系统时使用的安装参数,如果增加了noauto选项,这样系统启动时并不立即安装这个文件系统,而是直到管理员输入mount命令之后才进行安装 。但是此时mount命令的参数就可以比较简单,对应前面安装nfssrv的命令,可以简化为mount /nfs,mount会查看fstab文件寻找匹配的行,以使用正确的参数安装文件系统 。
自动安装守护进程AMD
为了更方便的使用NFS,可以使用自动安装软件amd(automounter daemon,自动安装守护进程)自动维护文件系统,这就使在访问具体目录时能够立即安装该文件系统,而经过一端时间间隔内没有任何访问发生,再自动卸载这个文件系统 。
amd需要指定一个进行监视的空目录,所有要安装的文件系统与这个目录下的子目录一一对应;它还需要一个维护用的空目录,用于安装远程文件系统,而监视目录中的子目录将是正确安装的文件系统的符号连接 。这些子目录和符号连接并不需要管理员创建,而是要在映射文件中指明,由amd来创建和维护 。当监视子目录被访问时,amd守护进程就会安装相应的文件系统并建立正确的连接,使得目录和文件能被正常访问 。

推荐阅读