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

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

在一台我只能通过 ssh 和 vnc 访问的服务器上(这意味着无法从“实时” CD/DVD 启动),我想缩小分配给 /var 的分区(以便为其他分区释放一些空间)。有什么好的、安全的方法来做到这一点?

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

  1. 尽可能停止使用 /var 的一切操作
  2. 以只读方式重新挂载 /var,以获得更好的效果 mount -f -oremount,ro /var (对我来说似乎没有任何效果)
  3. 使用 mkdir /vartmp; cp -av /var/* /vartmp/ 将 /var 复制到 / 并以不同的名称命名
  4. 在 /etc/fstab 中注释掉 /var 的条目
  5. 重启
  6. 使用 mv /var /varmount; mv /vartmp /var 移动东西
  7. 重启,分区
  8. 取消注释 /etc/fstap 中 /var 的条目
  9. 重启

答案1

如果根分区上有空间容纳 /var 的内容,您可以:

  1. /var尽可能停止使用
  2. 重新挂载 /var 只读以获得更好的效果mount -f -oremount,ro /var
  3. 复制/var/不同的名称下mkdir /vartmp; cp -av /var/* /vartmp/
  4. 移动东西mv /var /varmount; mv /vartmp /var
  5. 注释掉/var/etc/fstab
  6. 重启

现在,您应该已将文件/var原样放置在根分区上,而不是其自身上。现在,您可以根据需要调整旧分区的大小。第 4 步应该允许您重命名目录,/var即使它正在用作挂载点并且很忙(并且打开文件的进程将跟踪更改,因为打开的文件不是通过路径+名称引用,而是通过 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
  5. 注释掉/var/etc/fstab
  6. 重启

但这稍微有点风险,因为您需要确保在启动/someotherfs之前将其安装好。/var

如果您没有空间来临时复制它,您可以/var通过删除缓存包之类的东西(aptitude clean在 Debian 风格的设置中,毫无疑问有一个等效的yum命令)、移动其他东西(例如,Debian 保留默认的 httpdocs,/var/www因此如果它仍然存在并且您在其中有大量数据,请将其移动到另一个分区)以及删除不是最新的文件/var/log(先备份,以防您以后需要参考它们)来减小大小。

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

警告:以上所有内容均来自记忆,我没有在任何地方测试过,请自行承担风险!

答案2

传统方式是以单用户模式启动。这样,它/var甚至不会被默认安装,所以你可以随心所欲地摆弄它。

答案3

  1. 停止任何可能使用 var 的服务(lsof | grep "/var")
  2. 卸载 /var
  3. 收缩/var
  4. 重新挂载 /var
  5. 重新启动您在 1 处停止的服务。

答案4

单个用户是最安全的选择:

这些说明涵盖了在 Red Hat 7.x 系统上调整 var LV/FS 的大小

在进入单用户之前进行盘点:

# df -h /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg00-var   13G  6.2G  5.9G  52% /var

# vgs
  VG         #PV #LV #SN Attr   VSize   VFree
  vg00         1   7   0 wz--n- <39.51g <2.63g

# lvs | grep var
  var      vg00       -wi-ao---- <12.86g

启动到与您正在使用的平台相关的单用户模式。

注意:可通过 /sysroot 访问系统。

激活 vg00:

# lvm vgchange -ay vg00

重新创建LV设备文件:

# lvm vgmknodes -vv

# e2fsck -f /dev/vg00/var

为了安全起见,我们将 FS 减小到 8GB,然后将 LV 减小到 8.5GB(随后调整 FS 大小以填充它):

# /sysroot/sbin/resize2fs -p /dev/vg00/var 8G

一些调整大小的数学运算:

VG PE size: PE Size 4.00 MiB

4M * 1024K = 4096K

8.5G * 1024K * 1024K = 8,912,896K

8,912,89 / 4096 = 2176 PEs

注意:我最初收到以下错误,必须手动覆盖locking_type:“只读设置锁定类型。禁止写锁。”

# grep locking_type /etc/lvm/lvm.conf
locking_type = 4

降低 LV:

# lvm lvreduce -l 2176 /dev/vg00/var --config 'global {locking_type=1}'

重新执行调整大小以将 LV 容器填充到 8.5GB:

# /sysroot/sbin/resize2fs /dev/vg00/var

确认新尺寸:

# lvm lvs

# reboot

相关内容