在一台我只能通过 ssh 和 vnc 访问的服务器上(这意味着无法从“实时” CD/DVD 启动),我想缩小分配给 /var 的分区(以便为其他分区释放一些空间)。有什么好的、安全的方法来做到这一点?
解决方案(基于 David Spillet 的回答,前提是您在 / 上有足够的空间来容纳 /var 的副本):
- 尽可能停止使用 /var 的一切操作
- 以只读方式重新挂载 /var,以获得更好的效果 mount -f -oremount,ro /var (对我来说似乎没有任何效果)
- 使用 mkdir /vartmp; cp -av /var/* /vartmp/ 将 /var 复制到 / 并以不同的名称命名
- 在 /etc/fstab 中注释掉 /var 的条目
- 重启
- 使用 mv /var /varmount; mv /vartmp /var 移动东西
- 重启,分区
- 取消注释 /etc/fstap 中 /var 的条目
- 重启
答案1
如果根分区上有空间容纳 /var 的内容,您可以:
/var
尽可能停止使用- 重新挂载 /var 只读以获得更好的效果
mount -f -oremount,ro /var
- 复制
/var
到/
不同的名称下mkdir /vartmp; cp -av /var/* /vartmp/
- 移动东西
mv /var /varmount; mv /vartmp /var
- 注释掉
/var
/etc/fstab
- 重启
现在,您应该已将文件/var
原样放置在根分区上,而不是其自身上。现在,您可以根据需要调整旧分区的大小。第 4 步应该允许您重命名目录,/var
即使它正在用作挂载点并且很忙(并且打开文件的进程将跟踪更改,因为打开的文件不是通过路径+名称引用,而是通过 inode 引用,一旦打开)。
如果你没有空间/
但是有,/someotherfs
那么你可以尝试使用符号链接将其移动到那里,/
如下所示:
/var
尽可能停止使用- 重新挂载 /var 只读以获得更好的效果
mount -f -oremount,ro /var
- 复制
/var
cp -av /var /someotherfs/var
- 移动东西
mv /var /varmount; ln -s /someotherfs/var /var
- 注释掉
/var
/etc/fstab
- 重启
但这稍微有点风险,因为您需要确保在启动/someotherfs
之前将其安装好。/var
如果您没有空间来临时复制它,您可以/var
通过删除缓存包之类的东西(aptitude clean
在 Debian 风格的设置中,毫无疑问有一个等效的yum
命令)、移动其他东西(例如,Debian 保留默认的 httpdocs,/var/www
因此如果它仍然存在并且您在其中有大量数据,请将其移动到另一个分区)以及删除不是最新的文件/var/log
(先备份,以防您以后需要参考它们)来减小大小。
正如 Zoredache 所说:无论您做什么,在继续之前请确保您对备份安排感到满意。
警告:以上所有内容均来自记忆,我没有在任何地方测试过,请自行承担风险!
答案2
传统方式是以单用户模式启动。这样,它/var
甚至不会被默认安装,所以你可以随心所欲地摆弄它。
答案3
- 停止任何可能使用 var 的服务(lsof | grep "/var")
- 卸载 /var
- 收缩/var
- 重新挂载 /var
- 重新启动您在 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