• 在CentOS中搭建NFS


    概述

    NFS是一款经典的网络文件系统,在Linux上我们可以通过创建一个NFS服务在不同的服务器之间共享磁盘文件,而不用在多个服务器之间进行不断的拷贝复制,麻烦且浪费存储空间。在k8s中我们也可以使用NFS来作为我们的存储类,实现文件的持久化存储。

    安装

    接下来我们介绍一下如何在CentOS中安装NFS服务,以及如何在客户端机器挂载NFS。

    服务端

    操作系统:CentOS 7.6 64bit
    IP地址:  192.168.202.151
    

    为服务端安装NFS相关组件

    yum -y install nfs-utils
    

    创建需要共享的NFS目录,并赋予相关权限

    mkdir /home/nfs
    chmod 777 /home/nfs
    

    编辑配置文件/etc/exports来配置我们的NFS服务的访问和同步策略

    • ro 只读
    • rw 可读写
    • sync 同步写数据,保证数据不丢失
    • async 异步写数据,在写入持久化存储之前进行请求响应,如果服务器重启可能会导致文件丢失或者损坏
    • root_squash 将root用户(uid/gid 0)的请求映射为匿名用户(anonymous uid/gid)
    • no_root_squash 禁用root_squash规则
    • all_squash 将所有用户都映射为匿名用户
    • no_all_squash 禁用all_squash规则,默认选项
    • anonuid 指定要映射为匿名用户的uid,例如:anonuid=150
    • anongid 指定要映射为匿名用户的gid,例如:anongid=100

    这里我们挂载的NFS指定为可读写的目录,并且进行同步读写,将所有root用户都映射为匿名用户

    /home/nfs 192.168.202.1/24(rw,sync,root_squash)
    

    完整的配置参数介绍可以使用以下命令查看

    man exports
    

    配置完成后,启动NFS相关的服务

    systemctl restart rpcbind
    systemctl start nfs-server
    

    如果需要的话,可以配置NFS服务端为开机自启动

    systemctl enable rpcbind
    systemctl enable nfs-server
    

    如果不再需要开机启动时,也可以使用以下命令禁用开机自启动

    systemctl disable rpcbind
    systemctl disable nfs-server
    

    客户端

    操作系统:CentOS 7.6 64bit
    IP地址:  192.168.202.152
    

    为客户端安装NFS相关组件

    yum -y install nfs-utils
    

    创建需要挂载到本地的目录并赋予权限,这里任意指定,不一定要与服务端相同

    mkdir /home/nfs
    chmod 777 /home/nfs
    

    将NFS文件系统挂载到本地的目录上

    mount -t nfs 192.168.202.151:/home/nfs /home/nfs
    

    如若不再需要可以使用以下命令卸载NFS目录

    umount /home/nfs
    

    如果执行上述的mount命令一直处于等待状态,可能是服务器上启用了防火墙或者是云服务器本身的防火墙限制了端口的访问,需要在NFS服务端开放以下端口号的访问权限:111204920048。如果是云服务器可以到各自的网站后台去配置防火墙策略,如果是本地的机器可以使用以下命令开放指定的端口。

    firewall-cmd --zone=public --add-port=111/tcp --permanent
    firewall-cmd --zone=public --add-port=111/udp --permanent
    firewall-cmd --zone=public --add-port=2049/tcp --permanent
    firewall-cmd --zone=public --add-port=20048/tcp --permanent
    firewall-cmd --zone=public --add-port=20048/udp --permanent
    firewall-cmd --reload
    

    上述端口信息都可以在以下文件中查找到

    /usr/lib/firewalld/services/nfs.xml
    /usr/lib/firewalld/services/rpc-bind.xml
    /usr/lib/firewalld/services/mountd.xml
    

    如果你不关心具体的端口号,也可以直接使用以下命令,直接根据配置文件放行相应的端口

    firewall-cmd --zone=public --add-service=nfs --permanent
    firewall-cmd --zone=public --add-service=rpc-bind --permanent
    firewall-cmd --zone=public --add-service=mountd --permanent
    firewall-cmd --reload
    

    如果想要在开机的时候自动挂载NFS目录,则需要在/etc/fstab文件中新增一行添加以下记录

    192.168.202.151:/home/nfs /home/nfs nfs defaults 0 0
    

    其他命令

    # 在服务端执行,查看nfs状态信息
    nfsstat -s
    
    # 在客户端执行,查看nfs挂载信息
    nfsstat -m
    
    # 查看服务端的远程共享信息,此命令会调用服务端的20048端口
    showmount -e 192.168.202.151
    
    # 查看rpcbind注册的所有端口号
    rpcinfo -p
    
    # 在服务端执行,重新挂载/etc/exports中配置
    exportfs -r
    
  • 相关阅读:
    Spring Boot
    Spring Boot – Jetty配置
    如何使ESLint在Visual Studio 2019和2017中工作: 2019 v16和2017> = v15.8
    CentOS 7 安装 Nginx
    HTTPS-使用Certbot自动配置Let’s Encrypt证书
    centos7升级内核到最新版本
    [C#.net]Connection Timeout和Command Timeout
    Redis中切换db
    Redis 模糊查询删除操作
    [Abp vNext 源码分析]
  • 原文地址:https://www.cnblogs.com/mstmdev/p/16028801.html
Copyright © 2020-2023  润新知