NFS服务的配置与应用
 
nfs服务是基于rpc来实现的,是一个方便的共享文件系统,在linuxwindows之间共享的文件非常的便捷。 linuxnfs已经被完全整合进了内核,只要在编译内核的时候选择编译文件系统,那么默认就支持nfs
nfs主服务进程使用的端口是2049udp 2049tcp ,其他的进程端口都是半随机的(基于portmap)建议在/etc/sysconfig/nfs 将随机端口定义成静态端口,使端口不混乱,并且利于配置iptables防火墙策略
nfs的安装包是 nfs-utils基于uid识别用户,配置文件 /etc/exports /etc/sysconfig/nfs
nfs是多进程的
nfsd 主服务进程 是工作于内核中的,只能以root用户来运行
1 rpc.mountd基于rpc实现的挂载监控的进程
2 rpc.srard 用户建立的连接若是断掉,它负责通知服务器重新建立4连接
3 lockd 处理客户端请求文件锁,防止多用户同时对一个文件写入造成的冲突
4 rpc.rquotad  RPC 的辅助进程,默认监听随机端口
 
若是想让系统在启动时自动挂载NFS服务器上的输出目录,就编辑/etc/fstab  加入如下格式
NFS服务器名或IP地址:输出目录 本地挂载目录 nfs defaults 0 0
 
实现nfs服务 只需要编译 /etc/exports ,该文件默认为空的,每一行表示你共享的一个文件系统   
添加格式:
共享文件目录  允许访问的主机(访问权限)
(注:被导出的目录为独立的文件系统,若不是则在权限中定义 subtrww_check使更安全,如果共享文件中有空格用“”括起来,
定义允许访问的主机可以是 IP网段,IP NIS域(@NIS域名)并且可以通配)
下面介绍几种常用的访问权限
ro 可读
rw 可读可写
async 异步写入 先将数据保存在内存缓存区中,必要时才写入磁盘
sync 同步写入 将数据同步写入内存缓存区与磁盘中,效率低但是可以保证数据的一致性
用户映射选项
root_squash 如果是root用户来挂载的话,权限太大,就把root用户映射成来宾账号(默认设置)
no_root_squash  root访问时,不把root映射成来宾账号(该设置很危险)
all_squash  将远程访问的所有用户和所属用户组都映射成匿名用户或用户组
no_all_squash  不将远程访问的所以用户和所属拥护组映射成匿名 (默认设置)
anonuid=xxx  将远程访问的所以用户都映射成匿名用户,并指定为本地用户(UID=xxx
anongid=xxx   将远程访问的所以用户组都映射成匿名用户组账户,并指定为本地用户组(GID=xxx
其他常用项
secure     限制客户端只能从小于1024TCP/IP端口连接NFS服务器(默认设置)
insecure 允许客户端从大于1024TCP/IP的端口连接NFS服务器
subtree_check 若输出目录是一个子目录,则NFS 将检查其父目录的权限(默认设置)
no_subtree_check 即使输出的目录是一个子目录,NFS也不检查其父目录的权限
 
每当修改了/etc/exports 文件后,不需要重启NFS服务,使用exportfs就可以使设置立即生效
exportfs命令就是用来维护NFS服务的输出目录列表的
exportfs  -r 重新读取/etc/exports 文件设置,并使设置立即生效
exportfs –ra 重新导出全部
exportfs –v  将当前系统导出项显示在屏幕上
exportfs –au 关闭服务
exportfs –a 开启所有的,全部导出
 
showmount命令查看NFS服务器上的共享信息
showmount –e localhost查看当前主机共享的文件系统(只在服务端执行)
showmount –a 查看所有被挂载信息 (在服务端执行)
showmount –d 只显示被挂载目录
showmount –e IP 查看该IP共享的信息(客户端)
 
演示挂载过程
1# vim /etc/exports
/var/ftp 192.168.0.71(rwsync)  192.168.1.0/24(ro)
/var/pub        *(ro)
2 #service nfs restart
#service portmap status    nfs是基于 portmap 所以确定portmap是启动的
portmap (pid 3110) is running... 
#rpcinfo –p localhost  显示出来当前rpcportmap默认选择的端口
基于rpc 提供服务
#service nfs restart  重启nfs服务,或者 #exportfs –r
showmount –e localhost 查看当前主机共享的文件系统
切换到192.168.0.71
#mount –t nfs 192.168.0.71:/var/ftp /mnt
#cd /mnt  ls 查看  /var/ftp 下的文件是不是被挂在到/mnt 下了