我需要向我的 CentOS VM 添加更多磁盘空间,因此我添加了另一个虚拟磁盘,然后使用 lvextend 将空间添加到现有分区。
我遵循的步骤是:
echo "- - -" > /sys/class/scsi_host/host0/scan
pvcreate /dev/sdb
vgextend VolGroup00 /dev/sdb
lvextend -l +100%FREE /dev/VolGroup00/LogVol00
resize2fs /dev/VolGroup00/LogVol00
这很有效。我随后填满了虚拟机,然后删除了大部分已使用的磁盘空间。然而,在我删除所有文件后,未使用的磁盘空间再也没有恢复。
这将更好地说明我的意思:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
61G 32G 26G 56% /
/dev/sda1 99M 20M 75M 21% /boot
tmpfs 1006M 0 1006M 0% /dev/shm
# pwd; du -h --max-depth=0
/
5.1G .
我不知道如何让分区显示只使用了 5.1 GB。你知道我做错了什么吗?
答案1
运行du -sh /
并比较输出结果df -h
。我敢打赌,使用的空间会有很大差异。
重新启动服务器或终止任何打开了您删除的文件的进程。可能存在打开的文件描述符,这些文件描述符使空间标记为不可用。检查lsof |grep /volume
(volume
您要检查的卷在哪里)或只是lsof +L1
,您可能会看到您删除的文件仍被视为打开的。
我不想建议“只需重新启动它”,但如果有很多打开的文件描述符,这可能是最简单的方法。
答案2
在 Redhat 6 上工作。
开始之前刷新文件系统设备的缓冲区缓存。
resize2fs -F
扩展和调整大小:
lvextend -L4G /dev/$VGNAME/$LVNAME
resize2fs -F /dev/$VGNAME/$LVNAME