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> 确定需要发布的目录(想要共享的目录) 例如: 想发 ...
随机推荐
- Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析
前言 前些天,测试MM发现了一个比较奇怪的bug. 具体表现是: 1.将app包通过电脑QQ传送到手机QQ上面,点击安装,安装后选择打开app (此间的应用逻辑应该是要触发 [闪屏页Activity] ...
- js精度溢出解决方案
一般参数值不能超过16位.如果超出16都是用0替代,导致我们查询不到自己想要的结果. 遇到此问题我们做如下修改 自己写属性 原始的: <a href="javascript:void( ...
- react 字符串强转为html标签
react中,富文本编辑 从数据库取出来 是带标签的 字符串,需要强转为 节点 <div dangerouslySetInnerHTML={{ __html: this.state.obj.ht ...
- SQL 必知必会·笔记<19>使用游标
游标(cursor)是一个存储在DBMS服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集.在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据. 使用游标 使用游标 ...
- mysql创建表时,设置timestamp DEFAULT NULL报错1067 - Invalid default value for 'updated_at'
问题背景: 线上的linux服务器上的mysql服务器中导出数据库的结构.想要在本地创建一个测试版本 导出后再本地mysql上运行却报错 1067 - Invalid default value ...
- xshell远程终端操作Ubuntu server安装LAMP环境之最详细笔记之二PHP开发环境配置
前言: 昨天学会了安装server,今天试着通过远程终端xshell来安装LAMP,搭配一下开发环境,也有集成环境可以一键安装使用,还是瞎折腾一下,手动一步一步搭建一下这个开发环境. 接上一篇:ubu ...
- ssh采用expect实现自动输入密码登录、拷贝
1. 引言 最近做了一个项目,需要频繁与另一台主机进行文件的传输:中间想到了很多方式:FTP.samba.curl等,但是还是感觉scp最好用. SCP使用教程可参阅:http://www.jb51. ...
- 如何将自定义的搜索参数便捷的添加到js方式的bootstrap table的参数中
页面: <div> <form id="exp_form"> 查询参数... <button type="button" oncl ...
- php5.5之后新特性整理
1 生成器 yield关键字yield的中文文档在这里:http://php.net/manual/zh/language.generators.overview.php查看文档,能知道yield的一 ...
- Swagger2限定接口范围
前面在使用Swagger2时遇到的坑中简单介绍了Swagger的使用. 不过默认情况下,Swagger2会把项目中的所有接口都展示在列表里,特别是你用了Springboot/SpringCloud之后 ...