【156】NFS服务搭建与配置及常用命令

2024-05-26 23:48

本文主要是介绍【156】NFS服务搭建与配置及常用命令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

内容目录(原文见公众号python宝)

一、NFS 工作原理简介(NFS是Net File System的简写,即网络文件系统)二、NFS 服务所需的安装包及常用命令三、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 生效。

exportfs

如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs 命令来使改动立刻生效,该命令格式如下:

  # exportfs [-aruv]

  -a 全部挂载或卸载 /etc/exports中的内容 
  -r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
  -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
  -v 在export的时候,将详细的信息输出到屏幕上。

具体例子: 
   exportfs -au 卸载所有共享目录
     exportfs -rv 重新共享所有目录并输出详细信息

NFS系统守护进程

  • nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;

  • mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。

  • portmap:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。

NFS的常用目录

/etc/exports                           NFS服务的主要配置文件

/usr/sbin/exportfs                   NFS服务的管理命令

/usr/sbin/showmount              客户端的查看命令

/var/lib/nfs/etab                      记录NFS分享出来的目录的完整权限设定值

/var/lib/nfs/xtab                      记录曾经登录过的客户端信息

        NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。

/etc/exports文件内容格式

<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)a. 输出目录:输出目录是指NFS系统中需要共享给客户机使用的目录;b. 客户端:客户端是指网络中可以访问这个NFS输出目录的计算机客户端常用的指定方式指定ip地址的主机:192.168.0.200
指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名的主机:david.bsmart.cn
指定域中的所有主机:*.bsmart.cn
所有主机:*
c. 选项:选项用来设置输出目录的访问权限、用户映射等。NFS主要有3类选项:访问权限选项设置输出目录只读:ro
设置输出目录读写:rw
用户映射选项all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
其它选项secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

二、NFS 服务所需的安装包和常用命令

1、安装 NFS 和 RPC 「服务端、客户端都安装」


rpm -qa nfs-utils rpcbind # 查询是否有,没有用yum安装
yum install nfs-utils rpcbind -y    #nfs需要的安装包
rpm -qa nfs-utils rpcbind
# nfs-utils-1.3.0-0.66.el7.x86_64
# rpcbind-0.2.0-49.el7.x86_64查看是否安装rpm -qa |grep nfsrpm -qa |grep rpcbind# 关闭防火墙,selinux
systemctl stop firewalld.service
systemctl disable firewalld.service  # 禁止防火墙开机自启动
setenforce 0

2、查看用户信息

[root@lhrdocker ~]# tail /etc/passwd | egrep -i "rpc|nfs"
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin   #yum安装rpc服务时创建的
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin  #yum安装nfs服务时创建的

3、NFS 版本和状态查看

服务端版本查看
nfsstat -s
客户端版本查看
nfsstat  -c
加入开始自启动
[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 start1.启动nfs服务
systemctl start nfs-server.service2.设置开机自启动
systemctl enable nfs-server.service3.停止开机自启动
systemctl disable nfs-server.service
4.查看服务当前状态
systemctl status nfs-server.service5.重新启动某服务
systemctl restart nfs-server.service6、rpcbind.service
systemctl status/start/restart rpcbind.service7、查看有哪些参数生效
cat /var/lib/nfs/etab 8、检查共享信息
showmount -e 172.16.1.31-a 显示已经于客户端连接上的目录信息-e IP或者hostname 显示此IP地址分享出来的目录-d 显示指定的nfs服务器中已被客户端连接的所有输出目录;
9、查看挂载信息
df -h        #有时可能会被卡主
cat /proc/mounts                     # 优先使用,监控时使用该命令

相关配置文件及命令的使用
/etc/exports
/path/to/somedir CLIENT_LIST
多个客户之间使用空白字符分隔
每个客户端后面必须跟一个小括号,里面定义了此客户访问特性,如访问权限等172.16.0.0/16(ro,async) 192.16.0.0/24(rw,sync) *(ro)权限属性:ro:只读rw:读写sync:同步,数据同步写到内存与硬盘中async:异步,数据先暂存内存root_squash: 将root用户映射为来宾账号no_root_squash: 有root的权限,不建议使用all_squash: 全部映射为来宾账号anonuid, anongid: 指定映射的来宾账号的UID和GID exportfs命令:-a:跟-r或-u选项同时使用,表示重新挂载所有文件系统或取消导出所有文件系统;-r: 重新导出-u: 取消导出-v: 显示详细信息showmount命令:
showmount -e NFS_SERVER: 查看NFS服务器"导出"的各文件系统
showmount -a NFS_SERVER: 查看NFS服务器所有被挂载的文件系统及其挂载的客户端对应关系列表
showmount -d NFS_SERVER: 显示NFS服务器所有导出的文件系统中被客户端挂载了文件系统列表rpcinfo
-p hostname(orIP)
-p :显示所有的 port 与 program 的信息!如果要让mountd和quotad等进程监听在固定端口,
编辑配置文件/etc/sysconfig/nfs客户端使用mount命令挂载
mount -t nfs NFS_SERVER:/PATH/TO/SOME_EXPORT /PATH/TO/SOMEWHRERE

三、NFS服务端搭建

NFS服务端所需的软件列表

nfs-utils: 这个是NFS服务主程序(包含rpc.nfsd、rpc.mountd、daemons)

rpcbind: 这个是CentOS6.X的RPC主程序(CentOS5.X的为portmap)

lsof -i :111  #查询rpcbind监听状态 (111是rpcbind的主端口)
netstat -lntup |grep rpcbind #查询rpcbind服务启动状态 (同lsof查询端口效果一样)
chkconfig --list rpcbind #检查rpcbind自启动情况
1、服务端
[root@xiaomaili ~]# mkdir /data
[root@xiaomaili ~]# ll -d /data/
drwxr-xr-x. 3 root root 4096 Apr 11 09:49 /data/
[root@xiaomaili ~]# chown -R nfsnobody.nfsnobody /data/
[root@xiaomaili ~]# ll -d /data/
drwxr-xr-x. 3 nfsnobody nfsnobody 4096 Apr 11 09:49 /data/
[root@xiaomaili ~]# cat /etc/exports
# share /data for web created by xiaomaili at 2021-05-21
/data   172.16.1.0/24(rw,sync)
#172.16.1.0/24(rw,sync) 没有空格
#/data  172.16.1.0/24(rw,sync,root_squash,all_squash,anonuid=XXXX,anongid=XXXX) # 推荐配置2、 客户端
mount -t nfs 192.xx.xx.xx:/home/nfstestdir(服务端被挂载的目录) /mnt(客户端要挂载的目录)

加入开机自启动

如果是 CentOS 7 环境,那么必须保证 /etc/rc.d/rc.local 文件具有可执行权限,否则该脚本不会执行也不会生效。

# 开机自启动方式1
[root@xiaomaili mnt]$ ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Nov 14  2018 /etc/rc.local -> rc.d/rc.local
[root@xiaomaili mnt]# tail -3 /etc/rc.local# mount nfs
mount -t nfs 172.16.1.31:/data /mnt# 开机自启动方式2
[root@web01 xiaomaili]$ cat /etc/fstab 
# 添加如下信息
172.16.1.31:/data                        /mnt   nfs   defaults   0 0

About Me:小麦粒

● 本文作者:小麦粒,专注于python、数据分析、数据挖掘、机器学习相关技术,也注重技术的运用

● 作者博客地址:https://blog.csdn.net/u010986753

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● 个人微信号:pythonbao 联系我加微信群

●个人 QQ:87605025

● QQ交流群pythonbao :483766429

● 公众号:python宝 或 DB宝

● 提供OCP、OCM和高可用最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

欢迎赞赏哦!有您的支持,小麦粒一定会越来越好!

这篇关于【156】NFS服务搭建与配置及常用命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005930

相关文章

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

在Spring中配置Quartz的三种方式

《在Spring中配置Quartz的三种方式》SpringQuartz是一个任务调度框架,它允许我们定期执行特定的任务,在Spring中,我们可以通过多种方式来配置Quartz,包括使用​​@Sche... 目录介绍使用 ​​@Scheduled​​ 注解XML 配置Java 配置1. 创建Quartz配置

Kibana的安装和配置全过程

《Kibana的安装和配置全过程》Kibana是一个开源的数据分析和可视化平台,它与Elasticsearch紧密集成,提供了一个直观的Web界面,使您可以快速地搜索、分析和可视化数据,在本文中,我们... 目录Kibana的安装和配置1.安装Java运行环境2.下载Kibana3.解压缩Kibana4.配

tomcat在nginx中的配置方式

《tomcat在nginx中的配置方式》文章介绍了如何在Linux系统上安装和配置Tomcat,并通过Nginx进行代理,首先,下载并解压Tomcat压缩包,然后启动Tomcat并查看日志,接着,配置... 目录一、下载安装tomcat二、启动tomcat三、配置nginx总结提示:文章写完后,目录可以自动

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE