假设我有一台生产服务器,它有一个包含所有内容的大根分区。我想将目录(例如/var
)连同其所有数据一起放在单独的分区中。将所有数据复制到新分区然后挂载它的明显方法可能会导致数据不一致,因为在线系统中的更改是不可预测的。
我在想类似这样的事情:
- 将空分区安装在某处;
- 将所有数据复制
/var
到新分区; - 开始保留/锁定(排队?)所有写入请求
/var
; - 使用 rsync 同步最终的更改;
- 挂载新分区到
/var
; - 释放步骤 3 中设置的锁。
步骤 3 和步骤 6 是我不知道该怎么做的。
这样的事能不停机就完成吗?如果不能不停机,那么至少能短停机一段时间而不重启服务器吗?
答案1
除非您已经使用 LVM 创建了文件系统(我猜您没有,因为如果您这样做了,您可能就不会问这个问题了),否则您真的很难“在线”完成此操作。例如,/var 树有许多守护进程,日志文件不断打开,您会发现很难在不重新启动守护进程的情况下移动它们。
由于您几乎必须重新启动系统,因此您不妨安排一个维护窗口,并在单用户模式下离线执行此操作,这样应该很简单
- 将旧的 /var 重命名为其他名称
- 挂载新的 /var
- 更新 /etc/fstab 以反映更改
- 复制数据
- 重新启动到正常运行级别