卷组空间不足。我如何收回它?

Dan*_*tep 4 linux svn lvm

说来话长,有一个空间不足的 SVN VM(vmware 服务器)。我无法提交,因为它说空间不足。VM 连接了一个 80GB 的虚拟驱动器 (hda)、一个 /boot 分区和一个大 VG (VolGroup00),用于 /

我正在归档并从磁盘中删除旧的 SVN 存储库,但我没有获得可用空间。我需要做什么才能让这个空间重新可用?我几乎所有的东西都使用 Linux,但从来没有真正使用过 LVM 来了解发生了什么。

vgdisplay 输出:

--- Volume group ---
VG Name               VolGroup00
System ID             
Format                lvm2
Metadata Areas        1
Metadata Sequence No  3
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                1
Act PV                1
VG Size               74.41 GB
PE Size               32.00 MB
Total PE              2381
Alloc PE / Size       2380 / 74.38 GB
Free  PE / Size       1 / 32.00 MB
VG UUID               dPSZpL-kFBn-HpkH-ChfO-dw9q-YGg2-qHOiQF
Run Code Online (Sandbox Code Playgroud)

从昨天开始,空间已经被释放了......

df -h 的输出

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       72G   67G  959M  99% /
/dev/hda1              99M   15M   80M  16% /boot
tmpfs                  62M     0   62M   0% /dev/shm
Run Code Online (Sandbox Code Playgroud)

lvs 的输出

LV       VG         Attr   LSize  Origin Snap%  Move Log Copy% 
LogVol00 VolGroup00 -wi-ao 73.38G                              
LogVol01 VolGroup00 -wi-ao  1.00G
Run Code Online (Sandbox Code Playgroud)

有些东西看起来仍然很奇怪,因为它说 959M 可用,而 67G 使用 72G 大小......

所以我现在从删除存储库中获得空间......然而,宇宙中的平衡尚未恢复......

wom*_*ble 9

删除文件不会改变逻辑卷的大小(并且,通过扩展,不会影响卷组上的可用空间)。

您可以将卷组视为“虚拟磁盘”,其上的逻辑卷就像分区,但与常规分区相比,它们更易于使用(调整大小、创建、删除)。

正如 Kamil 所说,如果您在工作时遇到“空间不足”错误,则不是 LVM 直接出错——这是一个简单的文件系统错误,您可以使用 确定哪个文件系统空间df -h不足,并删除足够多的内容该文件系统最终将为您提供更多空间。但是,对于 LVM,如果您的文件系统有大量可用空间而另一个没有可用空间,则可以使用大量可用空间缩小 LV,然后将该空间分配给空间不足的 LV,从而使用您的更有效地分配磁盘。

收缩和扩展文件系统的过程有点冒险(所以有备份),收缩阶段必须在未挂载的文件系统上完成(所以降到单用户模式是好的,你不能收缩根文件系统;如果你的文件系统支持它(XFS,reiser,最近的ext2/3)你可以做在线扩展)。一般来说,流程是:

  1. 将您要从中删除空间的文件系统缩小到比您希望它最终得到的大小略小的大小(例如resize2fs /dev/mapper/VolGroup00-largeLV xG)。将它缩小到更小的原因是因为如果你的数学错误并且将 LV 缩小到小于文件系统,你就会把它塞满。
  2. 将要从中删除空间的 LV 缩小到所需的大小 ( lvresize -L xG VolGroup00/largeLV)
  3. 将该 LV 上的文件系统增长到 LV 的新大小: resize2fs /dev/mapper/VolGroup00-largeLV
  4. 将太小的 LV 种植到新的、更大的尺寸: lvresize -L+nG VolGroup00/smallLV
  5. 将太小的 LV 上的文件系统扩大到新的、更大的尺寸: resize2fs /dev/mapper/VolGroup00-smallLV

你现在应该到处都有足够的空间。

一些提示:

  • lvs 将列出您所有的 LV 及其大小
  • vgs 将为您提供所有 VG 大小和可用空间的快速显示
  • 如果您的交换是在 LVM 上,那么如果机器不太努力地工作,那通常是获得一些临时可用空间的好地方。

祝你好运!