我有一个逻辑卷,/dev/echohome/home01
它具有三个物理卷:/dev/sda1, /dev/sdb1, /dev/sdc1
sda1 为 4TB,有 0 个可用扩展区;sdb1 为 4TB,有 476930 个可用扩展区;sdc1 为 1TB,有 0 个可用扩展区
当前 ext4 文件系统在 3.1TB 时已满约 45%。逻辑卷大小为 6.37TB。
我想将所有数据移动到 sda1 或 sdb1,然后删除其他两个 PV。根据我所做的阅读,我可以尝试将resize2fs pvmove
和进行一些组合,lvreduce
以可能实现我正在寻找的目标。
我在其他问题中似乎没有解决的具体细节是我试图保留的数据的物理位置 - 如果我不知道文件物理驻留在哪个 PV 上,我如何才能自信地resize2fs
然后最终pvremove
?
编辑:我认为最简单的解决方案可能是将整个文件系统备份到更大的磁盘,缩小它,然后将其移回重新配置的 LV,但我目前没有多余的磁盘空间。 :(
答案1
我在其他问题中似乎没有解决的具体细节是我试图保留的数据的物理位置 - 如果我不知道文件物理驻留在哪个 PV 上,我如何才能自信地
resize2fs
然后最终pvremove
?
你不需要知道这一点。这就是 LVM 的工作。 resize2fs 作用于逻辑卷,允许跨越多个磁盘。一旦您的文件系统小到足以容纳一个磁盘,您就可以告诉 LVM 将其移动,并删除其他磁盘。
执行此操作有五个步骤。
将文件系统的大小减少到 4TB 以下。 (
resize2fs
)将逻辑卷的大小减少到 4TB 以下。 (
lvreduce
)(这一步可能会丢失数据如果您将逻辑卷截断为小于文件系统,请阅读联机帮助页!)
将逻辑卷移离每个驱动器。 (
pvmove <source pv> <dest pv>
)(您需要一次执行一张磁盘。)
取出磁盘。 (
vgreduce
然后pvremove
)(可选)如果您在步骤 2 中使逻辑卷大于文件系统,请扩展文件系统以使用整个逻辑卷,这样就不会浪费空间。 (
resize2fs
)