Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)

Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)

背景:

最近服务器原有数据盘容量不足,需要将服务和数据迁移至新的更大容量磁盘。

但现有服务配置中已经大量写死了原有路径:/home/top为了避免修改服务配置、降低风险,本次迁移采用:

  • 使用rsync进行数据同步
  • 使用mount --bind进行目录重映射

使路径保持不变但底层存储位置发生改变,从而避免修改服务配置。

一、数据同步

在迁移数据之前,先将所有服务暂停,避免在复制数据过程中产生新的数据。
旧的服务和数据地址:/home/top/ (挂载在/dev/vdb1)
新的服务和数据地址:/mine/top/ (挂载在/dev/vdb2)

执行以下命令,将数据从/home/top/复制到/mine/top/

bash 复制代码
rsync -av /home/top/ /mine/top/

【如果数据量较大,建议在停止服务前先执行一次 rsync 进行全量同步,停止服务后再执行一次 rsync 同步增量数据,可有效缩短停机时间。】

二、备份原目录

执行以下命令,将原有数据保存一份副本,以便出现意外后恢复数据。

bash 复制代码
mv /home/top /home/top_bak

三、目录重映射

bash 复制代码
mkdir /home/top    #重新创建原有目录(服务相关配置用到了原有路径),此时这个目录为空目录

mount --bind /mine/top /home/top  #将/home/top目录映射到/mine/top,之后写入/home/top的数据实际都存储到/mine/top中。相当于入口不变,而底层存储位置改变。

【注意:bind mount 并不会删除原目录数据,而是将原目录作为挂载点覆盖。如果执行 umount /home/top,仍然可以看到原目录内容。】

四、开机自动挂载

前面执行的:mount --bind /mineDrone/top /home/top只是临时生效。如果此时服务器重启,系统会重新加载文件系统挂载信息,而我们手动执行的 bind 挂载会失效。此时我们需要设置开机自动挂载。

修改/etc/fstab,在文件的末尾增加:

bash 复制代码
/mine/top   /home/top   none   bind   0 0
# <源>  <挂载点>  <文件系统类型>  <挂载选项>  <dump>  <fsck>

修改完成后,不要直接重启,先执行:

bash 复制代码
mount -a

如果没有报错,说明配置正确,开机自动挂载配置完成。

五、迁移验证

在完成目录重映射和开机自动挂载配置后,需要确认迁移是否真正生效。

执行:

复制代码
mount | grep top

可以看到类似输出:

复制代码
/mine/top on /home/top type none (rw,bind)

说明挂载成功。

也可以使用:

复制代码
findmnt /home/top

看到以下输出:

复制代码
/dev/vdb2   #新数据盘

验证挂载成功。

相关推荐
kyle~4 小时前
Linux --- epoll (I/O就绪事件通知机制)
linux·运维·服务器
AlfredZhao4 小时前
进程都杀了,为什么 `netstat` 还能看到端口?
linux
一条泥憨鱼4 小时前
【从0开始学习计算机网络】| 邮件协议入门:SMTP、POP3、IMAP
linux·运维·计算机网络·github
Johny_Zhao14 小时前
网络安全等级保护测评实施方案
linux·网络·人工智能·网络安全·信息安全·云计算·等保测评·系统运维·itsm
落羽的落羽15 小时前
【AI】快速理解AI应用的相关名词概念
linux·c++·人工智能·python·计算机网络·算法
刚入门的大一新生15 小时前
Linux-进程控制
linux·运维·服务器·c++
上火的金鱼妹15 小时前
K8S基础组件作用和关系整理
linux·运维·服务器·kubernetes
Vcaker15 小时前
Linux学习25-harbor私有仓库部署
linux·运维·学习
刃神太酷啦16 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
编程的一拳超人16 小时前
DeepSeek Harness Linux/macOS/Windows 本地下载、启动与模型配置指南
linux·windows·macos·deepseek