使用NFS让B服务器ubuntu24.04内网使用A服务器centos7的硬盘

内容目录

问题原因

A B服务器处于内网,内网带宽2.5G差不多,内网服务器共享硬盘读写200-300M/S 日常使用没问题
B服务器ubuntu24.04 docker-compose部署的loki日志系统占用磁盘空间较大,且需要迁移更便宜的服务器
A服务器centos7 还有大量空闲硬盘空间

解决思路

使用NFS让B服务器ubuntu24.04内网使用A服务器centos7的硬盘

优点

1.不浪费A服务器硬盘
2.节省服务器成本,合理利用资源
3.本身loki是docker-compose部署,文件移到NFS文件夹,方便迁移服务器
4.新服务器挂载后,docker-compose up -d 就能启动提供服务

示例实操


1. A 服务器(CentOS 7) 配置 NFS 共享

1.1 安装 NFS 服务

sudo yum install -y nfs-utils

1.2 启动 NFS 服务并设置开机自启

sudo systemctl enable --now nfs-server

1.3 配置 NFS 共享目录

假设要共享 /data/share 目录:

sudo mkdir -p /data/share
sudo chmod 777 /data/share  # 或者根据需要设置权限
sudo chown -R nfsnobody:nfsnobody /data/share  # 设定 NFS 默认用户

1.4 编辑 /etc/exports 添加共享目录

sudo nano /etc/exports

添加:

/data/share 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)

解释:

  • 192.168.1.0/24:允许这个网段的机器访问(可改为 B 服务器 的 IP)。
  • rw:读写权限。
  • sync:同步写入,提高数据一致性。
  • no_root_squash:允许客户端 root 用户访问(如果不希望 root 访问,可以去掉)。
  • no_subtree_check:避免子目录权限问题。

1.5 重新加载 NFS 配置

sudo exportfs -r

1.6 查看共享状态

sudo exportfs -v

1.7 防火墙放行 NFS

无防火墙服务则略过

sudo firewall-cmd --add-service=nfs --permanent
sudo firewall-cmd --reload

或者手动开放端口:

sudo firewall-cmd --add-port=2049/tcp --permanent
sudo firewall-cmd --reload

2. B 服务器(Ubuntu 24.04) 挂载 NFS 共享

2.1 安装 NFS 客户端

sudo apt update
sudo apt install -y nfs-common

2.2 创建挂载目录

sudo mkdir -p /mnt/nfs_share

2.3 手动挂载 NFS

假设 A 服务器 IP 为 192.168.1.100

sudo mount -t nfs 192.168.1.100:/data/share /mnt/nfs_share

2.4 验证挂载

df -h
ls /mnt/nfs_share

3. 设置开机自动挂载

3.1 编辑 /etc/fstab

sudo nano /etc/fstab

添加:

192.168.1.100:/data/share  /mnt/nfs_share  nfs  defaults,_netdev  0  0

3.2 测试

sudo umount /mnt/nfs_share
sudo mount -a

如果没有错误,表示配置成功。


4. NFS 性能优化(可选)

4.1 在 /etc/fstab 添加 NFS 挂载参数

192.168.1.100:/data/share  /mnt/nfs_share  nfs  defaults,_netdev,noatime,nolock,vers=4.1  0  0

参数说明

  • noatime:避免频繁更新文件访问时间,提高性能。
  • nolock:关闭文件锁定(适用于非并发场景)。
  • vers=4.1:使用 NFS v4.1,提升性能。

4.2 手动挂载测试

sudo mount -a
df -h

5. 常见问题排查

5.1 挂载失败,提示 mount.nfs: Connection refused

解决: 确保 A 服务器的 NFS 服务已启动:

sudo systemctl restart nfs-server
sudo exportfs -r

检查防火墙:

sudo firewall-cmd --list-all

5.2 挂载失败,提示 Permission denied

解决: 确保 /etc/exports 设置正确,并重新加载:

sudo exportfs -r

确认客户端 B 服务器 IP 是否在允许范围:

showmount -e 192.168.1.100

总结

这样就可以在 B 服务器(Ubuntu 24.04) 上使用 A 服务器(CentOS 7) 的硬盘了!如果是生产环境,可以考虑 NFS + autofs 自动挂载,或者用 GlusterFS / CephFS 提高可用性。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注