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


10

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

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

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

到目前为止,我做了什么:

e2fsck -f /dev/mapper/vg01-lv01
resize2fs /dev/mapper/vg01-lv01 97G

效果很好。但是现在我必须跑步

lvreduce --size ? /dev/mapper/vg01-lv01

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

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

我要指定lvreduce什么?

编辑:

当前接受的答案提供了一个不错的解决方法。但是,为了将这些内容集成到实体脚本等中,我通常更喜欢使用精确的度量。还是已经有一个可靠的(!)脚本或工具可以一步完成整个调整大小的过程?


3
您可以使用resize2fs将文件系统减小到90GiB左右,然后在lvreduce(后面加上resize2fs)的参数进行混搭,以了解最有效的方法。
larsk 2011年

@larsks:好主意(因为resize2fs可以自动调整为分区大小,而lvreduce不能自动调整为fs大小)。如果没有人知道我的问题的确切答案,我认为这将是解决方案。
克里斯·勒彻

为什么不只是将相同的大小传递给lvreduce?除非您输入错字,否则lvm应该识别出它的大小相同,而不是再次调整大小。而且,如果您确实有错别字,至少可以避免破坏文件系统。lvreduce -r -L 97G / dev / mapper / vg01-lv01
比尔

Answers:


5

以我的经验,LVM和resize2fs对“ 97G”的含义有相同的想法,因此在两个地方指定相同的大小应该没问题。但是,我很偏执,总是尽可能使用Larsks在问题注释中建议的策略,并将其调整为比我想要的大小小1 GB,将lvresize调整为我想要的大小,然后重新运行resize2fs(不使用大小)以使其扩展回以填充整个LV。


我认为,在这里要“偏执”很重要-因为不仅有可能损坏当前文件:如果文件系统大于LV,我认为它可以随时破坏以下卷在将来。
克里斯·勒彻

不,LVM将禁止任何超出LV末尾的写操作,因此不会损坏其他LV。但是,如果文件系统被截断,则确实会导致灾难性的后果。
womble

很有意思-我不知道它会检查每一次写入!很高兴知道。
克里斯·勒彻

14

我认为最好使用--resizefs选项设置lvreduce / lvresize:

   -r, --resizefs
          Resize underlying filesystem together with the logical volume using fsadm(8).

诚然,这现在对您无济于事,但将来可能会有所帮助。


那就是我想要的!但是,它似乎是一个新选项:它在2.02.74(2)-RHEL版本中,但是在我的LVM工具的2.02.66版本中缺少。
克里斯·勒彻

1
当我已经使用其他工具调整了fs的大小时,此选项取消了通常的警告,并显示了消息“文件系统已经足够3932160个块了。什么都不做!” 随心所欲。
D Coetzee

即使在2020年,Google在其第一个搜索结果页面上提出的有关扩展/收缩lvm卷的几本教程也都没有提及此选项。非常感谢!
伊万·沙茨基
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.