调整 lvm2 逻辑卷和文件系统的大小:确切大小?

Chr*_*her 10 ext3 lvm

在我的 Intranet 服务器上,我有一个 100.00 GiB 的分区 /dev/sda5,我将其用作 lvm2 的物理卷。

  • 它是我的卷组 vg01 中唯一的物理卷。
  • vg01 当前包含一个逻辑卷 lv01,使用完整的 100.00 GiB - 好吧,实际上是 99.99 GiB 由于一些舍入(这就是问题开始的地方)。
  • lv01 包含一个 ext3 文件系统,使用整个空间。

我想将 lv01 减少到大约 97 GiB,所以我可以创建大约 lv02。3 GiB(我需要它来拍摄 lvm 快照)。

到目前为止我做了什么:

e2fsck -f /dev/mapper/vg01-lv01
resize2fs /dev/mapper/vg01-lv01 97G
Run Code Online (Sandbox Code Playgroud)

这很有效。但现在我得跑了

lvreduce --size ? /dev/mapper/vg01-lv01
Run Code Online (Sandbox Code Playgroud)

而且我不确定,我必须指定哪个确切值。该lvreduce手册页明确警告说,所产生的大小不能大于文件系统更小。我也不想让它变得比它必须的更大。但现在我有不同的数字:

  • 97G在 resize2fs 中指定。
  • df -h 说,它是 96 G。
  • df 说,它是 100115936 个 1K 块。
  • lvdisplay(当然)仍然报告逻辑卷的 99.99 GiB。

我必须指定lvreduce什么?

编辑:

当前接受的答案提供了一个很好的解决方法。然而,为了将这些东西集成到可靠的脚本等中,我通常更喜欢使用精确的测量来代替。或者也许已经有一个可靠的 (!) 脚本或工具可以一步执行整个调整大小过程?

mjk*_*mjk 14

我认为最好使用 lvreduce/lvresize 的 --resizefs 选项来完成:

   -r, --resizefs
          Resize underlying filesystem together with the logical volume using fsadm(8).
Run Code Online (Sandbox Code Playgroud)

诚然,这现在对您没有帮助,但将来可能会有所帮助。


wom*_*ble 5

根据我的经验,LVM 和 resize2fs 对“97G”的含义有相同的想法,因此在两个地方指定相同的大小应该没问题。但是,我很偏执,并且在可能的情况下始终使用 larsks 在问题评论中建议的策略,并将大小调整为比我想要的小 1 GB,将 lvresize 设置为我想要的大小,然后重新运行 resize2fs(没有大小)让它膨胀回来填满整个 LV。