搭建NFS文件共享系统

1、概述:

NFS(Network File System)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享彼此的文件。简单的讲就是可以挂载远程主机的共享目录到本地,就像操作本地磁盘一样,非常方便的操作远程文件。本文将给大家讲解怎么在 CentOS 7上安装和配置 NFS 服务器

1.1 准备

条件有限,我们用 虚拟机做测试,分别做 NFS 服务器客户端,配置如下:

VMware16.0

Centos 虚拟机两台

NFS 服务器 ip :192.168.0.77。

客户端ip:192.168.0.83。

我们要实现的目标是:在 NFS 服务器上共享一个目录,在客户端上可以直接操作 NFS 服务器上的这个共享目录下的文件。

2、NFS服务器配置

2.1 安装NFS服务

首先使用yum安装nfs服务:

yum -y install rpcbind nfs-utils

2.1.1 创建共享目录

服务器上创建共享目录,并设置权限。

mkdir /data/share/

chmod 755 -R /data/share/

2.2 配置NFS

nfs的配置文件是 /etc/exportsvim /etc/exports后在配置文件中加入一行:

/data/share/ 192.168.0.83/22(rw,no_root_squash,no_all_squash,sync)

这行代码的意思是把共享目录 /data/share/共享给 192.168.0.83这个客户端

注:客户端ip后需加上端口号,否则无法操作

ip后面括号里的内容是权限参数,其中:

rw 表示设置目录可读写。

sync 表示数据会同步写入到内存和硬盘中,相反 rsync 表示数据会先暂存于内存中,而非直接写入到硬盘中。

no_ root _squash NFS客户端连接服务端时如果使用的是 root的话,那么对服务端分享的目录来说,也拥有 root权限。

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

如果有多个共享目录配置,则使用多行,一行一个配置。保存好配置文件后,需要执行以下命令使配置立即生效:

exportfs -r

2.3 设置防火墙

如果你的系统没有开启防火墙,那么此步骤可以省略。

NFS的防火墙除了固定的port111、2049外,还有其他服务如 rpc.mounted等开启的不固定的端口,因此我们需要设置NFS服务的端口配置文件。

vi /etc/sysconfig/nfs文件,将下列内容的注释去掉,如果没有则添加:

RQUOTAD_PORT=1001

LOCKD_TCPPORT=30001

LOCKD_UDPPORT=30002

MOUNTD_PORT=1002

保存好后,将端口加入到防火墙允许策略中。执行:

firewall-cmd –zone=public –add-port=111/tcp –add-port=111/udp –add-port=2049/tcp –add-port=2049/udp –add-port=1001/tcp –add-port=1001/udp –add-port=1002/tcp –add-port=1002/udp –add-port=30001/tcp –add-port=30002/udp –permanent

firewall-cmd –reload

注:若只为测试操作,也可直接关闭防火墙

#sudo systemctl status firewalld 。 //查看防火墙状态

查看后,看到active(running)就意味着防火墙打开了。

#sudo systemctl stop firewalld//关闭防火墙

关闭后再查看是否关闭成功,如果看到 inactive(dead) 就意味着防火墙关闭了。

实际生产中不建议这么做

2.4 启动服务

按顺序启动rpcbind和nfs服务:(此顺序不能颠倒,否则后续会报错)

systemctl start rpcbind

systemctl start nfs (centos7)

systemctl start nfs-server (centos8)

加入开机启动:

systemctl enable rpcbind

systemctl enable nfs (centos7)

systemctl enable nfs-server (centos8)

nfs服务启动后,可以使用命令 rpcinfo -p 查看端口是否生效。

我们可以使用 showmount 命令来查看服务端(本机)是否可连接:

[root@localhost ~]# showmount -e localhost

Export list for localhost:

/data/share 192.168.0.83/22

出现上面结果表明NFS服务端配置正常。

3、客户端配置

3.1 安装rpcbind服务

客户端只需要安装 rpcbind服务即可,一般无需安装nfs或开启nfs服务。

yum -y install rpcbind

(注:若后续操作无法使用 showmount命令则此步骤建议使用命令

yum -y install rpcbind nfs-utils因为有些虚拟机可能会内置showmount命令, 同时若安装nfs,需确保与nfs服务器端版本一致

3.2 挂载远程nfs文件系统

查看服务端已共享的目录:

[root@localhost ~]# showmount -e 192.168.0.77

Export list for 192.168.0.77:

/data/share 192.168.0.83/22

建立挂载目录,执行挂载命令:

mkdir -p /mnt/share

mount -t nfs 192.168.0.77:/data/share /mnt/share/ -o nolock,nfsvers=3,vers=3

如果不加 -onolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody,如果指定nfsvers=3则显示root。

如果要解除挂载,可执行命令:

umount /mnt/share

3.3 开机自动挂载

如果按本文上面的部分配置好,NFS即部署好了,但是如果你重启客户端系统,发现不能随机器一起挂载,需要再次手动操作挂载,这样操作比较麻烦,因此我们需要设置开机自动挂载。我们不要把挂载项写到/etc/fstab文件中,因为开机时先挂载本机磁盘再启动网络,而NFS是需要网络启动后才能挂载的,所以我们把挂载命令写入到 /etc/rc.d/rc.local文件中即可。

[root@localhost ~]# vim /etc/rc.d/rc.local

# 在文件最后添加一行:

mount -t nfs 192.168.11.34:/data/share /mnt/share/ -o nolock,nfsvers=3,vers=3

保存并重启机器看看。

3.4 测试验证

查看挂载结果,在客户端输入 df -h

文件系统 容量 已用 可用 已用% 挂载点

devtmpfs 895M 0 895M 0% /dev

tmpfs 910M 0 910M 0% /dev/shm

tmpfs 910M 11M 900M 2% /run

tmpfs 910M 0 910M 0% /sys/fs/cgroup

/dev/sda3 23G 4.9G 18G 22% /

/dev/sda1 297M 163M 134M 55% /boot

tmpfs 182M 28K 182M 1% /run/user/1000

tmpfs 182M 0 182M 0% /run/user/0

192.168.0.77:/data/share 36G 22G 15G 61% /mnt/share

看到最后一行,就说明已经挂载成功了。接下来就可以在客户端上进入目录/mnt/share下,新建/删除文件,然后在服务端的目录/data/share查看是不是有效果了

搭建NFS文件共享系统

搭建NFS文件共享系统

4、错误分析:

4.1 错误一:exportfs -r时出错

exportfs: 192.168.0.252:/data/share: Function not implemented

解决:

注意在vi /etc/exports时

加入的一行配置应该包括ip地址的端口号

/data/share/ 192.168.0.252/22(rw,no_root_squash,no_all_squash,sync)
否则会报错

4.2 错误二:showmount -e localhost时报错

clnt_create: RPC: Program not registered

搭建NFS文件共享系统

原因:很可能是因为nfs未正常启动

搭建NFS文件共享系统

解决:

搭建NFS文件共享系统

搭建NFS文件共享系统

注意启动顺序

先启动rpcbind,不然无法启动nfs

4.3 错误三:在客户端测试时,发现无法使用showmount命令

搭建NFS文件共享系统

缺少showmount命令

解决:CentOS安装某个缺少的命令比如showmount,ifconfig

搭建NFS文件共享系统

搭建NFS文件共享系统

4.4 错误四:requested NFS version or transport protocol is not supported

需求的nfs版本或传输协议不支持

搭建NFS文件共享系统

分析:nfs服务器上

搭建NFS文件共享系统

客户端

搭建NFS文件共享系统

原因:之前因为服务器上没有 showmount命令,因此安装了 nfs-utils.x86_64导致服务器和客户端的nfs版本不一致

解决:先卸载客户端的nfs-utils.x86_64

搭建NFS文件共享系统

然后重新安装同一版本的nfs

解决方法:这边建议安装centos8的虚拟机,因为centos7,8的yum内核版本相差太大,直接用yum安装 yum -y install rpcbind nfs-utils

时nfs的版本相差两个等级,且无法回退版本,导致mount挂载时无法操作

4.5错误五:mount -t挂载时,显示connection refused

搭建NFS文件共享系统

解决方法:nfsvers=3,vers=3;或nfsvers=2,vers=2,

以及确定格式mount -t (nfs 服务端IP) 192.168.0.77:挂载目录是否无误

搭建NFS文件共享系统

Original: https://www.cnblogs.com/zcj-0928/p/15131779.html
Author: 相遂
Title: 搭建NFS文件共享系统

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581771/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 需求分析到软件设计复习

    什么是需求分析? 需求分析就是需求分析师对用户期望的软件行为进行表述。 谁来表述 -> 需求分析师 谁有期望-> 用户 期望什么?-> 期望的软件行为 怎样表述?…

    Linux 2023年6月8日
    0108
  • 【Linux】指令学习

    Linux学习记录 😄生命不息,写作不止🏆 一个有梦有戏的人 @怒放吧德德🌝分享学习心得,欢迎指正,大家一起学习成长! 1、虚拟机网卡配置 服务器重启完成之后,我们可以通过linu…

    Linux 2023年6月6日
    0126
  • 博客停更通知

    楼主要忙工作了,这些工具使用相关的博客我还会维护;如有不正确的地方,欢迎大家批评指正!翻了翻这几年的内容,都是一些简单记录,且作为休闲娱乐吧。 2022年04月16日 于杭州; O…

    Linux 2023年6月14日
    074
  • 红警快捷键图示

    最近,实验室的同学们 周末偶尔会玩一玩红警,回忆一下童年,挺愉快的。下面记录一下快捷键,方便操作; 看到B站上红警08,还有对应的快捷键教学视频,也可以直接学习一下; https:…

    Linux 2023年6月14日
    0132
  • Linux-shell

    shell 为注释 !执行脚本的 解释器 为bash 权限问题 remark 调试 bash -x man test 变量 —>默认必须全局变量 局部变量必须给local a…

    Linux 2023年6月7日
    085
  • Python subprocess的使用

    前言 部门内部存在大量代码使用Python去调用Shell或者JS脚本,因此重度依赖subprocess(使用Google的subprocess32),在使用subprocess的…

    Linux 2023年6月7日
    085
  • Redis阻塞操作实现原理(转)

    原文:https://www.jianshu.com/p/xsMzfn 作者:Haiger 最近一位朋友问到:既然Redis是单线程的工作模式,那像 _BLPOP_这样的阻塞操作又…

    Linux 2023年5月28日
    0103
  • Linux 0.11源码阅读笔记-文件管理

    Linux 0.11源码阅读笔记-文件管理 文件系统 生磁盘 未安装文件系统的磁盘称之为生磁盘,生磁盘也可以作为文件读写,linux中一切皆文件。 磁盘分区 生磁盘可以被分区,分区…

    Linux 2023年5月27日
    099
  • jQuery 遍历

    下图展示了一个家族树。通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行…

    Linux 2023年6月13日
    091
  • 浪剑天下H5游戏详细图文架设教程

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    097
  • 安卓加固方案从落地加载到类指令抽取编写报告

    一、前言以及环境配置 PS:突然想起来好久没在看雪发过啦,这次就同步一下吧!!! PS:该文已经首发于某公众号,介意者勿喷!!! 安卓的加固方案是从19年底开始写的,到现在为止差不…

    Linux 2023年6月8日
    0109
  • Jenkins初始化界面一直显示Please wait while Jenkins is getting ready to work …

    第一次访问 jenkins时,会提示如下界面: 注:如果这个界面初始化的时间过长,则需要修改相关配置文件。 原因:因为访问官网太慢。我们只需要换一个源,不使用官网的源即可。 1、找…

    Linux 2023年6月13日
    0101
  • Linux进度条制作

    进度条 先了解一下/r 的用法 /r 讲光标回到当前行的最开始 4 int main() 5 { 6 int i=0; 7 for(i=0;i10;i++) 8 { 9 print…

    Linux 2023年6月13日
    096
  • phpcmsv9 后台统计编辑发稿数量

    直切正题: 每个人,每个栏目,发稿数量统计 SELECT a.realname AS 姓名, c.catname AS 栏目名称, count(1) AS 发稿量FROM v9_n…

    Linux 2023年6月13日
    098
  • 001.AD域控简介及使用

    一 AD概述 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系。 当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还…

    Linux 2023年6月7日
    0138
  • layui实现多图上传,支持拖拽上传

    示例:支持多图上传,支持拖拽上传,下方有文件上传信息提示 html代码: <div class="layui-upload"> <div cl…

    Linux 2023年6月7日
    096
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球