我怎样才能改变一个分区挂载到var仍然启动?

我的第一个问题在这里服务器故障。 匆匆忙忙,我用Centos 6.2build立了一个本地服务器,让CentOS安装程序处理分区

大错,我知道。

无论如何,我唯一的问题是,大部分硬盘空间被分配到/ home挂载点。 我们不打算使用这个…我们将要使用/ var。 我尝试将挂载到/ home的分区的挂载点更改为挂载到/ var …但是,我确定您已经在对自己笑了,是的,它阻止了我的系统启动。 结果/ var很重要;)

现在,我不是一个完全的傻子,所以我能够启动到恢复控制台,并将其更改回来。 现在,这就是我来找你们的原因。

我怎样才能将挂载点更改为/ var,但仍然保留一个正常运行的系统? 我认为我需要将/ var的内容以某种方式复制到/ home,但是我不确定从哪里开始。

你的描述有点令人困惑 – 但是这听起来像你有一个/ var分区和一个/ home分区。

您想在复制时保留权限 – 这非常重要

如果你想要的只是能够挂载/ home作为/ var,那么我会在原始环境中做到这一点:

# rsync -Wav /var/ /home 

这将在/ home中重新创build/ var / lib,/ var / tmp等目录。 完成之后,/ home将看起来像这样(伪装输出示例):

 # ls -m /home agentx, backups, cache, charlie, crash, lib, local, lock, log, louie, mail, opt, run, spool, tina, tmp, www 

注意三个(假的)主目录:/ home / charlie / home / louie / home / tina。

除非有一个守护进程需要一个真正的主目录,否则应该可以删除所有主目录而不会出现严重的问题。 无论如何,要保存它们(以防万一),我会在复制/ var之前执行此操作:

 # cd /home # mkdir .sav # mv charlie tina louie .sav 

这将移动选定的主目录,但保留它们以备后用。

另外,将/ home移动到/ var时,意味着/ home现在必须在/(root)上创build。 用新的设置启动后(用/ home移动到/ var)然后执行以下操作:

 # mkdir /home # chmod 755 /home 

确保创build你需要的任何/ home目录 – 或从/var/.sav目录复制它们。 要做到这一点,请在您的环境中执行此操作:

 # rsync -Wav /var/.sav/ /home 

还要注意,原来的/ var仍然会在那里。 如果它是在一个安装的文件系统中,那么它将被隐藏,但仍占用空间。

更新:为了回应下面的问题,下面是关于从/var恢复空间的一些想法:

你可能不应该删除这些文件,直到你已经运行了一段时间的改变了的环境,并且什么都不需要旧的环境。 这只是为了安全起见。

也是为了安全起见,你可能应该做两件事。 在旧的环境中,这样做:

 # touch /var/var.old # touch /home/var.new 

这将允许你看到两个几乎相同的坐骑,但辨别哪一个是一目了然。

要实际删除数据,您需要能够访问旧/var的数据。 一旦你装载你的新分区,这个数据将不能在/var下直接访问。

有两种方法可以做到这一点:

  1. 在原始环境中,创build一个到/ var( ln /var /var.old )的硬链接,然后在新环境中执行rm -rf /var.old/* 。 我还没有尝试过,但有一个硬​​链接,你应该仍然访问旧/var而不是新的。 通过查找var.oldvalidation(如果你看到var.new那么它不起作用)。

  2. 在恢复shell中,执行mkdir /var.old ; mv /var/* /var.old mkdir /var.old ; mv /var/* /var.old 。 一旦启动到新环境中,访问/var.old下的数据。

请注意,这两个都保留了安装所需的/var目录。