有没有可能在线更改目录安装点?

假设我有一个拥有一个大根分区的生产服务器。 我想把一个目录,例如/var ,放在一个单独的分区,连同它所有的数据。 将所有数据复制到新分区然后挂载的明显方式可能会导致数据不一致,因为在线系统中的更改可能无法预测。

我正在想的是:

  1. 在某处挂载空的分区;
  2. 将所有数据从/var复制到新分区;
  3. 开始保持/locking(排队?)所有写入请求到/var ;
  4. 用rsync同步最后的更改;
  5. 将新分区挂载到/var ;
  6. 松开步骤3中的锁。

步骤3和步骤6是我不知道该怎么做的。

有没有停机时间这样的事情? 如果不是没有宕机,那么至less在不重启服务器的情况下停机时间很短?

除非你已经使用LVM创build了你的文件系统(而且我猜你没有,因为如果你这样做,你可能不会问这个问题),你真的很难做到这一点。 例如,/ var树有许多守护进程,日志文件不断打开,您将发现在不重新启动守护进程的情况下很难移动这些守护进程。

由于你几乎不得不重新启动系统,所以你可能只需要维护一个窗口,在单用户模式下离线执行,它应该和

  • 将旧/ var重命名为其他内容
  • 挂载新的/ var
  • 更新/ etc / fstab以反映更改
  • 复制数据
  • 重新启动到正常运行级别