NFS(Network File System的缩写,即网络文件系统),依赖于RPC协议 (Remote Procedure Cal的缩写,即远程过程调用) 实现文件或信息传送,只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。简单说:NFS是一个文件系统,而RPC是负责信息的传输。
注:NFS使用TCP/IP提供的协议和服务,并且位于OSI模型中的应用层,具体如下:
层数
名称
功能
1
应用层
NFS
2
表示层
XDR
3
会话层
RPC
4
传输层
UDP,TCP
5
网络层
IP
6
数据链路层
7
物理层 Ethernet
server:10.15.72.38
client:10.15.72.83
一、启动NFS服务
centos7 systemctl enable rpcbind.service systemctl enable nfs-server.service
systemctl start rpcbind.service systemctl start nfs-server.service
NFS启动后的端口:
nfs开启的是2049,portmap/rpcbind开启的是111,其余则是rpc开启的
NFS启动时会随机启动多个端口并向RPC注册,这样如果使用iptables对NFS端口进行限制就会有点麻烦,可以更改配置文件固定NFS服务相关端口。
分配端口,编辑配置文件,文末添加以下,然后在iptables中设置对应端口
上面的端口不能与跟/etc/services文件中定义的重复:
二、NFS日志
NFS服务的日志记录在/var/log/messages文件中
三、配置NFS
NFS的常用目录
/etc/exports NFS服务的主要配置文件
/usr/sbin/exportfs NFS服务的管理命令
/usr/sbin/showmount 客户端的查看命令
/var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值
/var/lib/nfs/xtab 记录曾经登录过的客户端信息
配置文件/etc/exports,可以设置NFS的共享目录、访问权限和允许访问的主机等参数,在默认情况下,这个文件是个空文件,没有配置任何共享目录,这是基于安全性的考虑,即使系统启动NFS服务也不会共享任何资源。
/etc/exports文件内容格式:
server:

允许某一网段访问:/home/nfs 10.15.72.0/24 (ro,sync.no_subtree_check,anouid=0,anogid=0)
也可以是具体IP、或者所有主机(*),还可以是域名,域名支持通配符 如: *.51cto.com
服务启动时我们一定首先启动portmap进程,之后再启动nfs主进程。由于在6系列里面,portmap已经改名了 ,6系列需要使用 service rpcbind start启动启动的时候最好先启动rpcbind,再启动nfs,停止则反过来
守护进程启动顺序:rpc.portmap, rpc.mountd, rpc.nfsd, rpc.statd, rpc.lockd (新版本会自动跟着nfsd启动起来), rpc.rquotad
mounted已经顺利启动,这个服务管理nfs挂载
daemon也已经顺利启动,这个服务管理客户端机能否顺利登入主机
/home/nfs 共享的目录
10.15.72.83允许访问的IP,也可设置允许访问共享的网段如10.15.72.0/24,如果允许所有客户端访问,可以用通配符“*”
ro 客户端访问共享目录时的权限,ro表示只读,rw表示可读可写
sync 文件同时写入硬盘和内存,这样不会轻易丢失数据,建议所有的NFS共享目录都使用该选项
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
fsid=0 表示将共享目录包装成根目录
/data 192.168.0.100(rw,sync,fsid=0) 192.168.0.101(rw,sync,fsid=0)
fsid=0表示将/data找个目录包装成根目录
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
no_subtree_check 不检查目录权限,提高目录读取速率
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:登入NFS主机,使用该共享目录时相当于该目录的拥有者。但是如果是以root身份使用这个共享目录的时候,那么这个使用者(root)的权限将被压缩成为匿名使用者,即通常他的UID与GID都会变成nobody或nfsnobody身份
no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);这个UID必需要存在于你的/etc/passwd当中
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
可以设置同一目录不同IP端的权限比如再设置/home/nfs 72.73只读不可写,在上面72.83行后面添加一行/home/nfs 10.15.72.73 (ro)即可
修改了/etc/exports后,并不需要重启nfs服务,只要用exportfs重新扫描一次/etc/exports,并且重新加载即可
exportfs[-aruv]
参数 含义
a 全部挂载(或卸载)/etc/exports档案内的设定
r 重新挂载/etc/exports 里面的设定,也同步的更新/etc/exports和/var/lib/nfs/xtab里面的内容
u 卸载某一目录
v 在export的时候,将分享的目录显示到荧屏上
三、使用showmount命令查询NFS的共享状态
client:
客户端也需要安装rpcbind, 建议nfs一起安装,便于使用showmount命令
10.15.43.238:/app/redis/logs /app/nfs nfs4 defaults,soft,intr 0 0
如果一个NFS服务器上有许多的客户端一直连接的话,NFS服务器会承受很大的带宽压力,这对NFS服务器的正常使用会造成很大的影响,而且,永久挂载后每次系统启动都会自动挂载服务器端NFS,当服务端NFS没有开启时,本地客户端启动时会执行挂载任务,导致系统启动速度变慢,因此,为了解决这一弊端,我可以这样做:让NFS客户端在获取数据时与NFS服务器进行连接,而在没有获取数据的时间内,自动的断开与NFS服务器之间的连接,这就是NFS的自动挂载技术。需要注意的是,配置方法是在NFS客户端方面进行配置的。
自动挂载用到的软件包automount,一般系统都默认安装了的。如果没有安装再安装下:yum install autofs
/app是客户端挂载的本地路径,我们在向NFS服务器发送请求信号时,一定要在这个目录下面进行操作,否则是无效的,实验的时候我事先创建了nfs文件夹,当达到超市时候后nfs文件夹用ls也是看不到,但是可以在根目录下可以查看挂载后的文件
/etc/auto.nfs: 是一个配置 NFS服务器共享文件的路径,及本地在/app目录中要与远程共享文件挂载的目录及权限,在auto.nfs文件中还要详细说明。
--timeout=60:指NFS客户端在多久没有向NFS服务器请求数据时断开挂载连接。
nfs是一个本地目录,我们不需要创建它,用于挂载远程共享文件10.15.43.238:/app/redis/logs,在我们想要使用远程共享文件时,只要在本地目/app下键入:cd server 系统就会自动挂载到远程共享目录:10.15.43.238:/app/redis/logs,我们就可以正常使用里面的共享文件了 ,在到达超时时间时就会自动卸载。
Windows 7访问NFS:
(1)打开Windows7系统程序--->控制面板--->程序和功能--->打开或关闭windows功能--->选中nfs安装
Tips:
在服务端执行以下:
1.关闭服务端的SELINUX
2.服务端防火墙中开启相应端口,nfs使用:tcp/udp 2049
同时开启多个端口
NFS服务端端口管理文件:
查看链接的客户端:
查看客户端查看的目录:
###########################################################
关注微信平台,了解更多分享
2014,我们没有时间再去挥霍;
2014,我们需要学习以及坚持;
我们需要把等公交、乘地铁的时间一点点利用;
关注微信平台,随时都可以查看分享;
我们更需要大家一起来分享。
Linux交流QQ群:333212786
################################################################################