• Linux配置NFS文件共享存储


    一、NFS简介

            NFS是一种基于TCP/IP传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。

            对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议。但是由于NFS没有用户认证机制,而且数据在网络上明文传输,所以安全性很差,一般只能在局域网中使用。

            NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。所以需要安装 nfs-utils、rpcbind 软件包来提供 NFS共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。

            nfs使用tcp/udp的2049端口;rpcbind使用tcp/udp的111端口。

    二、NFS原理

    • 首先服务器端启动RPC服务,并开启111端口
    • 启动NFS服务,并向RPC注册端口信息
    • 客户端启动RPC服务,向服务端的RPC(portmap)服务请求服务端的NFS端口
    • 服务端的RPC服务反馈NFS端口信息给客户端。
    • 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

    三、配置实现NFS文件共享存储

    1.关闭防火墙和selinux,下载nfs相关软件

    1. //关闭防火墙
    2. [root@localhost1 ~]# systemctl stop firewalld
    3. [root@localhost1 ~]# setenforce 0
    4. //下载nfs相关软件
    5. [root@localhost1 ~]#yum -y install nfs-utils
    6. [root@localhost1 ~]#yum -y install rpcbind

    2.准备共享目录(如果允许客户端在共享目录写入文件,则需要给共享目录授予相关的写权限)

    1. [root@localhost1 ~]#mkdir /share
    2. [root@localhost1 ~]#chmod 777 share (使匿名用户也可读写文件)

    3.修改共享策略配置文件 /etc/exports

    NFS 的配置文件为 /etc/exports
    配置字段格式为:
    共享的目录 客户机地址或网段(权限选项1,权限选项2,...)

    权限选项解释
    rw允许读写
    ro只读
    sync数据同步写入到内存与硬盘中
    async数据先写入内存缓冲区,根据系统策略再写入硬盘
    no_root_squash当客户机以root身份访问时赋予本地root权限

    root_squash

    (默认存在)

    客户机用root用户访问该共享目录时,将root用户映射成匿名用户(nfsnobody)
    all_squash所有访问用户都映射为匿名用户或用户组

    subtree_check

    (默认存在)

    若输出目录是一个子目录,则nfs服务器将检查其父目录的权限
    no_subtree_check 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
    1. //创建一个共享文件目录
    2. [root@localhost1 ~]#mkdir /share
    3. //修改nfs共享文件配置
    4. [root@localhost1 ~]#vim /etc/exports
    5. /share 192.168.116.0/24(rw,async,no_root_squash,no_subtree_check)
    6. --使/share目录作为192.168.116.0网段的共享目录,赋予以上权限

    4.启动rpcbind和nfs服务(手动加载NFS共享服务时,应该先启动rpcbind,再启动nfs)

    1. [root@localhost1 ~]#systemctl start rpcbind
    2. [root@localhost1 ~]#systemctl start nfs

    5.查看本机发布的nfs共享目录

    1. [root@localhost1 ~]#showmount -e
    2. Export list for localhost1:
    3. /share 192.168.116.0/24

    6.客户端同样关闭防火墙和selinux,下载nfs相关软件

    1. //关闭防火墙
    2. [root@localhost1 ~]# systemctl stop firewalld
    3. [root@localhost1 ~]# setenforce 0
    4. //下载nfs相关软件
    5. [root@localhost1 ~]#yum -y install nfs-utils
    6. [root@localhost1 ~]#yum -y install rpcbind

    7.挂载NFS共享目录

    1. //暂时挂载
    2. [root@localhost ~]# mount 192.168.116.10:/share /myshare
    3. //永久挂载
    4. [root@localhost ~]# vim /etc/fstab
    5. #添加
    6. 192.168.116.10:/share /myshare nfs defaults,_netdev 0 0
    7. ^
    8. 表示挂载设备需要网络

    8.测试共享目录是否作用

    1. //在服务端共享目录新建文件
    2. [root@localhost1 ~]#cd /share/
    3. [root@localhost1 share]#touch test
    4. //查看客户端共享目录
    5. [root@localhost ~]# ls /myshare/
    6. test

    9.修改配置后重新生效

    (1)服务端重启服务,客户端强制解挂再重新挂载(过于繁琐)

    (2)服务端使用命令刷新配置文件(推荐)

    1. //刷新配置
    2. [root@localhost1 share]#exportfs -r
    3. //查看nfs共享配置
    4. [root@localhost1 share]#exportfs -v
    5. /share 192.168.116.0/24(async,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
    6. //搭配使用
    7. [root@localhost1 share]#exportfs -rv
    8. exporting 192.168.116.0/24:/share

  • 相关阅读:
    【Java】设计模式之单例模式与工厂模式
    Elk-Metricbeat配置Nginx的日志分析 (Metricbeat-part2)
    Win11 Dev 预览版 25211 发布,任务栏右键菜单“任务管理器”回归
    SwiftUI中EnvironmentObject使用中,直接修改数据源的原值的方法
    【11.14】Codeforces 刷题
    indexof
    动态线程池框架 DynamicTp v1.0.6版本发布。还在为Dubbo线程池耗尽烦恼吗?还在为Mq消费积压烦恼吗?
    cas:174501-64-5|1-丁基-3-甲基咪唑六氟磷酸盐|[C4MIm]PF6离子液体
    提升珠宝管理效率的新零售行业RFID应用解决方案
    java-php-python-ssm-快递代收系统-计算机毕业设计
  • 原文地址:https://blog.csdn.net/weixin_58544496/article/details/126402395