我有两个磁盘分区,分别是 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,您的流程将会像这样:
- 卸载 VG_GUESTS 上的卷。
- 使用 resize2fs 缩小使用 VG_GUESTS 的卷上的 ext3 fs。
- 使用 lvreduce 缩小 VG_GUESTS 上的 LV。
- 使用 pvresize 缩小 sda2 PV - 这可能会失败。
- 使用vgreduce刷新VG信息。
- 使用分区工具修改sda2的大小,并在空闲空间中创建sda3。
- 在 VG_GUESTS 上挂载卷。
- 将 sda3 添加到 VG_SYS。
- 使用 lvextend 扩展 VG_SYS 上的 LV。
- 使用 resize2fs 调整文件系统大小(应该可以在线工作,但您应该准备好从 LiveCD 启动)。
害怕了吗?如果你害怕,我已经成功地创造了正确的印象。因为这是在玩火。我敢打赌 5 美元,赌你的单打会出问题,你会丢失数据。
尝试缩小体积总是困难且危险的,最安全的方法实际上是采取一些更具破坏性的方法:
- 备份来宾音量。
- 卸载该卷。
- 使用 pvremove 从 sda2 中删除 PV。
- 使用分区工具将 sda2 的大小修改为您想要添加到 VG_SYS 的大小,然后使用将容纳新 VG_GUESTS 的剩余空间创建 sda3。
- 在 sda2 上创建新的 PV,然后将其添加到 VG_SYS。
- 使用 lvextend 扩展 VG_SYS 上的 LV。
- 使用 resize2fs 调整文件系统大小(应该可以在线工作,但您应该准备好从 LiveCD 启动)。
- 在 sda3 上创建 PV,然后在该 PV 上创建 VG,然后在该 VG 上创建 LV,然后在该 LV 上创建 ext3 fs,然后将其挂载到客户卷挂载点上。
- 将您的数据恢复到该新卷。
我故意省略了确切的命令,因为您应该在完全理解每个命令的作用的情况下执行此类操作,所以请阅读手册并祝您好运。
答案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
这大概是最安全的了。一定要备份!