将两个分区的内容合并为一个分区

将两个分区的内容合并为一个分区

/dev/md1我有一台机器,安装在 上有 20GB FS ,安装/在 上有 ~200GB FS 。大量数据很快就会被存储在.如何在不擦除系统的情况下将这两个分区合并为一个更大的分区?如果这不容易实现,那么在不损坏用户数据等所有内容和已存在的任何内容的情况下,最简单的方法是什么?/dev/md2/home/var/var//var

这些机器运行的是 Debian 7.10。虽然差别不大,但实际上我在两台或多或少相同的机器上遇到了这个问题。我无法实际接触到他们中的任何一个。当它们尚未“上线”或投入生产时,可以根据需要经常重新启动它们。

答案1

由于你的md2不为空,最简单的方法就是将rsync数据复制/var到新分区,然后进行软链接:

 rsync -xav /var /home/VAR
 mv /var /var.org
 ln -s /home/VAR /var

最好在从实时发行版启动时完成此操作(带有安装md1md2调整的路径),如果不可能,您可能需要rsync另一个时间以便在 rsync 期间捕获更改(从实时系统启动更好)。如果您从实时发行版执行此操作,则可以通过rsync在工作系统上执行初始操作来减少停机时间(如 @cas 所示),以便在实时系统中重新启动后仅需要同步更改的文件。

作为制作软链接的替代方法,您可以考虑使用bindmount /home/VAR/ on /var。我不确定这是否有优势。

一旦您检查的所有内容均已到位并正常工作,您就可以删除/var/org

答案2

简单的解决方案,如德罗伯特在评论中建议,是将(大部分)现有文件保留在原处,仅移动将要接收大文件的一个目录,并创建一个符号链接以使预期路径指向文件实际存储的位置。例如,如果您要将此服务器转换为保存大量邮件,您可能会这样做

service postfix stop         # or whatever you need to do to stop writing to /var/mail
mv /var/mail /home
ln -s ../home/mail /var/mail
service postfix start

如果文件要进入新目录,则无需移动任何内容,只需在大分区中创建目录并在/var.

如果文件确实必须在下面/var,您可以移动/home到小分区,然后移动/var到大分区。但为了安全地进行操作,您需要确保没有任何东西正在使用您正在移动的文件,如果您没有物理访问权限,这就会出现问题。

答案3

最终我发现的修复与@Anthon 发布的修复类似。

我最终VAR/home.我将 的内容复制/var到其中,然后更改/etc/fstab/dev/md2安装在 处/var。然后我重新启动了系统。当它回来时,我创建了一个新/home目录(现在结束于/dev/md1),将每个用户帐户(位于/var)移动到/home,然后将(现在的)内容移动/var/VAR/var。然后我重新启动机器以解决涉及/var/lock/var/run混乱的问题。

虽然这非常混乱,但这是我发现解决问题的最干净的方法,因为它避免了处理符号链接和/home.

相关内容