在 Proxmox 中,我们使用 LVM 为我们的虚拟机创建磁盘(逻辑卷)(LVM 精简配置)。
最近我们发现,即使所有 VM 磁盘都几乎为空,我们的卷组也几乎已满。
问题是一些 LVM 分区显示的映射大小比 df 报告的 VM 磁盘上存储的实际数据大小大得多。
例如,我们的虚拟机有 100 GB 的逻辑卷。虚拟机内的磁盘使用情况显示仅使用了 3.2 GB 的空间:
#> df
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/pve-vm--3011--disk--1 99G 3.2G 91G 4% /
...
但主机上的逻辑卷显示它使用了 39.8 GB:
#> lvdisplay
--- Logical volume ---
LV Path /dev/pve/vm-3011-disk-1
LV Name vm-3011-disk-1
VG Name pve
LV UUID oleKd5-O2o4-c4CE-5vzn-bXRC-TXwF-lzApmW
LV Write Access read/write
LV Creation host, time carol, 2016-08-16 09:03:54 +0200
LV Pool name vm-hdd
LV Status available
# open 1
LV Size 100.00 GiB
Mapped size 39.83%
Current LE 25600
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 251:28
...
因此实际上使用的空间比实际需要的多十倍以上。
知道原因是什么吗?我怀疑 LVM 保留了文件系统在 VM 中触及的所有扩展区的分配。有什么方法可以防止这种情况或收回未使用的空间吗?
答案1
明白了。你必须使用fstrim
。
我可以通过在 VM 内部运行以下命令来回收未使用的空间:
fstrim -v /
根据章节中描述的解决方案使用 fstrim 增加精简池 LV 中的可用空间这里:http://man7.org/linux/man-pages/man7/lvmthin.7.html