0

假设我们有两个设备:sda1(上面安装了系统 /)和 sda2(清晰的格式化分区)。我在 sda1 上有目录 /data,它被数百个进程(一些写操作)实时使用。是否可以将 sda2 挂载为 /data 文件夹(包含文件),保留 [访问] 所有文件(?),同时从 sda1 分区“切出” /data 文件夹(并使其成为分区 sda2 的一部分)?我知道 mount 中有bind选项,但它只允许您将第一个目录复制到另一个目录。它是停止所有进程的唯一解决方案,将 sda2 挂载为 /data2 或其他方式,将所有文件移动到 sda2 并将 sda2 重新挂载为 /data?

4

2 回答 2

0

是的 - 唯一的方法是将 sda2 挂载到 /data2,从 sda1 移动数据并将 sda2 重新挂载为 /data。在一个目录上同时挂载两个分区不是一种选择。

于 2013-09-19T21:28:57.427 回答
0

如果您发现它们有帮助,您可以执行以下操作:

  • 在 /data 上挂载 sda2,而现有进程仍在处理它们在 sda1 上打开的文件。当他们关闭文件时,他们将不再看到来自 sda1 的文件。
  • 在新的挂载命名空间中将 sda2 挂载到 /data 上,这样当您在 /data 上列出文件时,您会看到来自 sda2 的内容,但系统的其余部分仍会看到 sda1。您可以使用它unshare来创建一个新的命名空间。

您不能做的是从一个文件系统中剪切一个目录并将其粘贴到另一个文件系统上。数据必须从磁盘上的一个地方移动到另一个地方,这需要时间。

于 2013-09-19T22:02:48.787 回答