内容目录
问题原因
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 提高可用性。
近期评论