位置:海鸟网 > IT > linux/Unix >

Debian和UbuntuLinux的NFS配置介绍

NFS(NetworkFileSystem,网络文件系统)可以通过网络将分享不同主机(不同的OS)的目录——可以通过NFS挂载远程主机的目录,访问该目录就像访问本地目录一样!
 
一般而言,使用nfs能够方便地使各unix-like系统之间实现共享。但如果需要在unix-like和windows系统之间共享,就得使用samba了!
 
NFS运行在SUN的RPC(RemoteProcedureCall,远程过程调用)基础上,RPC定义了一种与系统无关的方法来实现进程间通信。由此,NFSserver也可以看作是RPCserver.
 
正因为NFS是一个RPC服务程序,所以在使用它之前,先要映射好端口——通过portmap设定。比如:某个NFSclient发起NFS服务请求时,它需要先得到一个端口(port)。所以它先通过portmap得到portnumber.(不仅NFS,所有的RPC服务程序启动之前,都需要设定好portmap)
 
在启动RPC服务(比如NFS)之前,需要启动portmap服务!(关于nfs和portmap是否存在于当前系统,看后面的"NFS安装"部分。
 
与NFS相关的几个文件,命令
 
1、/etc/exports
 
对NFS卷的访问是由exports来批准,它枚举了若干有权访问NFS服务器上文件系统的主机名。
 
2、/sbin/exportfs
 
维护NFS的资源共享。可以通过它重新设定/etc/exports的共享目录,卸载NFSServer共享的目录或者重新共享等。
 
3、/usr/sbin/showmount
 
用在NFSServer端,而showmount则主要用在Client端。showmount可以用來查看NFS共享的目录资源。
 
4、/var/lib/nfs/xtab
 
NFS的记录文档:通过它可以查看有哪些Client连接到NFS主机的记录。
 
下面这几个并不直接负责NFS,实际上它们负责所有的RPC
 
5、/etc/default/portmap
 
实际上,portmap负责映射所有的RPC服务端口,它的内容非常非常之简单(后面详述)
 
6、/etc/hosts.deny
 
设定拒绝portmap服务的主机
 
7、/etc/hosts.allow
 
设定允许portmap服务的主机
 
安装NFS
 
Debian/Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序:
 
$sudoapt-getinstallnfs-kernel-server
 
(安装nfs-kernel-server时,apt会自动安装nfs-common和portmap)
 
这样,宿主机就相当于NFSServer.
 
同样地,目标系统作为NFS的客户端,需要安装NFS客户端程序。如果是Debian/Ubuntu系统,则需要安装nfs-common.
 
$sudoapt-getinstallnfs-commmon
 
nfs-common和nfs-kernel-server都依赖于portmap!
 
配置NFS
 
由于NFS是一个RPCserver程序。而portmap是用来挂你RPC的端口号映射的。所以先要配置portmap.
 
配置portmap
 
方法1:编辑/etc/default/portmap,将-i127.0.0.1去掉。
 
方法2:$sudodpkg-reconfigureportmap,对Shouldportmapbeboundtotheloopbackaddress?选N.
 
配置/etc/hosts.deny
 
(禁止任何host(主机)能和你的NFS服务器进行NFS连接),加入:
 
###NFSDAEMONS
 
portmap:ALL
 
lockd:ALL
 
mountd:ALL
 
rquotad:ALL
 
statd:ALL
 
配置/etc/hosts.allow
 
允许那些你想要的主机和你的NFS服务器建立连接。下列步骤将允许任何IP地址以192.168.2开头的主机(连接到NFS服务器上),也可以指定特定的IP地址。参看man页hosts_access(5),hosts_options(5)。加入:
 
###NFSDAEMONS
 
portmap:192.168.2.
 
lockd:192.168.2.
 
rquotad:192.168.2.
 
mountd:192.168.2.
 
statd:192.168.2.
 
/etc/hosts.deny和/etc/hosts.allow设置对portmap的访问。采用这两个配置文件有点类似"mask"的意思。现在/etc/hosts.deny中禁止所有用户对portmap的访问。再在/etc/hosts.allow中允许某些用户对portmap的访问。
 
运行$sudo/etc/init.d/portmaprestart重启portmapdaemon.
 
配置/etc/exports
 
NFS挂载目录及权限由/etc/exports文件定义
 
比如我要将将我的home目录中的/home/zp/share目录让192.168.2.*的IP共享,则在该文件末尾添加下列语句:
 
/home/zp/share192.168.2.*(rw,sync,no_root_squash)
 
或者:/home/zp/share192.168.2.0/24(rw,sync,no_root_squash)
 
192.168.2.*网段内的NFS客户端能够共享NFS服务器/home/zp/share目录内容。且有读,写权限,并且该用户进入/home/zp/share目录后的身份为root
 
最好加上sync,否则$sudoexportfs-r时会给出警告,sync是NFS的默认选项。
 
运行$showmount-e查看NFSserver的exportlist.
 
若更改了/etc/exports,运行$sudoexportfs-r更新
 
运行$sudo/etc/init.d/nfs-kernel-serverrestart重启nfs服务
 
/etc/exports实际上就是nfs服务器的核心配置文件了。鸟哥的Linux私房菜列举了一些exports文件的写法。
 
测试NFS
 
可以尝试一下挂载本地磁盘(假设本地主机IP地址为:192.128.2.1,将/home/zp/share挂载到/mnt)
 
$sudomount192.168.2.1:/home/zp/share/mnt
 
运行$df看看结果
 
$sudoumount/mnt
 
注意被拷贝文件的读/写权限!
 
另外,可以使用一定的参数:
 
使用加参数的办法:mount-onolock,rsize=1024,wsize=1024,timeo=15192.168.2.130:/tmp//tmp/