NFS(Network FileSystem)

 

主要功能是可以透过网络,让不同的机器的;linux操作系统、可以彼此分享文件档案。

 

当我们启动完毕NFS服务后,所被共享的目录可以被客户机所挂载到自己系统上面的挂载点(自定义),挂载完毕后就可以像访问自己的目录一样任意访问,但必须得给予其足够的权限,否则无法正常访问。

 

NFS的服务端口为2049号端口,因为文件系统的复杂和支持的功能较多,因此每启动一个功能就会启用一些端口来传输数据,这些被端口是随机抽取一些未被使用的小于1024的端口来传输之用。

为了使客户机能正常连上服务器,就需要使用RPC(Remote Procedure Call)远程过程呼叫服务,RPC服务的主要功能就是指定每个NFS功能所对应的端口号,并且反馈给客户端,让客户端能正确的端口上。NFS服务启用后会随机取用数个端口,并主动的向RPC注册,因此RPC可以知道每个端口所对应的NFS功能,然后RPC会固定使用111端口来监听客户端的需求并向客户端提供正确的端口。

 

启动NFS之前必须先开启RPC服务,否则NFS无法向RPC注册;若RPC重启时,原本注册的数据会不见,因此RPC重新启动后,NFS管理的所有服务都需要重新向RPC注册。

 

NFS的启动的RPC守护进程有:

rpc.nfsd:管理客户端是否能够使用服务器文件系统挂载信息和登陆者ID的判别

rpc.mountd:管理NFS的文件系统,会读取NFS的配置文件/etc/exports来对比客户端的权限。

rpc.lockd:锁定管理档案

rpc.statd:检查档案的一致性,常与rpc.lockd同时启动,这两个服务必须服务器和客户端同时开启才会有效。

 

只有满足了使用者账号的相关身份,NFS服务器允许有写入的权限,文件系统必须有写入的权限,这样才能具有该档案的可写入权限。

 

 

关于NFS访问的用户问题(以xia为例)

 

客户端账号访问服务端的时候,服务端会自动检测/etc/passwd 、/etc/group来查询对应的使用者、组名,就会有如下情况:

 

1、如NFS服务端和客户端刚好有相同的账号和组对应,那么xia访问服务端的时候自动以xia的身份进行服务器所提供的文件系统存取。

2、NFS客户端的xia的UID和服务端账户xia1的UID相同,则客户端的xia会存取服务端的xia1,因为两端的UID相同。

3、NFS服务端并没有xia的UID,则会匿名访问,账号nobody(UID为65534)

4、如果以root账户相同,由于root的uid为0,所以会自动匿名访问。

 

 

实验准备:

 

1、实验前需安装nfs服务包和rpc服务包(默认安装)

 

2、服务安装完毕后配置服务

 

NFS的主要配置文件为/etc/exports

 

NFS服务的分享资源登录文件:/vat/lib/nfs/etab 主要记录NFS所分享出来的目录完整权限设定值。/vat/lib/nfs/xtab 记录曾经连接到此NFS服务器的相关登录数据。

 

/etc/exports配置文件的配置方法

 

          所共享的目录 IP地址(登陆者的权限)

例:    /xia  192.168.2.0/24(rw)

       表明所共享的目录为/xia 192.168.2.0网段的客户机可以进行访问,拥有读写权限。

 

IP地址可以设置网段、单个IP地址 或IP地址/子网掩码

 

权限方面的设置常见的参数如下:

rw:能读能写

ro:只读

sync:数据同步写入到内存和硬盘中

async:暂存内存中不会直接写入硬盘

no_root_squash:当客户端以root访问时,会自动匿名为nobody,如想以root身份登录,则加入此参数

all_squash:不论任何用户登录自动匿名为nobody

anonuid:anon指anonymous匿名者,自行设定登录用户的UID,但此UID必须在/etc/passwd当中存在

anongid:同理,指群组。

 

3、配置完毕后启动NFS

 

/etc/init.d/rpcbind start 启动rpc(默认开启)

service nfs restart 重启nfs

/etc/init.d/nfs start 开启nfs

 

如启动失败可去/vat/log/messages下查看日志信息

 

4、检测是否启动成功

 

启动成功后可netstat -tulnp |grep -E(rpc|nfs)查看所开的端口

rpc的默认端口为111

nfs的默认端口为2049 

其他的rpc.*服务启动的端口随机产生,须向rpc 111端口注册。

 

rpcinfo  接IP地址

查看此IP地址的RPC服务的注册状况

-p:针对IP显示所有的端口和程序(program)信息

-t:针对IP的某只程序查看其TCP封包所在的软件版本

-u:同上 UDP封包

如 rpcinfo -t 192.168.2.10 nfs

 

showmount 检查是否可以连接共享

-a:查看目前主机与客户端的NFS联机分享的状态。

tc/exports所分享的目录数据。

 

exportfs 重新注册/etc/exports(不用重启服务)

-a(all):全部挂载/etc/exports

-u(uninstal):卸载某一目录

-v(version):显示分享的目录信息

 

5、NFS客户端访问

注意如防火墙开启,将无法访问,需关闭防火墙或更改防火墙配置。

 

客户端访问时首先开启rpc服务,服务启动后才可进行挂载

 

shoumount -e 服务端IP 查看共享资源

 

进行挂载

 

mount -t nfs 192.169.2.10:/共享目录 /所挂载的目录

-t nfs指指定文件系统类型

 

由于安全问题,所以可以禁用suid指以免出现状况

 

mount -t nfs -o nosuid 192.169.2.10:/共享目录 /所挂载的目录

 

6、如何进行开机自动挂载

 

不能在/etc/fstab下编辑,因为系统尚未启动网络,会无法挂载成功,应当编辑/etc/rc.d/rc.local

 

autofs的设定

此设定会持续的侦查某个指定的目录,并预先设定档使用该目录下的某个子目录时,将会取得服务端的NFS,并进行自动挂载。

例当我们要是有/nfs/file/pubilc的数据时,此时autofs才会去挂载/nfs/file,且当隔了五分钟没有使用该目录下的数据时,会自动卸除/nfs/file/pubilc

 

在此文件下编辑被持续侦测的目录及数据文件就可以

如 /nfs/file /etc/auto.nfs

/nfs/file不需要事先创建,autofs会主动建立,如事先创建,可能出问题。

 

建立数据对应文件/etc/auto.nfs的挂载信息及服务器对应资源

刚在/etc/auto.master下指定的/etc/auto.nfs是不存在的,需自行创建编辑。

此档案的格式如下:

         本地端次目录   挂载参数  服务器所提供的目录

如:   public            -rw          192.168.2.10:/1

 

/etc/init.d/autofs restart 启动autofs

 

转载于:https://blog.51cto.com/aixia/926748