NFS网络文件系统介绍及安装使用

一、NFS简介: 最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案 (share files)。所以,你也可以简单的将他看做是一个文件服务器 (file server) 呢!这个 NFS 服务器可以让你的 PC 来将网络远程的 NFS 服务器分享的目录,挂载到本地端的机器当中, 在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘分区槽一样 (partition)!使用上面相当的便利   注意:要启动 NFS 之前,RPC 就要先启动了,否则 NFS 会无法向 RPC 注册。另外,RPC 若重新启动时,原本注册的数据会不见,因此 RPC 重新启动后,它管理的所有服务都需要重新启动来重新向 RPC 注册。 当客户端有 NFS 档案存取需求时,他会如何向服务器端要求数据呢?

  • 客户端会向服务器端的 RPC (port 111) 发出 NFS 档案存取功能的询问要求;
  • 服务器端找到对应的已注册的 NFS daemon 埠口后,会回报给客户端;
  • 客户端了解正确的端口后,就可以直接与 NFS daemon 来联机。

由于 NFS 的各项功能都必须要向 RPC 来注册,如此一来 RPC 才能了解 NFS 这个服务的各项功能之 port number, PID, NFS 在服务器所监听的 IP 等等,而客户端才能够透过 RPC 的询问找到正确对应的埠口。也就是说,NFS 必须要有 RPC 存在时才能成功的提供服务,因此我们称 NFS 为 RPC server 的一种。事实上,有很多这样的服务器都是向 RPC 注册的,举例来说,NIS (Network Information Service) 也是 RPC server 的一种   二、为什么要用NFS(重要) 在没有NFS共享存储时,用户数据会被存储到一台web服务器上,其他web服务器需要同步数据,实现web服务上数据一致性   三、所需要的软件及软件结构 要设定好 NFS 服务器我们必须要有两个软件才行,分别是:RPC和NFS 1、RPC 主程序:rpcbind 如同刚刚提的到,我们的 NFS 其实可以被视为一个 RPC 服务,而要启动任何一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行!(在 CentOS 5.x 以前这个软件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!) 2、NFS 主程序:nfs-utils 就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件 环境说明: 服务端:192.168.1.200 客户端:192.168.1.201 两台机器都是centos7.6  64位,并且关闭了防火墙

[root@localhost src]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)
[root@localhost src]# uname -r
4.4.190-1.el7.elrepo.x86_64

查看是否已安装软件包。服务器和客户端至少都要rpcbind

rpm -qa nfs-utils  portmap  rpcbind

一、服务端安装配置NFS 注意:必须先启动rpcbind才能启动nfs服务,因为启动服务 nfs 需要向 rpc 注册,rpc 一旦重启了,注册的文件都会丢失,向他注册的服务都需要重启 1、服务端安装rpcbind:

yum -y install nfs-utils rpcbind
#服务端可以先启动 rpcbind
systemctl start rpcbind
systemctl enable rpcbind
systemctl status rpcbind

2、服务端安装nfs:

rpcinfo -p localhost   # 查看对外的port是什么 默认111端口
systemctl start nfs     # 启动NFS服务,向RPC服务汇报端口,这时候RPC服务多了很多端口
systemctl enable nfs
systemctl status nfs

3、服务端新建共享目录并设置权限: 新建共享目录/data并设置共享目录设置权限,如果不新建,exports中又写了这个目录会报错提示没这个目录

mkdir /data
chmod 755 /data

4、配置 nfs nfs 的默认配置文件在 /etc/exports 文件下,该文件默认是空的。在该文件中添加下面的配置信息

vim /etc/exports
#shared data for allen at 2018-05-26
/data 192.168.0.0/16(rw,sync,no_root_squash)   #IP一般是共享的一个网段或者也可以给某一个固定的客户端IP

配置说明:

  • /data:是共享的数据目录
  • 192.168.0.0/16:如果用*号,则表示任何人都有权限连接,当然也可以是一个网段,一个 IP,也可以是域名
  • rw:读写的权限
  • sync:表示文件同时写入硬盘和内存
  • no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为匿名使用者,通常它的 UID 与 GID,都会变成 nobody 身份

写完配置文件,平滑重载nfs服务,注意别用restart 

systemctl reload nfs

自身检查是否可以共享:

[root@localhost src]# showmount -e localhost
clnt_create: RPC: Program not registered

出以上的报错或者有时候 从客户端访问服务器报错,提示:clnt_create: RPC: Program not registered 解决办法: 在服务器上先停止rpcbind

systemctl stop rpcbind

然后再停止nfs

systemctl stop  nfs

最后再重启rpcbind和nfs,一定要按顺序启动和停止

systemctl start rpcbind
systemctl start nfs

做完这个操作之后,访问成功 再次检查一下:

[root@localhost src]# showmount -e localhost
Export list for localhost:
/data 192.168.0.0/16

表示/data目录已经成功共享出来了 查看注册信息:

[root@localhost nfs]# rpcinfo -p 192.168.1.200
   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

去客户端检查,客户端检查的时候要用服务端的ip地址而不是localhost

showmount -e 192.168.1.200

如果这一步没有出来就无法挂载,但本地ok,就是在客户端检查不行 怎么排查? 1、首先ping 服务端是否网络连通 2、telnet  rpc服务的端口 111  看是否可以telnet 一般这两个都没问题那就是没问题的   二、客户端安装NFS: 1、检查是否已经安装

[root@localhost php-5.6.31]# rpm -qa | egrep "rpcbind|nfs-utils"
rpcbind-0.2.0-13.el6_9.1.x86_64
nfs-utils-1.2.3-75.el6_9.x86_64
nfs-utils-lib-1.1.5-13.el6.x86_64

2、安装

yum -y install rpcbind nfs-utils

3、客户端上查看注册信息:

[root@localhost ~]# rpcinfo -p 192.168.1.200
   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

4、在客户端进行挂载:

mount -t nfs 192.168.1.200:/data /mnt

5、nfs开机自动挂载设置:

vim /etc/fstab  # 添加如下命令参数
192.168.1.200:/data      /data      nfs  defaults  0  0

用df -Th 查看是否挂载上。出现以下情况表示已经挂载上

192.168.2.200:/data   48G  5.1G   43G  11% /data/

6、去服务端/data目录生成文件,并去客户端/data目录查看 1、服务端创建目录:allenjol

[root@k8s-node02 k8s]# pwd
/data
[root@k8s-node02 k8s]# mkdir allenjol
[root@k8s-node02 k8s]# ll
total 0
drwxr-xr-x 2 root root 6 Mar 11 13:49 allenjol

2、客户端查看目录是否生成

[root@k8s-master ~]# cd /data
[root@k8s-master k8s]# ll
total 0
drwxr-xr-x 2 root root 6 Mar 11 13:49 allenjol

如上表示NFS安装完成! ********************************  ********************************

博客地址:https://www.ayunw.cn

公众号:竹下侯小姜运维

版权声明:
作者:allenjol
链接:https://www.ayunw.cn/archives/745
来源:爱生活,爱运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>