NFS服务搭建与配置
本文讲解在 CentOS 5.x、CentOS 6.x 和 CentOS 7.x 环境下,如何安装与部署 NFS 服务。
注意:一台机器不要同时做 NFS 的服务端和 NFS 的客户端。如果同时作了 NFS 的服务端和客户端,那么在关机的时候,会一直夯住,可能十分钟之后甚至更久才能关闭成功。
NFS 工作原理简介

启动 NFS SERVER 之前,首先要启动 RPC 服务(CentOS 5.x 下为 portmap 服务,CentOS 6.x 和 CentOS 7.x 下为 rpcbind 服务,下同),否则 NFS SERVER 就无法向 RPC 服务注册了。
另外,如果 RPC 服务重新启动,原来已经注册好的NFS端口数据就会丢失,因此,此时 RPC 服务管理的NFS程序也需要重新启动以重新向RPC注册。
要特别注意的是:一般修改NFS配置文件后,是不需要重启NFS的,直接在命令行执行 /etc/init.d/nfs reload 「针对CentOS 5.x 或 CentOS 6.x」 或 systemctl reload nfs.service 「针对CentOS 7.x」 或 exportfs -rv 即可使修改的 /etc/exports 生效。
NFS 服务所需的安装包
安装 NFS 和 RPC 「服务端、客户端都安装」
[root@backup ~]# rpm -qa nfs-utils rpcbind
[root@backup ~]# yum install nfs-utils rpcbind -y #nfs需要的安装包
[root@backup ~]# rpm -qa nfs-utils rpcbind
nfs-utils-1.2.-.el6.x86_64
rpcbind-0.2.-.el6_7.x86_64
查看用户信息
[root@nfs01 ~]# tail /etc/passwd
haldaemon:x:::HAL daemon:/:/sbin/nologin
ntp:x::::/etc/ntp:/sbin/nologin
saslauth:x:::Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x::::/var/spool/postfix:/sbin/nologin
sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x::::/:/sbin/nologin
oldboy:x::::/home/oldboy:/bin/bash
rpc:x:::Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin #yum安装rpc服务时创建的
rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin #yum安装rpc服务时创建的
nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin #yum安装nfs服务时创建的
NFS 版本查看
服务端版本查看
nfsstat -s
客户端版本查看
nfsstat -c
NFS服务端搭建
配置exports
[root@nfs01 ~]# mkdir /data
[root@nfs01 ~]# ll -d /data/
drwxr-xr-x. root root Apr : /data/
[root@nfs01 ~]# chown -R nfsnobody.nfsnobody /data/
[root@nfs01 ~]# ll -d /data/
drwxr-xr-x. nfsnobody nfsnobody Apr : /data/
[root@nfs01 ~]# cat /etc/exports
# share /data for web created by zhangliang at --
/data 172.16.1.0/(rw,sync)
#172.16.1.0/(rw,sync) 没有空格
#/data 172.16.1.0/(rw,sync,root_squash,all_squash,anonuid=XXXX,anongid=XXXX) # 推荐配置
其他配置示例:
# 指定 IP 配置
/opt 192.168.0.1(ro) 192.168.0.2(rw)
# 指定 网段
/data 172.16.1.0/(rw,sync)
启动rpcbind服务
CentOS 5.x 和 CentOS 6.x 启动方式
[root@nfs01 ~]# /etc/init.d/rpcbind start
[root@nfs01 ~]# netstat -anp | grep 'rpc'
tcp 0.0.0.0: 0.0.0.0:* LISTEN /rpcbind
tcp 0.0.0.0: 0.0.0.0:* LISTEN /rpc.statd
tcp ::: :::* LISTEN /rpc.statd
tcp ::: :::* LISTEN /rpcbind
udp 0.0.0.0: 0.0.0.0:* /rpcbind
udp 127.0.0.1: 0.0.0.0:* /rpc.statd
udp 0.0.0.0: 0.0.0.0:* /rpc.statd
udp 0.0.0.0: 0.0.0.0:* /rpcbind
udp ::: :::* /rpcbind
udp ::: :::* /rpc.statd
udp ::: :::* /rpcbind
unix [ ACC ] STREAM LISTENING /rpcbind /var/run/rpcbind.sock
unix [ ] DGRAM /rpc.statd
[root@nfs01 ~]# rpcinfo -p localhost
program vers proto port service
tcp portmapper
tcp portmapper
tcp portmapper
udp portmapper
udp portmapper
udp portmapper
udp status
tcp status
#### 由上可知,暂时只有自己的端口服务,没有其他的
CentOS 7.x 启动方式
[root@nginx_cdn ~]# systemctl start rpcbind.service
[root@nginx_cdn ~]# netstat -anp | grep 'rpc'
tcp 0.0.0.0: 0.0.0.0:* LISTEN /rpcbind
tcp6 ::: :::* LISTEN /rpcbind
udp 0.0.0.0: 0.0.0.0:* /rpcbind
udp 0.0.0.0: 0.0.0.0:* /rpcbind
udp6 ::: :::* /rpcbind
udp6 ::: :::* /rpcbind
unix [ ACC ] STREAM LISTENING /systemd /var/run/rpcbind.sock
[root@nginx_cdn ~]# rpcinfo -p localhost
program vers proto port service
tcp portmapper
tcp portmapper
tcp portmapper
udp portmapper
udp portmapper
udp portmapper
启动 NFS
CentOS 5.x 和 CentOS 6.x 启动方式
[root@nfs01 ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
正在启动 RPC idmapd: [确定]
[root@nfs01 ~]# rpcinfo -p localhost
program vers proto port service
tcp portmapper
tcp portmapper
tcp portmapper
udp portmapper
udp portmapper
udp portmapper
udp status
tcp status
udp rquotad
udp rquotad
tcp rquotad
tcp rquotad
udp mountd
tcp mountd
udp mountd
tcp mountd
udp mountd
tcp mountd
tcp nfs
tcp nfs
tcp nfs
tcp nfs_acl
tcp nfs_acl
udp nfs
udp nfs
udp nfs
udp nfs_acl
udp nfs_acl
udp nlockmgr
udp nlockmgr
udp nlockmgr
tcp nlockmgr
tcp nlockmgr
tcp nlockmgr
CentOS 7.x 启动方式
[root@nginx_cdn ~]# systemctl start nfs.service
[root@nginx_cdn ~]# rpcinfo -p localhost
program vers proto port service
tcp portmapper
tcp portmapper
tcp portmapper
udp portmapper
udp portmapper
udp portmapper
udp status
tcp status
udp mountd
tcp mountd
udp mountd
tcp mountd
udp mountd
tcp mountd
tcp nfs
tcp nfs
tcp nfs_acl
udp nfs
udp nfs
udp nfs_acl
udp nlockmgr
udp nlockmgr
udp nlockmgr
tcp nlockmgr
tcp nlockmgr
tcp nlockmgr
加入开始自启动
CentOS 5.x 和 CentOS 6.x 环境
使用 /etc/rc.local
[root@nfs01 ~]# tail /etc/rc.local
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff. touch /var/lock/subsys/local # start rpc and nfs server
/etc/init.d/rpcbind start
/etc/init.d/nfs start
使用chkconfig
[root@nfs01 ~]# chkconfig rpcbind on
[root@nfs01 ~]# chkconfig nfs on
[root@nfs01 ~]# ls /etc/rc.d/rc3.d/* | grep -E 'rpc|nfs'
/etc/rc.d/rc3.d/K61nfs-rdma
/etc/rc.d/rc3.d/K69rpcsvcgssd
/etc/rc.d/rc3.d/S13rpcbind
/etc/rc.d/rc3.d/S14nfslock
/etc/rc.d/rc3.d/S19rpcgssd
/etc/rc.d/rc3.d/S30nfs
查看rpc服务和NFS服务的开机启动顺序
[root@nfs01 ~]# head /etc/init.d/rpcbind
#! /bin/sh
#
# rpcbind Start/Stop RPCbind
#
# chkconfig: #运行级别 开机顺序 关机顺序【其中 指的是 运行级别】
# description: The rpcbind utility is a server that converts RPC program \
# numbers into universal addresses. It must be running on the \
# host to be able to make RPC calls on a server on that machine.
#
# processname: rpcbind
[root@nfs01 ~]# head /etc/init.d/nfs
#!/bin/sh
#
# nfs This shell script takes care of starting and stopping
# the NFS services.
#
# chkconfig: -
# description: NFS is a popular protocol for file sharing across networks.
# This service provides NFS server functionality, which is \
# configured via the /etc/exports file.
# probe: true
CentOS 7.x 环境
[root@nginx_cdn ~]# systemctl enable rpcbind.service
[root@nginx_cdn ~]# systemctl enable nfs.service
查看具体状态情况
[root@nginx_cdn ~]# systemctl status rpcbind.service
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
………………
[root@nginx_cdn ~]# systemctl status nfs.service
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
………………
查看有哪些参数生效
[root@nfs01 ~]# cat /var/lib/nfs/etab
/data 172.16.1.0/(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=,anongid=,sec=sys,rw,root_squash,no_all_squash)
参数说明:
ro:只读设置,这样 NFS 客户端只能读、不能写(默认设置);
rw:读写设置,NFS 客户端可读写;
sync:将数据同步写入磁盘中,效率低,但可以保证数据的一致性(默认设置);
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;如果服务器重新启动,这种行为可能会导致数据损坏,但效率高;
root_squash:当客户端用 root 用户访问该共享文件夹时,将 root 用户映射成匿名用户(默认设置);
no_root_squash:客户端的 root 用户不映射。这样客户端的 root 用户与服务端的 root 用户具有相同的访问权限,这可能会带来严重的安全影响。没有充分的理由,不应该指定此选项;
all_squash:客户端所有普通用户及所属组都映射为匿名用户及匿名用户组;「推荐设置」
no_all_squash:客户端所有普通用户及所属组不映射(默认设置);
subtree_check:如果共享,如:/usr/bin之类的子目录时,强制NFS检查父目录的权限;
no_subtree_check:即使共享 NFS 服务端的子目录时,nfs服务端也不检查其父目录的权限,这样可以提高效率(默认设置);
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,当使用async时,无需此设置;
anonuid=xxx:将远程访问的所有用户主都映射为匿名用户主账户,并指定该匿名用户主为本地用户主(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组为本地用户组(GID=xxx);
检查是否成功
[root@nfs01 ~]# showmount -e 172.16.1.31 # 其中 172.16.1.31 为 NFS 服务端IP
Export list for 172.16.1.31:
/data 172.16.1.0/
NFS客户端配置
启动rpcbind服务
CentOS 5.x 和 CentOS 6.x 环境
[root@web01 ~]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
CentOS 7.x 环境
[root@nginx_proxy01 ~]# systemctl start rpcbind.service
检查共享信息
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/
NFS挂载
在2台机器都挂载 NFS,好用于后面的测试。
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
查看挂载信息
查询方式1
[root@web01 ~]# df -h #有时可能会被卡主
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 .8G .5G .9G % /
tmpfs 495M 495M % /dev/shm
/dev/sda1 190M 40M 141M % /boot
172.16.1.31:/data .8G .5G .9G % /mnt
查询方式2
[root@web01 ~]# cat /proc/mounts # 优先使用,监控时使用该命令
rootfs / rootfs rw
proc /proc proc rw,relatime
sysfs /sys sysfs rw,relatime
devtmpfs /dev devtmpfs rw,relatime,size=490920k,nr_inodes=,mode=
devpts /dev/pts devpts rw,relatime,gid=,mode=,ptmxmode=
tmpfs /dev/shm tmpfs rw,relatime
/dev/sda3 / ext4 rw,relatime,barrier=,data=ordered
/proc/bus/usb /proc/bus/usb usbfs rw,relatime
/dev/sda1 /boot ext4 rw,relatime,barrier=,data=ordered
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime
172.16.1.31:/data/ /mnt nfs4 rw,relatime,vers=,rsize=,wsize=,namlen=,hard,proto=tcp,port=,timeo=,retrans=,sec=sys,clientaddr=172.16.1.8,minorversion=,local_lock=none,addr=172.16.1.31
测试
在客户端和服务端之间测试
「2个客户端,1个服务端」
1、任意客户端创建文件夹或创建文件并且输入数据,在服务端是否可以查看;
2、服务端创建文件夹或创建文件并且输入数据,在任意客户端是否可以查看;
3、在客户端A 删除客户端B 创建的文件
4、在客户端B 删除客户端A 创建的文件
加入开机自启动
如果是 CentOS 7 环境,那么必须保证 /etc/rc.d/rc.local 文件具有可执行权限,否则该脚本不会执行也不会生效。
开机自启动方式1
[root@web01 mnt]$ ll /etc/rc.local
lrwxrwxrwx. root root Nov /etc/rc.local -> rc.d/rc.local
[root@web01 mnt]# tail - /etc/rc.local # mount nfs
mount -t nfs 172.16.1.31:/data /mnt
开机自启动方式2
[root@web01 mnt]$ cat /etc/fstab
# 添加如下信息
172.16.1.31:/data /mnt nfs defaults
存在问题
加入了开机自启动,当重启 NFS 客户端机器时,如果此时 NFS 服务端机器已关机,或者网络存在问题等等。使 NFS 客户端连接 NFS 服务端失败,那么此时会造成 NFS 客户端机器起不来的情况。
因此为了避免该情况发生,不建议机器开机自启动就挂载 NFS。
如果一台机器必须挂载 NFS,那么我们就做好监控。当该机器未挂载 NFS 时就告警给我们,然后我们去手动挂载。
当然如果实际环境中你们的 NFS 服务极其稳定,且几乎不再改变 NFS 服务端地址,那么此时你也可以加入开机自启动。
这些都是根据实际具体情况具体分析的。
如果觉得不错就点个赞呗 (-^O^-) !
———END———-

NFS服务搭建与配置的更多相关文章
- syslog-ng日志收集分析服务搭建及配置
syslog-ng日志收集分析服务搭建及配置:1.网上下载eventlog_0.2.12.tar.gz.libol-0.3.18.tar.gz.syslog-ng_3.3.5.tar.gz三个软件: ...
- NFS相关、NFS服务端安装配置、exportfs命令、nfs客户端的问题
1.NFS (network file system,基于RPC协议) 2.NFS服务端安装配置安装服务端:yum install nfs-utils rpcbind -y安装客户端:yum inst ...
- NFS介绍 NFS服务端安装配置 NFS配置选项
NFS 介绍 • NFS是Network File System的缩写 • NFS最早由Sun公司开发,分2,,4三个版本,2和3由Sun起草开发,.0开始Netapp公司参与并主导开发,最新为4.1 ...
- CentOS7下NFS服务安装及配置固定端口
CentOS7下NFS服务安装及配置 系统环境:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64 软件版本:nfs-utils-1. ...
- Linux centosVMware NFS介绍、NFS服务端安装配置、NFS配置选项
一.NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版 ...
- Linux下网络文件系统NFS服务搭建易错点总结
一.环境准备: 1 [root@czh ~]# cat /etc/redhat-release 2 CentOS release 6.7 (Final) 3 [root@czh ~]# uname - ...
- Llinux,NFS服务搭建(文件共享)
NFS配置文件权限参数说明(/etc/exports) 1.rw :表示可读写权限. 2.ro :表示只读权限. 3.sync :请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回.( ...
- NFS服务安装及配置
服务器环境:CentOS6.9 Linux 2.6.32-696.el6.x86_64 安装NFS服务 nfs客户端和服务端都只需要安装nfs-utils包即可,并且yum安装时会连带安装rpcbi ...
- linux服务搭建----NFS服务搭建
nfs 服务 //配置脚本 /etc/exports //服务器 发布目录 1> 确定需要发布的目录(想要共享的目录) 例如: 想发 ...
随机推荐
- 树莓派+tomcat+mysql安装及配置
0x00 系统:ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi 该版本中apt源在国内访问速度不算慢,可以不换,但软件包不完整,建议添加阿里云源 deb ...
- 用pip安装python库下载timeout的解决办法
我们直接用命令:pip install 库名,因网络太慢,导致下载超时~~~ 针对在安装Python库出现的超时问题---总结了如下两种解决方案: 其一:pip --default-timeout=1 ...
- 大数据技术之_08_Hive学习_04_压缩和存储(Hive高级)+ 企业级调优(Hive优化)
第8章 压缩和存储(Hive高级)8.1 Hadoop源码编译支持Snappy压缩8.1.1 资源准备8.1.2 jar包安装8.1.3 编译源码8.2 Hadoop压缩配置8.2.1 MR支持的压缩 ...
- Java Generator
以前我以为只有Python才会有generator,看来当时的我才年轻,后来认真研读<Thinking in Java>之后大有感悟,原来Java亦有generator,故做一次记录分享. ...
- Git Extensions system.invalidoperationexception尚未提供文件名,因此无法启动进程
根据别人的博客按照步骤安装,地址如下:http://www.cnblogs.com/sorex/archive/2011/08/10/2132359.html 但是安装Git Extensions后生 ...
- Java并发编程:什么是CAS?这回总算知道了
无锁的思想 众所周知,Java中对并发控制的最常见方法就是锁,锁能保证同一时刻只能有一个线程访问临界区的资源,从而实现线程安全.然而,锁虽然有效,但采用的是一种悲观的策略.它假设每一次对临界区资源的访 ...
- ajax提交form表单问题
form表单提交数据可以省下大量大量获取元素的代码,局部刷新时也可以用ajax提交form表单,但是要先把表单序列化,再把后台javaBean对象序列化,但是你有可能前后台都执行了系列化,但是后台还是 ...
- 从零开始学习html(七)CSS样式基本知识
一.内联式css样式,直接写在现有的HTML标签中 <!DOCTYPE HTML> <html> <head> <meta http-equiv=" ...
- Salesforce自定义权限简介
自定义权限(Custom Permission) Salesforce默认提供了多种方式设定用户的权限,比如简档.权限集等.在这些设定中,已经包括了系统中的对象.应用.字段.页面布局等组件,管理员或开 ...
- SQLServer Management Studio登录框中的“服务器名”填写
SQL Server Management Studio登录框中的“服务器名”填写 by:授客 QQ:1033553122 打开MSSQL Management Studio,如图,登录框中怎么填写? ...