数据盘承接系统盘业务数据
约 704 字
系统盘被业务数据(网站文件、数据库、日志、备份包)撑满时,可以把对应目录整体迁移到数据盘:数据盘容量独立、后续扩容也更方便。适用于系统盘扩容不便、或想把业务数据与系统分离管理的场景。
涉及数据迁移
操作前先备份,建议同时为系统盘创建快照;迁移期间业务会短暂中断(切换目录那几步),安排在低峰期进行。
前提
- 系统盘未满(至少留 10%,
df -h确认)——满盘时连备份复制都没地方放; - 数据盘已完成初始化(分区+格式化),方法见Linux服务器挂载数据盘,先不要挂载或先挂到临时目录;
- 确认目标目录的归属:本文以
/userdata为例,网站数据通常在/www(宝塔)或/var/www,数据库在/var/lib/mysql。
迁移步骤
以把 /userdata 迁到数据盘 /dev/vdb1 为例:
# 1. 数据盘挂到临时目录
sudo mkdir /temporary
sudo mount /dev/vdb1 /temporary
# 2. 复制数据(保权限保软链,推荐 rsync)
sudo apt install -y rsync # 或 yum/dnf
sudo rsync -aHAX --progress /userdata/ /temporary/
# 3. 切换目录(业务短暂中断点)
sudo umount /temporary
sudo mv /userdata /userdata_bak # 原目录改名留作回滚
sudo mkdir /userdata
sudo mount /dev/vdb1 /userdata # 数据盘顶上原目录位置
# 4. 验证
df -Th # 应看到 /dev/vdb1 挂载在 /userdata然后写入 fstab 实现开机自动挂载(用 UUID,步骤见Linux服务器挂载数据盘),否则重启后数据盘不会自动挂回 /userdata,业务会退回到一个空目录上。
最后重启业务并验证功能正常;确认稳定运行后回收空间:
sudo rm -rf /userdata_bak回滚方法
万一业务异常,把目录换回来即可:
sudo umount /userdata
sudo rmdir /userdata
sudo mv /userdata_bak /userdata
# 重启业务,恢复正常后再排查问题特殊目录注意
| 目录 | 注意事项 |
|---|---|
/var/lib/mysql | 必须先停数据库(systemctl stop mysqld)再复制,迁完 chown -R mysql:mysql 恢复属主;不同数据库软件目录不同 |
/www(宝塔) | 宝塔自身数据也在此目录,同样先停面板与 Web 服务,迁完全部重启 |
/var/log | 一般不值得迁,日志膨胀问题优先按磁盘空间异常排查治理 |
软链接方案不推荐
用 ln -s 把目录链到数据盘虽然一步到位,但部分服务(systemd、数据库)不跟随软链接或行为异常,挂载方案才是稳妥做法。
fstab 配置不当会导致重启后无法进入系统,写完务必 mount -a 验证,出问题时的修复见fstab配置错误导致无法登录。
