安装配置NFS服务和挂载(Centos7)

NFS简介

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

RPC(NFS服务需要依赖RPC服务,这个比较重要) 要想了解NFS,必然要提到RPC这个服务。 因为NFS支持的功能还是比较多的,并且不同的功能都会使用不同的程序来启动。每启动一个功能就会启用一些端口来传输数据,因此NFS的功能所对应的端口才没有固定,而是采用随机取用一些未被使用的小于1024的端口来作为传输之用。但如此一来又造成客户端要连接服务器时的困扰,因为客户端要知道服务器端的相关端口才能够联机,此时我们需要远程过程调用(RPC)的服务。 RPC最主要的功能就是指定每个NFS功能所对应的端口号,并且回报给客户端,让客户端可以连接到正确的端口上。当服务器在启动NFS时会随机选用数个端口,并主动地向RPC注册。因此RPC可以知道每个端口对应的NFS功能。然后RPC固定使用端口111来监听客户端的请求并回报客户端正确的端口,所以可以让NFS的启动更为容易。 注意,启动NFS之前,要先启动RPC服务;否则NFS无法向RPC注册。另外,重新启动RPC时原本注册的数据会不见,因此RPC重新启动后它管理的所有程序都需要重新启动以重新向RPC注册,比如NFS服务。

当客户端有NFS文件要存取请求时,它向服务器端访问数据,有如下几个步骤: (1)客户端会向服务器端的RPC(port 111)发出NFS文件存取功能的询问请求。 (2)服务器端找到对应的已注册的NFS daemon端口后会回报给客户端。 (3)客户端了解正确的端口后,就可以直接与NFS守护进程来联机,然后访问数据。

其实,我们可以简单的理解为:NFS当作RPC服务中的一种,同时将RPC服务当作NFS服务器与NFS客户端的中间接口人,就是说NFS客户端访问NFS服务器,必须经过RPC这个接口人,才可以去访问,否则就直接死翘翘了。

注:NFS使用TCP/IP提供的协议和服务,并且位于OSI模型中的应用层,具体如下:

层数 名称 功能
1 应用层 NFS
2 表示层 XDR
3 会话层 RPC
4 传输层 UDP,TCP
5 网络层 IP
6 数据链路层
7 物理层 Ethernet

安装NFS

方法1:

检查:rpm -qa nfs-utils rpcbind 最佳
yum install nfs-utils rpcbind -y

方法2: LANG = en

yum grouplist | grep -i nfs
yum groupinstall “NFS file server ” -y

启动 rpcbind (centos 6.8)

/etc/init.d/rpcbind status
/etc/init.d/rpcbind start

启动 rpcbind (centos 7)

systemctl start rpcbind.service
systemctl status rpcbind.service

查看rpcbind 端口

netstat -lntup | grep rpcbind 默认端口 111
netstat -lntup | grep 111
rpcinfo -p localhost 查看rpclist

配置nfs配置文件(/etc/exports ] 默认是空的)

vim /etc/exports
示例:
/data 168.1.1.1(rw,sync,all_squash)
/data 168.1.1.*(rw,sync,all_squash)
sync:写入磁盘

使配置生效


exportfs -r

注:配置文件说明:

/opt/test 为共享目录

192.168.1.0/24 可以为一个网段,一个IP,也可以是域名,域名支持通配符 如: *.qq.com

rw:read-write,可读写;

ro:read-only,只读;

sync:文件同时写入硬盘和内存;

async:文件暂存于内存,而不是直接写入内存;

no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。

root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;

all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;

anonuid:匿名用户的UID值,可以在此处自行设定。

anongid:匿名用户的GID值。

  •  查看有什么启动命令 /etc/init.d/nfs 会输出命令集合
  •  showmount -e 127.0.0.1 查看挂载的目录

关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

客户端需要启动 rpc

客户端也需要安装rpcbind, 建议nfs一起安装,便于使用showmount命令

centos6.8 /etc/init.d/rpcbind start
centos7 systemctl start rpcbind.service

或者将启动命令放入 /etc/rc.local 或者 使用 echo “/etc/init.d/rpcbind start” >> /etc/rc.local

客户端挂载目录 mount -t nfs 10.0.0.7:/data /mnt
echo “/bin/mount -t nfs 10.0..0.1:/data /mnt” >> /etc/rc.local

nfs不能向服务端写数据,是权限的问题

cat /var/lib/nfs/etab

/script 192.168.42.*(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)

/data 192.168.42.*(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)

[root@nfs-1 data]# grep 65534 /etc/passwd nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

chown -R nfsnobody /data

原创文章,作者:srayban,如若转载,请注明出处:http://www.178linux.com/73581

(5)
sraybansrayban
上一篇 2017-04-20
下一篇 2017-04-21

相关推荐

  • N22-妙手 第4天视频课程练习

    一、Globbing文件名通配练习 练习1:显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现任意一位字符的目录 [root@localhost ~]# ls -d /var/l?[[:lower:]] /var/lib  /var/log 练习2:显示/etc目录下,以任意一位数字开头…

    Linux干货 2016-08-22
  • Linux各发行版、哲学思想、基础目录

    Linux发行版本? Linux操作系统的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。               R…

    Linux干货 2016-10-26
  • LAMP平台基于NFS实现web服务器负载均衡

    前言 随着访问量的逐渐增大,一台web服务器可能已经无法满足需求,这就需要增加web服务器的数量了,于是问题就来了:如何保证两台服务器数据同步呢?本文将讲解如何基于NFS实现web服务器的负载均衡及数据同步。 NFS服务介绍 NFS(Network File System)网络文件系统,允许一个系统通过网络共享目录和文件,通过使用NFS,用户和程序可以像访问…

    Linux干货 2015-04-22
  • Zabbix通过邮件报警

                    Zabbix通过邮件报警 前言 本篇文章转自我的个人博客 http://anyisalin.com 欢迎大家访问 这次的内容大部分都是操作, 但是大家需要对定…

    2016-05-13
  • LVM逻辑卷管理

    为什么要用LVM?     想象一个示例,如果我们给定的分区是50G,过段时间发现空间不够用,此时我们就要重新加一块新硬盘,重新分区格式化,将原来分区上的数据复制过来,再重新挂载,整个过程会非常麻烦,LVM可以很有效的解决这个问题 LVM简介     及逻辑卷(Logical V…

    Linux干货 2016-09-01
  • TCP和ARP

    TCP是一个工作在传输层,面向连接的协议,一台计算机与另一台计算机通信就需要TCP协议,当然还有一个和它并列的一个协议可以使用,只是TCP更加稳定且常用. 上图为一台计算机与另一台计算机建立通讯的过程,它实际通信中传递的不止斜线上的信息.上面的SYN是同步号, ACK为确认号.seq为序列号,ack为辅助的确认号 上面为建立通信时发送的TCP信息详细结构,i…

    Linux干货 2017-11-29

评论列表(1条)

  • renjin
    renjin 2017-04-21 09:54

    对NFS网络文件系统进行了详细的介绍,内容总结的很详细,建议把最近学过的内容也总结到博客中来,把代码块放入到”插入程序代码”中去