在我的内联网服务器上,我有一个 100.00 GiB 的分区 /dev/sda5,我将其用作 lvm2 的物理卷。
- 这是我的卷组 vg01 中唯一的物理卷。
- vg01 当前包含一个逻辑卷 lv01,使用了完整的 100.00 GiB - 嗯,由于一些四舍五入,实际上是 99.99 GiB(问题就出在这里)。
- lv01包含一个ext3文件系统,使用整个空间。
我想将 lv01 减少到大约 97 GiB,这样我就可以创建大约 3 GiB 的 lv02(我需要它来拍摄 lvm 快照)。
我目前所做的:
e2fsck -f /dev/mapper/vg01-lv01
resize2fs /dev/mapper/vg01-lv01 97G
效果很好。但现在我必须跑了
lvreduce --size ? /dev/mapper/vg01-lv01
我不确定精确的我必须指定值。lvreduce
手册页明确警告,结果大小不得小于文件系统。我也不想让它大于它必须的大小。但现在我有不同的数字:
- 我
97G
在 resize2fs 中指定了。 df -h
说是 96 G。df
说的是,它是 100115936 个 1K 块。- lvdisplay(当然)仍然报告逻辑卷的 99.99 GiB。
我必须指定什么lvreduce
?
编辑:
目前接受的答案提供了一个很好的解决方法。但是,为了将这些东西集成到可靠的脚本等中,我通常更愿意使用精确的测量。或者也许已经有一个可靠的(!)脚本或工具可以一步完成整个调整大小的过程?
答案1
根据我的经验,LVM 和 resize2fs 对于“97G”的含义有相同的想法,因此在两个地方指定相同的大小应该没问题。但是,我很偏执,并且尽可能地使用问题评论中 larsks 建议的策略,将大小调整为比我想要的要小 1 GB,将 lvresize 调整为我想要的大小,然后重新运行 resize2fs(不指定大小)以使其重新扩展以填满整个 LV。
答案2
我认为最好使用 lvreduce/lvresize 的 --resizefs 选项来完成此操作:
-r, --resizefs
Resize underlying filesystem together with the logical volume using fsadm(8).
诚然,这对你没有帮助现在但将来可能会如此。