调整远程系统上的/ var分区(Linux Debian Lenny)

在我只能通过ssh和vnc访问的服务器上(这意味着不能从“live”CD / DVD启动),我想缩小分配给/ var的分区(为了释放一些空间用于额外的分区)。 什么是一个好的,安全的方法来做到这一点?

解决scheme(基于David Spillet的回答,前提是您有足够的空间来容纳/ var副本):

  1. 停止任何使用/ var的地方
  2. remount / var readonly好的措施mount -f -oremount,ro / var(似乎对我没有任何影响)
  3. 使用mkdir / vartmp将/ var复制到/以不同的名称; cp -av / var / * / vartmp /
  4. 注释掉/ etc / fstab中的/ var条目
  5. 重启
  6. 用mv / var / varmount移动东西; mv / vartmp / var
  7. 重启,分区
  8. 取消注释/ etc / fstap中的/ var项
  9. 重启

如果你的root分区上有/ var的内容,你可以:

  1. 停止任何使用/var地方
  2. 重新装入/ var只读好的措施mount -f -oremount,ro /var
  3. 使用mkdir /vartmp; cp -av /var/* /vartmp/复制/var/以不同的名称mkdir /vartmp; cp -av /var/* /vartmp/ mkdir /vartmp; cp -av /var/* /vartmp/
  4. mv /var /varmount; mv /vartmp /var移动东西mv /var /varmount; mv /vartmp /var mv /var /varmount; mv /vartmp /var
  5. 注释掉/etc/fstab /var条目
  6. 重启

你现在应该把/var作为你的根分区而不是它自己的。 您现在可以根据需要调整旧分区的大小。 第4步应该让你重新命名/var目录,即使它正在作为一个挂载点使用,否则忙碌(和处理打开的文件将跟踪更改作为打开的文件不被path+名称引用,而是通过inode,一旦打开)。

如果你没有空间/但是做了/someotherfs事情,那么你可以尝试在/使用符号链接来移动它。

  1. 停止任何使用/var地方
  2. 重新装入/ var只读好的措施mount -f -oremount,ro /var
  3. 复制/varcp -av /var /someotherfs/var
  4. mv /var /varmount; ln -s /someotherfs/var /var移动东西mv /var /varmount; ln -s /someotherfs/var /var mv /var /varmount; ln -s /someotherfs/var /var
  5. 注释掉/etc/fstab /var条目
  6. 重启

这个风险稍微高一点,因为在启动时需要确保/var/var之前挂载。

如果你暂时没有空间来拷贝它,你可以通过删除caching包(Debian风格的aptitude clean ,毫无疑问是一个相当于yum命令)来减小/var的大小,移动其他的东西(例如,Debian将默认的httpdocs保存在/var/www ,如果它仍然存在,并且你有大量的数据,将它移动到另一个分区),并从/var/log中删除文件不是最近的(先支持起来,以防晚些时候需要引用)。

正如Zoredache所说:无论你做什么,在继续操作之前,确保你对备份安排感到满意。

警告:以上所有内容均来自内存,我没有在任何地方进行testing,请自行承担风险!

传统的方式是以单用户模式启动 。 这样,默认情况下甚至不会挂载/var ,所以你可以随意使用它。

  1. 停止可能使用var(lsof | grep“/ var”)的任何服务
  2. umount / var
  3. 收缩/ var
  4. 重新安装/ var
  5. 重新启动您在1停止的服务。