将 /var 和 /usr 移动到另一个 lvm - Centos 7

将 /var 和 /usr 移动到另一个 lvm - Centos 7

我需要将 /var 和 /usr 迁移到另一个 lv 以删除它今天使用的物理磁盘,有人知道我该怎么做吗?

  LV      VG     Attr       LSize    
  lvroot  rootvg -wi-ao----   10,00g
  lvusr   rootvg -wi-ao---- <110,00g
  lvvar   rootvg -wi-ao---- <123,90g

我正在考虑将 lvusr 和 lvvar 移动到 lvroot (如果需要,我可以扩展该磁盘),但我找不到它的步骤。

提前致谢

答案1

LVM 的优点在于,LV 就像流体一样,可以从一个 PV 倒入另一个 PV。看来您可以通过将lvusrlvvarLV 移动到另一个 PV 来实现您的实际目标。这可以在线实现,无需卸载任何东西。

另一种方法(将这些 LV 的内容移动到lvroot)将需要卸载lvusrlvvar,这很可能需要重新启动到紧急模式才能实现,因为在系统正常运行时卸载/usr/var不会成功。

如果您可以添加新的物理磁盘,则可以将它们添加到rootvg

<optionally partition the new disk>
pvcreate /dev/<disk or partition>
vgextend rootvg /dev/<disk or partition>

如果您可以扩展您希望保留的现有物理磁盘(例如 disk /dev/sdX)并且 LVM PV 位于磁盘上的最后一个分区(分区号 N),则可以在扩展磁盘后扩展现有 PV:

growpart /dev/sdXN   # or use gparted or similar
pvresize /dev/sdXN

或者,如果PV位于全盘设备上(例如/dev/sdX没有分区号),则可以在扩展磁盘后仅扩展PV:

pvresize /dev/sdX

或者,如果扩容磁盘已分区且PV不是最后一个分区,则可以使用添加的空间创建新分区,并将其添加到VG中:

fdisk /dev/sdX   # to create a new partition, e.g. /dev/sdXNN
pvcreate /dev/sdXNN
vgextend rootvg /dev/sdXNN

完成这 4 个过程中的任何一个之后,您rootvg现在应该有未分配的空间,如vgs或所示vgdisplay rootvg。要将 LV 从当前 PV 移动到可用空间,请使用pvmove

如果您不关心数据将被移动到哪里(或者 VG 中只有一大块可用空间),您可以简单地指定要将数据移出的 PV 的设备名称:

pvmove /dev/<old disk or partition containing a LVM PV>
vgreduce rootvg /dev/<old disk or partition containing a LVM PV>
pvremove /dev/<old disk or partition containing a LVM PV>

仅当所有 LV 数据已成功移走时,该vgreduce步骤才会继续:如果移动不成功,vgreduce将告诉您该 PV 仍在使用中,并拒绝从 rootvg 中删除该 PV。

如果需要,您可以为 pvmove 显式指定一个或多个目标 PV:

pvmove /dev/<old PV> /dev/<new PV that is already part of the same VG> ...

pvmove命令会将数据从旧 PV 移动到第一个新 PV,直到完全分配为止,然后根据需要按顺序移动到其他列出的 PV。 (是的,单个 LV 可以毫无问题地占用多个 PV。)

答案2

您真正想要的是“合并逻辑 LVM 卷”。它不能也不会在您的情况下工作,因为它们已经包含不同的数据,即文件系统。

您可以做的是删除不需要的逻辑卷,增加剩余的逻辑卷,移动数据(sudo mv source destination在 LiveCD 下),删除源逻辑卷,然后再次增加剩余的逻辑卷。

在尝试执行任何操作之前,请确保已备份所有内容。

相关内容