在 /home 和 /var 之间交换分区

在 /home 和 /var 之间交换分区

我有一台 2TB(Raid,2x2TB)的服务器,并且有以下分区架构

/ => /dev/md2 - 20GB
/home => /dev/md3 - 1.8TB

这是一个 ISPConfig 服务器,所以我们需要 /var 中的大量空间,而 /home 中几乎没有空间,所以我认为最好的方法是将 /home 放入 /dev/md2,将 /var 放入 /dev/md3

我的 fstab 是这样的:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/md2        /       ext4    errors=remount-ro       0       1
/dev/md3        /home   ext4    defaults        1       2
/dev/sda4       swap    swap    defaults        0       0
/dev/sdb4       swap    swap    defaults        0       0

哪种方法最好?我认为将 /home 内容移动到 /homeold,从 fstab 中删除,卸载并从 /homeold 复制到 /home,然后更改 /var 名称(我没有足够的空间进行复制),挂载新的 /var 并移动内容,这样对吗?

另外,我需要停止所有服务器服务以避免错误(mysql、apache、mongodb、named 等),有什么快速的方法可以做到这一点?或者我应该在救援模式下重新启动来执行此操作?

也许另一种方法是在 / 和 /home 之间进行完全更改,我的意思是将 / 放在 /md3 中,将 /home 放在 md2 中,这只能通过编辑 fstab 并重新启动才能实现吗?

非常感谢,

答案1

我认为在这种情况下你最好的朋友会rsync。创建目录 /home/var。将其与现有/var目录同步。

rsync -avh /var/ /home/var/ --delete rsync 命令

初始同步完成后,对/home分区执行相同操作。

此后,停机时间非常短。停止所有服务,再次运行 rsync。检查 var 和 home 中是否没有开始使用文件。lsof | grep '/var'对于 也一样/home。这里有可能使用了一些来自 的库 /var/lib。但可以忽略。现在您有 2 个选择。

选项 1. 挂载/dev/md3到 /media/ 然后符号链接/media/var/var

选项 2. 将/home内容移动到/home_new(/home/var 除外)。然后将所有内容从 移动/home/var到 /home/,然后重新挂载/dev/md3/var,重命名 /home_new/home。在 中进行更改fstab重启服务器看看一切是否正常。

我更喜欢选项 2。我还建议您添加逻辑卷管理器/dev/md3。希望您能有所启发。

类似问题:

  1. https://unix.stackexchange.com/questions/131311/moving-var-home-to-separate-partition
  2. CentOS 和将 /var 移动到新磁盘/分区

相关内容