如何重新分配两个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?

提前致谢

假设每个VG上有一个LV,你的过程就是这样的:

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

害怕了吗? 如果你是,我已经设法创造了正确的印象。 因为这是在玩火。 我可以打赌你的单身$ 5,有些事情会出错,你会失去你的数据。

而不是试图缩小总是困难和危险的数量,最安全的方法实际上是更具破坏性的:

  1. 备份客人的音量。
  2. 卸载音量。
  3. 用pvremove从sda2上取下PV。
  4. 使用分区工具将sda2的大小修改为您要添加到VG_SYS的大小,然后使用将容纳新的VG_GUESTS的剩余空间创buildsda3。
  5. 在sda2上创build新的PV,然后将其添加到VG_SYS。
  6. 用lvextend扩展LV在VG_SYS上。
  7. 使用resize2fs调整文件系统大小(应联机工作,但您应该准备从LiveCD启动)。
  8. 在sda3上创buildPV,然后在该PV上创buildPV,然后在该VG上创buildLV,然后在该LV上创buildext3 fs,然后将其挂载到来宾卷装入点上。
  9. 将数据恢复到新卷。

我故意省略了确切的命令,因为你应该完全理解每个命令所做的事情,所以RTFM和祝你好运。

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

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

这将是最安全的。 并确保你有备份!