NFS服务的配置与应用
nfs服务是基于rpc来实现的,是一个方便的共享文件系统,在linux和windows之间共享的文件非常的便捷。 linux中nfs已经被完全整合进了内核,只要在编译内核的时候选择编译文件系统,那么默认就支持nfs
nfs主服务进程使用的端口是2049的udp 和2049的tcp ,其他的进程端口都是半随机的(基于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 限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置)
insecure 允许客户端从大于1024的TCP/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(rw,sync) 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 显示出来当前rpc里portmap默认选择的端口
基于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 下了