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 �Cra
重新导出全部
exportfs �Cv
将当前系统导出项显示在屏幕上
exportfs �Cau
关闭服务
exportfs �Ca
开启所有的,全部导出
showmount
命令查看
NFS
服务器上的共享信息
showmount �Ce localhost
查看当前主机共享的文件系统
(
只在服务端执行
)
showmount �Ca
查看所有被挂载信息
(在服务端执行)
showmount �Cd
只显示被挂载目录
showmount �Ce 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 �Cp localhost
显示出来当前
rpc
里
portmap
默认选择的端口
基于
rpc
提供服务
#service nfs restart
重启
nfs
服务,或者
#exportfs �Cr
showmount �Ce localhost
查看当前主机共享的文件系统
切换到
192.168.0.71
#mount �Ct nfs 192.168.0.71:/var/ftp /mnt
#cd /mnt ls
查看
/var/ftp
下的文件是不是被挂在到
/mnt
下了