设为首页 收藏本站
查看: 766|回复: 0

[经验分享] NFS详细配置过程

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-30 08:33:30 | 显示全部楼层 |阅读模式
     在公司主要是需求是共享服务,但是没有多余的服务器来做共享平台,现在利用一台测试机来做NFS服务器,充分利用服务器的磁盘资源       O(∩_∩)O哈哈~      在公司安装成功后,回家后,参考博友的自己也来写一个详细的安装过程。方便以后温故。

为什么要用NFS
  NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
   NFS最早是由Sun公司发展出来的,
  简单的来说:它就是是可以透过网络,让不同的主机、不同的操作系统可以共享存储。
以下是NFS最显而易见的好处:
  1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
  2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
  3. 一些存储设备CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
  NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
  NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
一、准备阶段:(客户端和服务端)

[iyunv@NFS-server ~]# cat /etc/redhat-release #查看系统版本CentOS release 6.8 (Final)[iyunv@NFS-server ~]# uname -r #查看系统内核版本2.6.32-642.11.1.el6.x86_64[iyunv@NFS-server ~]# uname -m #查看系统是否64位x86_64
二、NFS服务端所需的软件列表
nfs-utils: 这个是NFS服务主程序(包含rpc.nfsd、rpc.mountd、daemons)
rpcbind: 这个是CentOS6.X的RPC主程序(CentOS5.X的为portmap)
三、检查软件是否安装
[iyunv@NFS-server ~]# rpm -qa nfs-utils rpcbind #检查安装的软件包rpcbind-0.2.0-12.el6.x86_64nfs-utils-1.2.3-70.el6_8.2.x86_64<如果没有安装在系统中通过yum 命令进行安装以上两个包>
[iyunv@NFS-server ~]# yum install -y nfs-utils rpcbind #安装上述所需的两个软件包四、启动NFS服务端相关服务
---开启rpcbind服务
[iyunv@NFS-server ~]# /etc/init.d/rpcbind status  #查询rpcbind服务状态并启动rpcbind (pid 1281) is running...[iyunv@NFS-server ~]# LANG=en[iyunv@NFS-server ~]# lsof -i :111  #查询rpcbind监听状态 (111是rpcbind的主端口)COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMErpcbind 1281 rpc 6u IPv4 10766 0t0 UDP *:sunrpcrpcbind 1281 rpc 8u IPv4 10769 0t0 TCP *:sunrpc (LISTEN)rpcbind 1281 rpc 9u IPv6 10771 0t0 UDP *:sunrpcrpcbind 1281 rpc 11u IPv6 10774 0t0 TCP *:sunrpc (LISTEN)[iyunv@NFS-server ~]# netstat -lntup |grep rpcbind #查询rpcbind服务启动状态 (同lsof查询端口效果一样)tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1281/rpcbindtcp 0 0 :::111 :::* LISTEN 1281/rpcbindudp 0 0 0.0.0.0:608 0.0.0.0:* 1281/rpcbindudp 0 0 0.0.0.0:111 0.0.0.0:* 1281/rpcbindudp 0 0 :::608 :::* 1281/rpcbindudp 0 0 :::111 :::* 1281/rpcbind[iyunv@NFS-server ~]# chkconfig --list rpcbind #检查rpcbind自启动情况rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
1
root@NFS-server ~]# rpcinfo -p localhost #查看NFS服务项rpc服务器注册的端口信
986848-20161126224441143-164142395.jpg
<这个是还未启动FNS服务的rpcbind状态>
---启动NFS服务
[iyunv@NFS-server ~]# /etc/init.d/nfs status #查看NFS服务并启动rpc.svcgssd is stoppedrpc.mountd (pid 1526) is running...nfsd (pid 1542 1541 1540 1539 1538 1537 1536 1535) is running...rpc.rquotad (pid 1521) is running...[iyunv@NFS-server ~]# netstat -lntup|grep nfs #查看NFS端口启动(FNS默认端口为2049)[iyunv@NFS-server ~]# lsof -i :2049 #查看NFS端口启动(FNS默认端口为2049)[iyunv@NFS-server ~]# netstat -lntup|grep 2049 #查看NFS端口启动(FNS默认端口为2049)tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -tcp 0 0 :::2049 :::* LISTEN -udp 0 0 0.0.0.0:2049 0.0.0.0:* -udp 0 0 :::2049 :::* -[iyunv@NFS-server ~]# rpcinfo -p localhost #启动NFS过后rpcbind服务已经启用了对FNS的端口映射 986848-20161126224315940-1809764269.jpg
<这个是启动FNS服务过后 的rpcbind的状态>
[iyunv@NFS-server ~]# chkconfig --list nfs  #查看nfs的开机自启动情况nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off[iyunv@NFS-server ~]# chkconfig nfs on #让FNS开机自启动由于在FNS服务过程中,必须先启动rpcbind,再启动nfs,这样才能让NFS在rpcbind上注册成功
[iyunv@NFS-server ~]# less /etc/init.d/rpcbind  #查看rpcbind服务启动详情 986848-20161126224555159-1562993864.jpg
同理我们查看nfs服务的自启动详情
[iyunv@NFS-server ~]# less /etc/init.d/nfs 986848-20161126224625237-989426736.jpg
<由上面可以看出系统默认会让rpcbind服务先启动,再启动nfs服务,但是在实际生产环境中,我们最好不要用chkconfig来控制服务的开机自启动,我们生产环境中我们一般用rc.local来管理。主要是为了方便以后查阅哪些服务开机自己,并且能控制先后顺序,如图>
<为了规范化我们用rc.local来管理开机自启动>
[iyunv@NFS-server ~]# vi /etc/rc.local 986848-20161126224643596-1663100751.jpg
NFS服务常见进程的详细说明
我们可以重NFS服务的启动过程看到以下几个进程:
986848-20161126224703050-392902948.jpg
[iyunv@NFS-server ~]# ps -ef |egrep "rpc|nfs" #查看nfs相进程rpcuser 1303 1 0 Nov22 ? 00:00:00 rpc.statd  #检查文件一致性root 1512 2 0 Nov22 ? 00:00:00 [rpciod/0]rpc 2723 1 0 02:43 ? 00:00:00 rpcbindroot 2896 1 0 02:56 ? 00:00:00 rpc.rquotad  #磁盘配额进程root 2901 1 0 02:56 ? 00:00:00 rpc.mountd #权限管理验证等root 2908 2 0 02:56 ? 00:00:00 [nfsd4]root 2909 2 0 02:56 ? 00:00:00 [nfsd4_callbacks]root 2910 2 0 02:56 ? 00:00:00 [nfsd]root 2911 2 0 02:56 ? 00:00:00 [nfsd]root 2912 2 0 02:56 ? 00:00:00 [nfsd]root 2913 2 0 02:56 ? 00:00:00 [nfsd] #NFS主进程,管理登入,身份判定root 2914 2 0 02:56 ? 00:00:00 [nfsd]root 2915 2 0 02:56 ? 00:00:00 [nfsd]root 2916 2 0 02:56 ? 00:00:00 [nfsd]root 2917 2 0 02:56 ? 00:00:00 [nfsd]root 2948 1 0 02:56 ? 00:00:00 rpc.idmapd  #名称映射<如果对上述进程不明白可以 用man命令查阅帮助信息,如 “man rpc.statd”>
五、配置NFS服务端
前面介绍了NFS的启动,接下来我们配置NFS服务端的配置
/etc/exports 是NFS程序的配置文件。并且默认为空
/etc/exports文件的配置格式为:
NFS共享目录 NFS客户端地址1(参数1,参数2,参数3......) 客户端地址2(参数1,参数2,参数3......)
NFS共享目录 NFS客户端地址(参数1,参数2,参数3......)
986848-20161126224724487-467363803.jpg
<我们在此共享给 192.168.1.0/24所有主机,>
<man exports 查看 例子和参数详情。如下:>
986848-20161126224738175-417538432.jpg
配置完成exports后平滑重启NFS服务 ,下面两条命令等同
[iyunv@NFS-server ~]# /etc/init.d/nfs reload[iyunv@NFS-server ~]# exportfs -r[iyunv@NFS-server ~]# showmount -e 127.0.0.1 #查看本机挂载情况<必须先启动rpcbinc 再启动nfs才会显示正确>
986848-20161126224835206-224243257.jpg
[iyunv@NFS-server ~]# mount -t nfs 192.168.1.5:/data /mnt #在本机测试挂载 986848-20161126224913534-1073828712.jpg
<我们用客户机器进行挂载并测试>
<挂在过后由于权限问题,我们不能再/mnt里面进行编辑删除新增文件等操作。接下来为/data目录进行权限的设置>
六、配置NFS客户端
客户端也需要安装rpcbind和nfs-utils软件,并且设置开机自启动。(只需要启动rpcbind即可)
然后再进行如下操作
986848-20161126224934518-253203039.jpg
<自此,我们配置成功,但是别高兴。我们只是挂载动作完成了,但是我们没有权限对挂载的目录进行各种操作。>
接下来我们在服务端配置如下命令,给/data目录添加nfsnobody权限,
986848-20161126224949846-277755994.jpg
[iyunv@NFS-server ~]# cat /var/lib/nfs/etab  #查看一条配置的详细信息 986848-20161126225010675-1803912564.jpg
现在我们可以对挂载目录进行各种操作,但是还没有完。我们需要把挂载命令放在rc.local里面,
我们不要把挂载命令放在fstab,因为fstab比网络先启动,会出现挂载不上网络NFS
-------------------------------------------------------------------------------------------------------
WINDOWS客户端的配置
现在我们客户端和服务端的NFS配置都已经完成,多台客户端同上的客户端操作,
如果是WINDOWS客户端,我们需要在程序和功能里面启用 NFS客户端。
986848-20161126225115050-2055018922.jpg

Windows 7 连接 NFS Server:
控制面板——所有控制面板项——程序和功能——勾选NFS服务,NFS客户端
CMD 进入命令行
mount ip:/www/abc/ z:

其它不支持直接连接NFS Server的windows,可以在系统上面安装SFU (Windows Services for UNIX),点开始–>点程序–>点Windows Services for UNIX–>Korn Shell
mount ip:/www/abc/ z:
------------------------------------------------------------------------------------------------------
总结NFS服务的配置过程:
--服务端--
1.安装软件
yum install -y nfs-utils rpcbind
2.启动服务(先启动rpcbind)
/etc/init.d/rpcbind start
/etc/init.d/nfs start
3.设置开机自启动
chkconfig nfs on
chkconfig rpcbind on
修改rc.local
4.配置NFS服务
echo "/data 192.168.1.5/24(rw,sync)"
mkdir -p /data
chown -R nfsnobody.nfsnobody /data
5.重新加载服务
/etc/init.d/nfs reload 或者 exportfs -r
6.检查或测试挂载
showmount -e localhost
mount -t nfs 192.168.1.5:/data /mnt

--客户端-
1.安装软件
yum install -y nfs-utils rpcbind
2.启动rpcbind
/etc/init.d/rpcbind start
3.配置开机自启动
chkconfig rpcbind on
或者修改rc.local
4.测试服务端共享情况
show -e 192.168.1.5
5.挂载
mkdir -p /data
mount -t nfs 192.168.1.5:/data /data
6.测试是否有读写权限
-----------------------------------------------------------------------------------------------
常见错误
1.df -h 检查服务端的NFS服务是不是启动成功,
2.确认NFS客户端showmount是否OK。
3.确认rpcbind上是否有NFS注册,(rpcbind必须先启动)
3.确认网络是否通畅
4.确认是否因为防火墙挡住(一般内网不需要开启防火墙,在出口加防火墙就够了)
-----------------------------------------------------------------------------------------
后续会对NFS各种优化的内容进行更新





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-307410-1-1.html 上篇帖子: CentOS中eth0问题,复制或者克隆虚拟机后eth0变成eth1 下篇帖子: Ubuntu14.04 quota问题解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表