共计 5287 个字符,预计需要花费 14 分钟才能阅读完成。
一、NFS 服务简介
NFS 是 Network File System(网络文件系统)。主要功能是通过网络让不同的服务器之间可以共享文件或者目录。NFS 客户端一般是应用服务器(比如 web,负载均衡等),可以通过挂载的方式将 NFS 服务器端共享的目录挂载到 NFS 客户端本地的目录下。
NFS 在文件传送过程中依赖与 RPC(远程过程调用)协议。NFS 本身是没有提供信息传送的协议和功能的,但是能够用过网络进行图片,视频,附件等分享功能。只要用到 NFS 的地方都需要启动 RPC 服务,不论是 NFS 的服务端还是客户端。
NFS 和 RPC 的关系:可以理解为 NFS 是一个网络文件系统(比喻为租房的房主),而 RPC 是负责信息的传输(中介),客户端(相当于租房的租客)
二、系统环境:
[root@linuxidc ~]# cat /etc/RedHat-release ## 查看系统版本信息
CentOS release 6.7 (Final)
[root@linuxidc ~]# uname -r ## 查看内核信息
2.6.32-573.el6.x86_64
[root@linuxidc ~]# uname -m ## 查看系统是 32 位还是 64 位的
x86_64
三、服务端配置
在启动 NFS 服务之前,首先要启动 RPC 服务(CentOS5 是 portmap 服务,CentOS6.6 以后的版本是 rpcbind 服务),否则 NFS 服务器无法向 RPC 服务注册。另外,RPC 服务如果重启,原来以及有的 NFS 端口就会丢失,因此,只要 RPC 服务重启,NFS 服务就要重启向 RPC 重新注册新的随机端口号。一般修改 NFS 配置文件后,不需要重启服务,直接平滑重启即可,命令:/etc/init.d/nfs reload 或者 exportfs -rv 就可以修改 /etc/exports 生效。
/etc/init.d/nfs reload 的作用是:让已经到达服务器的请求给他处理完毕,但是没有到达服务器的请求,就把它断掉。就相当于我们去车站坐车,车子即将出发时,已经上车的就可以正常出发,没有赶上车的就没有办法跟车出发。
要部署 NFS 服务,需要安装下面的软件包:
1)nfs-utils:NFS 服务的主程序
2)rpcbing:NFS 可以视为一个 RPC 的主程序,在启动任何一个 RPC 程序之前,需要做好端口和功能的对应映射工作
1)查看 NFS 的软件包
[root@linuxidc ~]# rpm -qa nfs-utils rpcbind
nfs 和 rpc 默认是没有安装的,需要 yum 安装
2)CentOS6.7 默认没有安装软件包,可以使用 yum install nfs-utils rpcbind - y 命令来安装 NFS 软件
[root@linuxidc ~]# yum install nfs-utils rpcbind -y
[root@linuxidc ~]# rpm -qa nfs-utils rpcbind
nfs-utils-1.2.3-70.el6_8.2.x86_64
rpcbind-0.2.0-12.el6.x86_64
3)启动 NFS 服务
第一步:先启动 rpc 服务
[root@linuxidc ~]# /etc/init.d/rpcbind start #启动 rpc 服务
[root@linuxidc ~]# /etc/init.d/rpcbind status #查看 rpc 服务状态
rpcbind (pid 4269) 正在运行 …
第二步:启动 NFS 服务
[root@linuxidc ~]# /etc/init.d/nfs start #启动 nfs 服务
[root@linuxidc ~]# /etc/init.d/nfs status #查看 nfs 服务状态
rpc.svcgssd 已停
rpc.mountd (pid 3282) 正在运行 …
nfsd (pid 3298 3297 3296 3295 3294 3293 3292 3291) 正在运行 …
rpc.rquotad (pid 3277) 正在运行 …
必须要先启动 rpc 服务,然后再启动 NFS 服务,如果先启动 NFS 服务,启动服务时会失败,提示如下
[root@linuxidc ~]# /etc/init.d/nfs start
启动 NFS 服务:[确定]
关掉 NFS 配额:无法注册服务: RPC:无法接收; errno = 拒绝连接
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
[失败]
启动 NFS mountd:[失败]
启动 NFS 守护进程:
[root@linuxidc ~]# rpcinfo -p 172.16.1.31 #查看 NFS 服务向 rpc 注册的端口信息,主端口号是:111
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tc
p 875 rquotad
100011 2 tcp 875 rquotad
第三步:检查开机是否自启动
[root@linuxidc ~]# chkconfig nfs on
[root@linuxidc ~]# chkconfig rpcbind on
[root@linuxidc ~]# chkconfig –list nfs
nfs 0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
[root@linuxidc ~]# chkconfig –list rpcbind
rpcbind 0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
[root@linuxidc ~]# tail -2 /etc/rc.local
/etc/init.d/rpcbind start
/etc/init.d/nfs start
在工作中,大都是统一按照运维规范将服务的启动命令放到 /etc/rc.local 里面,而不是用 chkconfig 来管理的,所有的服务一旦开机自启动就必须放到 /etc/rc.local 中。这样的好处是,一旦管理此服务器的人员离职忙活着业务迁移都可以通过 /etc/rc.local 很容易的查看到服务器对应的相关服务,可以方便的运维管理。
4)NFS 服务端配置文件的配置
NFS 默认配置文件路径是:/etc/exports,文件默认是空的。
/etc/exports 配置文件的格式是:
NFS 共享的目录 NFS 客户端地址(参数 1,参数 2)
123456 [root@linuxidc ~]# cat /etc/exports
#share /data by linuxidc for bingbing at 20160425
/data 172.16.1.0/24(rw,sync) ## 一条配置搞定 NFS 配置文件
其中:/data 是服务器端共享的目录
172.16.1.0/24 共享目录的客户端 ip 地址
(rw,sync),其中 rw 代表拥有读写的权限,sync 代表数据同步写入 NFS 服务器端的硬盘中。也可以用 async,async 是大数据时使用,是先写到缓存区,再写到磁盘里。
v NFS 共享的目录:为 NFS 服务器端要共享的实际目录,要用决定路径,如(/data)。注意共享目录的本地权限,需要读写权限,一定要让本地目录可以被 NFS 客户端的用户读写
v NFS 客户端地址:为 NFS 服务器端授权的可访问的共享目录的 NFS 客户端地址,可以为单独的 ip 地址或者主机名,域名等,也可以是整个网段的地址。
创建 /data 目录,并且属主和属组都为:nfsnobody,其中 nfsnobody 是安装 nfs 服务时默认的用户
[root@linuxidc ~]# mkdir /data -p
[root@linuxidc ~]# chown -R nfsnobody:nfsnobody /data
[root@linuxidc ~]# ls -ld /data
drwxr-xr-x 6 nfsnobody nfsnobody 4096 12 月 8 20:17 /data
[root@linuxidc ~]# /etc/init.d/nfs reload
[root@linuxidc ~]# showmount -e 172.16.1.31 ## 本地测试,说明服务端测试成功
Export list for 172.16.1.31:
/data 172.16.1.0/24
四、客户端配置
1. 客户端和服务端一样,也要安装 nfs 和 rpm 的安装包。(配置见服务器端)
2. 客户端需要启动 rpc 服务,加入开机自启动,不需要启动 nfs 服务。(配置见服务器端)
3. 测试:
第一步:ping,能不能 ping 通服务器端 ip 地址
[root@linuxidc ~]# ping 172.16.1.31
PING 172.16.1.31 (172.16.1.31) 56(84) bytes of data.
64 bytes from 172.16.1.31: icmp_seq=1 ttl=64 time=0.383 ms
64 bytes from 172.16.1.31: icmp_seq=2 ttl=64 time=0.434 ms
64 bytes from 172.16.1.31: icmp_seq=3 ttl=64 time=0.420 ms
64 bytes from 172.16.1.31: icmp_seq=4 ttl=64 time=0.437 ms
64 bytes from 172.16.1.31: icmp_seq=5 ttl=64 time=0.439 ms
^C
— 172.16.1.31 ping statistics —
5 packets transmitted, 5 received, 0% packet loss, time 4997ms
rtt min/avg/max/mdev = 0.383/0.422/0.439/0.030 ms
第二步:telnet 服务端的 111 端口
[root@linuxidc ~]# telnet 172.16.1.31 111
Trying 172.16.1.31…
Connected to 172.16.1.31.
Escape character is ‘^]’.
第三步:showmount 服务端
[root@linuxidc ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
第四步:挂载,文件共享
[root@linuxidc ~]# mount -t nfs 172.16.1.31:/data/ /mnt
第五步:查看是否挂载成功了
[root@linuxidc ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.5G 6.9G 18% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 36M 145M 20% /boot
172.16.1.31:/data/ 8.8G 1.5G 7.0G 18% /mnt
说明客户端测试成功,配置完成。
NFS 文件系统详解 http://www.linuxidc.com/Linux/2016-06/131940.htm
Ubuntu 12.04 安装 NFS server http://www.linuxidc.com/Linux/2012-09/70728.htm
基于 LAMP 平台利用 NFS 远程共享资源实现站点构建 http://www.linuxidc.com/Linux/2016-07/133510.htm
文件服务器 NFS 配置详解 http://www.linuxidc.com/Linux/2013-06/86542.htm
Ubuntu 下搭建 NFS 网络文件系统服务器 http://www.linuxidc.com/Linux/2013-07/87367.htm
CentOS 7.2 中 NFS1.3 安装 http://www.linuxidc.com/Linux/2016-10/135970.htm
Ubuntu 14.04 安装配置 NFS 服务器 http://www.linuxidc.com/Linux/2016-04/129848.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139886.htm