长话短说,有一个空间不足的 SVN VM(vmware 服务器)。我不能提交,因为它说空间不足。VM 有一个 80GB 的虚拟驱动器 (hda)、一个 /boot 分区和一个用于 / 的大 VG (VolGroup00)
我正在从磁盘归档和删除旧的 SVN 存储库,但我没有得到可用空间。我需要做什么才能让这个空间重新可供使用?我几乎在所有事情上都使用 Linux,但从来没有真正使用过 LVM 来了解发生了什么。
vg显示输出:
--- 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
从昨天开始,空间已经被释放...
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
lvs的输出
LV VG Attr LSize Origin Snap% Move Log Copy%
LogVol00 VolGroup00 -wi-ao 73.38G
LogVol01 VolGroup00 -wi-ao 1.00G
有些东西看起来仍然很奇怪,因为它说 959M 可用,但 67G 与 72G 大小一起使用......
所以我现在从删除存储库中恢复了空间......然而,宇宙中的平衡还没有恢复......
删除文件不会更改逻辑卷的大小(并且,通过扩展,不会影响卷组上的可用空间)。
您可以将卷组视为“虚拟磁盘”,并将其上的逻辑卷视为分区,但比常规分区更易于使用(调整大小、创建、删除)。
正如卡米尔所说,如果您在工作时遇到“空间不足”错误,那么直接出错的不是 LVM - 这是一个简单的文件系统错误,您可以确定哪个文件系统空间
df -h
不足,并删除足够的东西该文件系统最终将为您提供更多空间。但是,对于 LVM,如果您的文件系统有大量可用空间而另一个没有,您可以使用大量可用空间缩小 LV,然后将该空间分配给空间不足的 LV,从而使用您的更有效地分配磁盘。收缩和扩展文件系统的过程有点冒险(所以有备份),收缩阶段必须在未挂载的文件系统上完成(所以下降到单用户模式很好,你不能收缩根文件系统;如果你的文件系统支持它(XFS、reiser、最近的ext2/3)可以做在线扩展)。一般来说,流程是:
resize2fs /dev/mapper/VolGroup00-largeLV xG
)。将它缩小到更小的原因是因为如果你的数学错误并且将 LV 缩小到小于文件系统,你就会把它塞满。lvresize -L xG VolGroup00/largeLV
)resize2fs /dev/mapper/VolGroup00-largeLV
lvresize -L+nG VolGroup00/smallLV
resize2fs /dev/mapper/VolGroup00-smallLV
你现在应该到处都有足够的空间。
一些提示:
lvs
将列出您所有的 LV,以及它们的大小vgs
将让您快速显示所有 VG 的尺寸和可用空间祝你好运!
/dev/sda 是本地的还是在 SAN 上?如果它在 SAN 上,那么就有希望。如果它是本地的,并且正在使用所有可用空间,那么您将不得不通过删除文件来释放一些磁盘空间。
更新问题并让我们知道状态是什么。
编辑
啊,是虚拟机!你很幸运(如果主机上有可用空间,无论如何)。
在 VM 管理器中创建另一个与您希望的可用空间一样大的虚拟磁盘。然后将该磁盘映像呈现给 VM。
确保 VM 看到它(使用 dmesg 查看它是否显示)。假设它是,fdisk 它,并创建一个分区。
问题
“无论如何”显然是设备。可能是sdb。1 是您刚刚创建的分区。制作这个物理卷应该没有问题。
现在,运行
您可以使用 vgdisplay 来验证卷组现在是否有可用空间。现在,增加逻辑卷:
这应该扩展逻辑卷以填充卷组。
现在是棘手的部分。假设你有一个 ext3 文件系统,你应该能够实时调整大小:
(其中 volgroup 和 logicalvolume 是安装在 / 上的任何内容的实际路径)
它会说自从安装卷以来它正在进行实时调整大小,瞧,运行 df -h 应该显示您有可用空间。
卷组上的可用空间量不会改变。它全部由您格式化它的文件系统分配。删除文件只会从文件系统中删除它们的 inode 条目,但文件系统仍会占用空间。
回收卷组中空间的唯一方法是调整逻辑卷的大小或删除逻辑卷。
但是,您所描述的内容听起来就像您的磁盘空间不足。您应该检查
df -h
VM 中的输出,并查看存储库所在的卷上有多少可用空间。尝试重新启动您的 SVN 服务器。如果删除文件没有释放空间,那么它们一定仍在以某种方式使用。活动日志也会发生这种情况。我曾经有一些日志以每小时 10 mb 的速度增长,所以很快我就不得不删除日志,但是直到我重新启动涌入该日志的守护程序后它才释放空间。
编辑:我查了一下为什么会这样。似乎 linux/unix 引用计数文件,因此它们可以被删除,直到它们被所有打开它们的进程释放。