当前位置: 首页 > backend >正文

NFS从零部署

第0步:准备两台虚拟机,作为服务端和客户端

在这里插入图片描述
以下是在 CentOS 7 环境下配置和使用 NFS 服务 的详细步骤,包含实际应用示例:


一、环境说明

  • 服务器:CentOS 7(IP: 192.168.1.100
  • 客户端:CentOS 7(IP: 192.168.1.200
  • 共享目录/data/project(服务器端)
  • 挂载目录/mnt/nfs_project(客户端)

二、服务器端配置

1. 安装NFS服务

# 安装NFS服务端软件
sudo yum install -y nfs-utils rpcbind

在这里插入图片描述

2. 创建共享目录并设置权限

sudo mkdir -p /data/project
sudo chmod 755 /data/project  # 设置目录权限
sudo chown nobody:nobody /data/project  # 设置属主为匿名用户(可选)

3. 配置NFS共享规则

编辑 /etc/exports 文件:

sudo vi /etc/exports

添加以下内容:

/data/project 192.168.1.200(rw,sync,no_root_squash)  # 允许单个客户端
# 或允许整个子网:
# /data/project 192.168.1.0/24(rw,sync,no_subtree_check)
  • rw:读写权限
  • sync:同步写入
  • no_root_squash:允许客户端root用户保留权限(谨慎使用)

4. 启动NFS服务

# 启动服务并设置开机自启
sudo systemctl start rpcbind nfs-server
sudo systemctl enable rpcbind nfs-server# 重新加载exports配置
sudo exportfs -arv

在这里插入图片描述

5. 配置防火墙(重要!)

# 允许NFS服务通过防火墙
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload

在这里插入图片描述


三、客户端配置

1. 安装NFS客户端工具

sudo yum install -y nfs-utils

2. 创建挂载点目录

sudo mkdir -p /mnt/nfs_project

3. 挂载NFS共享目录

sudo mount -t nfs 192.168.1.100:/data/project /mnt/nfs_project

4. 验证挂载

df -h | grep nfs  # 查看挂载状态
ls /mnt/nfs_project  # 查看共享内容

在这里插入图片描述

5. 设置开机自动挂载

编辑 /etc/fstab

sudo vi /etc/fstab

添加以下行(注意这里的地址是服务器的ip地址):

192.168.1.100:/data/project /mnt/nfs_project nfs defaults,_netdev 0 0
  • _netdev:确保网络就绪后再挂载

在这里插入图片描述

四、实际应用示例

场景:多服务器共享代码目录

  • 服务器端:将 /data/project 作为共享目录存放项目代码
  • 客户端:通过NFS挂载到本地目录,直接运行代码
操作步骤:
  1. 在服务器端创建测试文件:
    echo "Hello from NFS Server" > /data/project/test.txt
    

在这里插入图片描述

  1. 在客户端查看文件:

    cat /mnt/nfs_project/test.txt  # 应显示服务器端内容
    
  2. 在客户端写入文件:

    echo "Client writes to NFS" >> /mnt/nfs_project/test.txt
    
  3. 在服务器端验证同步:

    cat /data/project/test.txt  # 应包含客户端写入的内容
    

五、高级配置选项

1. 用户权限管理

  • 使用 anonuidanongid 指定匿名用户UID/GID:
    /data/project 192.168.1.200(rw,sync,all_squash,anonuid=1000,anongid=1000)
    

2. 性能优化

  • 调整挂载参数(客户端):
    mount -t nfs -o rsize=8192,wsize=8192,timeo=14 192.168.1.100:/data/project /mnt/nfs_project
    

3. 安全增强

  • 限制IP访问范围:
    /data/project 192.168.1.200(rw) 192.168.1.201(ro)
    

六、常见问题排查

1. 挂载失败:Connection refused

  • 检查服务器端防火墙和NFS服务状态:
    sudo systemctl status nfs-server
    sudo firewall-cmd --list-all
    

2. 客户端无写入权限

  • 确保服务器端 exports 文件配置了 rw 权限
  • 检查共享目录的本地文件系统权限:
    ls -ld /data/project
    

3. 文件修改不同步

  • 检查是否使用了 sync 参数
  • 尝试手动同步:
    sudo exportfs -arv  # 服务器端重新导出共享
    

七、注意事项

  1. 生产环境安全

    • 避免使用 no_root_squash
    • 尽量缩小IP访问范围
    • 定期检查共享目录权限
  2. SELinux问题

    # 如果遇到权限问题,临时关闭SELinux
    sudo setenforce 0
    # 永久关闭需修改/etc/selinux/config
    

通过以上步骤,可以在CentOS 7环境下快速搭建NFS服务,并实现跨服务器的文件共享。

http://www.xdnf.cn/news/2509.html

相关文章:

  • 华为 CCE 查看节点剩余可调度cpu核数
  • 从零实现分布式WebSocket组件:设计模式深度实践指南
  • 路由协议基础
  • babel和loader的关系
  • 微深节能 平板小车运动监测与控制系统 格雷母线
  • LeetCode题解1297. 子串的最大出现次数
  • 低压电工常见知识点
  • 麒麟系统通过 Service 启动 JAR 包的完整指南
  • 【KWDB 创作者计划】_KWDB引领数据库技术革新的璀璨之星
  • 业务校验工具包-validate-utils介绍
  • spring-rabbit的CachingConnectionFactory默认参数导致消费者Channel数量暴增问题解决
  • go语言八股文(三)
  • Deep Dark Sea 局域網文件共享即時匿名聊天去數據庫部署
  • Ldap高效数据同步- MirrorMode双主复制模式配置详解(下)
  • spring项目rabbitmq es项目启动命令
  • 【Pandas】pandas DataFrame rfloordiv
  • 查回来的数据除了 id,其他字段都是 null
  • 【音视频】SDL事件
  • AI 发展历史与关键里程碑_附AI 模型清单及典型应用场景以及物流自动化适合的模型选择
  • 从零开始开发一个简易的五子棋游戏:使用 HTML、CSS 和 JavaScript 实现双人对战
  • windows安装docker,发现没有hyper
  • JVM常见的垃圾回收器
  • RT Thread Studio创建USB虚拟串口工程
  • 生物医学AI的特种算力需求:冷冻电镜数据处理中的GPU加速方案
  • 互斥量函数组
  • List 的介绍 [数据结构 初阶]
  • Missashe考研日记-day28
  • 海关 瑞数 后缀分析 rs
  • 详解React Fiber架构中,reconcile阶段的具体工作流程
  • 使用 Doxygen 生成类似官网的专业文档