如何在两个 LVM VG 之间重新分配空间?

如何在两个 LVM VG 之间重新分配空间?

我有两个磁盘分区,分别是 sda1 和 sda2,每个分区包含一个 VG。

  • sda1->VG_SYS
  • sda2->VG_GUESTS

VG_SYS 有多个 LV,我需要的每个分区都有一个。

问题是 VG_SYS 已经没有空间了(或者更好的是,在其 LV 上创建的分区已经没有空间了),而 VG_GUESTS 有大量可用空间。

是否有可能以及如何缩小 VG_GUESTS(最终也缩小 sda2)并将可用空间重新分配给 sda1/VG_SYS?

提前致谢

答案1

假设每个 VG 上有一个 LV,您的流程将会像这样:

  1. 卸载 VG_GUESTS 上的卷。
  2. 使用 resize2fs 缩小使用 VG_GUESTS 的卷上的 ext3 fs。
  3. 使用 lvreduce 缩小 VG_GUESTS 上的 LV。
  4. 使用 pvresize 缩小 sda2 PV - 这可能会失败。
  5. 使用vgreduce刷新VG信息。
  6. 使用分区工具修改sda2的大小,并在空闲空间中创建sda3。
  7. 在 VG_GUESTS 上挂载卷。
  8. 将 sda3 添加到 VG_SYS。
  9. 使用 lvextend 扩展 VG_SYS 上的 LV。
  10. 使用 resize2fs 调整文件系统大小(应该可以在线工作,但您应该准备好从 LiveCD 启动)。

害怕了吗?如果你害怕,我已经成功地创造了正确的印象。因为这是在玩火。我敢打赌 5 美元,赌你的单打会出问题,你会丢失数据。

尝试缩小体积总是困难且危险的,最安全的方法实际上是采取一些更具破坏性的方法:

  1. 备份来宾音量。
  2. 卸载该卷。
  3. 使用 pvremove 从 sda2 中删除 PV。
  4. 使用分区工具将 sda2 的大小修改为您想要添加到 VG_SYS 的大小,然后使用将容纳新 VG_GUESTS 的剩余空间创建 sda3。
  5. 在 sda2 上创建新的 PV,然后将其添加到 VG_SYS。
  6. 使用 lvextend 扩展 VG_SYS 上的 LV。
  7. 使用 resize2fs 调整文件系统大小(应该可以在线工作,但您应该准备好从 LiveCD 启动)。
  8. 在 sda3 上创建 PV,然后在该 PV 上创建 VG,然后在该 VG 上创建 LV,然后在该 LV 上创建 ext3 fs,然后将其挂载到客户卷挂载点上。
  9. 将您的数据恢复到该新卷。

我故意省略了确切的命令,因为您应该在完全理解每个命令的作用的情况下执行此类操作,所以请阅读手册并祝您好运。

答案2

你可能想要类似的东西。但是,请记住,它假设您只是要从 VG 中完全删除 PV,而不是尝试缩小它。我怀疑要执行您想要的操作,您需要第三个分区(可能在可移动 USB 驱动器上)用作临时存储。假设它是 /dev/sdb1,您可以执行以下操作:

  • 在 /dev/sdb1 上创建一个新的临时逻辑组(例如,VG_TEMP)
  • 将所有 LV 从 VG_GUESTS 复制到 VG_TEMP
  • 删除 /dev/sda2
  • 扩展/dev/sda1
  • 重新创建 /dev/sda2,将其作为 PV 重新添加到 VG_GUESTS
  • 将所有 LV 从 VG_TEMP 复制回 VG_GUESTS

这大概是最安全的了。一定要备份!

相关内容