我的第一个问题是关于服务器故障。匆忙之中,我设置了一个带有 Centos 6.2 的本地服务器,并让 Centos 安装程序处理分区。
我知道,这是一个大错误。
无论如何,我遇到的唯一问题是大部分硬盘空间都分配给了 /home 挂载点。我们不会使用它...我们将使用 /var。我尝试将挂载到 /home 的分区的挂载点更改为挂载到 /var...但是,我敢肯定你已经笑了,是的,它阻止了我的系统启动。事实证明 /var 很重要 ;)
现在,我并不是一个十足的傻瓜,所以我能够启动恢复控制台并将其改回来。现在,这就是我来找你们的原因。
我怎样才能将挂载点更改为 /var 但仍保留正常运行的系统?我猜我需要以某种方式将 /var 的内容复制到 /home,但我不知道从哪里开始。
答案1
您的描述有点令人困惑 - 但听起来您有一个 /var 分区和一个 /home 分区。
您希望在复制时保留权限 - 这是批判的!
如果您想要的只是将 /home 挂载为 /var,那么我会在原始环境中执行以下操作:
# rsync -Wav /var/ /home
这将在 /home 中重新创建 /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。使用新设置启动后(将 /home 移至 /var),请执行以下操作:
# mkdir /home
# chmod 755 /home
确保创建您需要的任何 /home 目录 - 或者从 /var/.sav 目录复制它们。要执行后者,请在您的新的环境:
# rsync -Wav /var/.sav/ /home
还要注意,原来的 /var 仍会存在。如果它在已挂载的文件系统中,那么它将被隐藏,但仍会占用空间。
更新:针对以下问题,以下是有关从中恢复空间的一些想法/var
:
您可能不应该删除这些文件,直到您在更改后的环境中运行了一段时间并且旧环境不再需要任何内容为止。这只是为了安全起见。
此外,为了安全起见,您可能应该做两件事。在旧环境中,请执行以下操作:
# touch /var/var.old
# touch /home/var.new
这样,您就能一眼就看到两个几乎相同的坐骑,而且一眼就能分辨出哪个是哪个。
要真正删除数据,您需要能够访问旧分区中的数据。一旦您安装了新分区,/var
这些数据将无法直接访问。/var
有两种方法可以做到这一点:
在原始环境中,创建到 /var 的硬链接 (
ln /var /var.old
),然后在新环境中执行rm -rf /var.old/*
。我还没有尝试过,但有了硬链接,你应该可以做到仍然访问旧的/var
,而不是新的。通过查找进行验证var.old
(如果看到,var.new
则表示没有成功)。在恢复 shell 中,执行
mkdir /var.old ; mv /var/* /var.old
。启动新环境后,访问 下的数据/var.old
。
请注意,这两者都保存了/var
挂载所需的目录。