1、首先知道NFS是什么?为什么会有NFS出现,这个网上书上很多了。NFS(Network File System)中文名:网络文件系统。他可以使安装了不同操作系统的计算机之间进行数据共享。有效提高资源的利用率,节省本地磁盘空间,方便集中管理。
NFS是采用的C/S模式。其他系统在挂载了这个共享目录之后就可以像访问本地目录一样访问这个文件目录了。
NFS支持的功能很多,不同功能由不同的程序来执行,每启用一个功能就需要打开一些端口进行数据传输。所以NFS不是监听的固定端口,而是随机采用一些小于1024的端口作为数据传输之用。但是客户端连接服务器必须知道端口,NFS的端口随机性给客户端连接带来了麻烦。为此NFS使用了远程过程调用协议(RPC)来解决。
2、NFS的架构很简单,一般的linux系统都安装了这样的服务。NFS需要两个服务,一个是portmap,一个是nfs。由于NFS在启动时候进行端口注册,所以正确的启动顺序是先portmap之后是nfs。关闭的时候就相反。
NFS启动之后,监听的端口是随机的,可以通过netstat -ultnp | grep -E "Proto|portmap|rpc" 查看。如下图:
3、NFS的配置主要是通过/etc/exports配置文件来实现的。该文件用于设置服务器的共享目录,以及目录允许访问的主机,访问权限,其他选项等等。NFS安装之后会在/etc下生成一个空的exports文件。我们需要对它进行手工配置。
格式:
共享目录 [客户端1(选项1,选项2,....)] [客户端2(选项1,选项2,....)].....
共享目录与客户端之间用空格隔开。除共享目录外,其他都是可选的。
客户端,可以通过IP地址和主机名指定。也可用子网掩码指定网段或用通配符进行模糊指定。当客户端为空时,表示所有客户均可访问。
选项指定该共享目录的访问权限。
给一个exports的配置示例
/home/test *(rw,no_root_squash)
/share/public *(rw,all_squash,anonuid=40,anongid=40)
/share/private 192.168.0.100(rw)
/share/doc 192.168.0.0/255.255.255.0(rw) *(ro)
第一行,共享目录为/home/test。所有客户都可以对该目录进行读写,取消root的匿名映射。
第二行,所有客户都可以对该目录进行读写,不管什么身份,他的UID和GID都映射成40
第三行只对这个IP开放
第四行是一个网段开放读写权限。其他客户只有读。
我们设置好之后,重新开启服务。然后可以进行一个简单的映射了。
mout localhost:/home/jaffer /test
这将/home/test映射到了/test。
4、autofs
autofs就是一个按需挂载的程序。NFS服务器与客户端不是永久链接的,任何一方不在都可能导致另外一方不断等待。这样就消耗了资源。
autofs安装在linux下一般都有。rpm -q autofs可以知道是否安装。
配置:
autofs的主要配置文件:/etc/auto.master。该文件十分简单。只需要设置挂载点的顶层目录和映射文件即可。格式如下:
挂载点顶层目录 映射文件
例如,要把共享目录挂载到/test/test1.那么这里的值就是/test。
映射文件格式如下,表示该文件设置的NFS文件系统该怎么挂载。
挂载点 [-挂载选项] NFS服务器名或IP:共享目录
挂载点是相对路径。
示例:将/home/jaffer挂载到/test/test
/etc/exports如下:
/home/jaffer *(rw)
/etc/autofs.master如下:
/test /etc/auto.nfs
创建auto.nfs内容如下:
test -ro,bg,soft localhost:/home/jaffer
执行service autofs reload
注意,我们在进入/test之后,ls,发现什么都没有。但是我们cd test成功,然后ls就出现了/home/jaffer里面的内容。这就是autofs的精髓所在。在我么使用的时候才挂载。