如何将 LVM PV 扩展到磁盘的开头?

如何将 LVM PV 扩展到磁盘的开头?

我的服务器有 2TB 的磁盘,最初有人对其进行了如下分区:

  • 300GB 标准主分区用于操作系统文件(CentOS 7)。
  • 1.7TB LVM 具有一些相当大的逻辑卷 - 可满足其他需求。

由于操作系统文件的实际大小只有 400GB 左右,后来它被移动到 LVM 上它自己的逻辑卷,因此磁盘开头的这个 300GB 分区未被使用。

因此,我删除了这个分区,现在想以某种方式将 PV 的起始位置移动到磁盘的开头,这样它就会利用整个磁盘空间。但我找不到任何工具来做到这一点 -pvextend只能将 PV 扩展到磁盘末尾,而不能扩展到开头。

是的,我知道我可以将旧分区作为另一个 PV 添加到 VG,但在单个磁盘上有多个 PV 看起来很奇怪。

我也知道我可以将分区复制到某个外部设备或云存储,然后从头开始重新创建物理磁盘分区。但由于服务器停机时间较长,我不想这样做。

那么,有没有什么方法可以快速将 PV 扩展到磁盘的开头?

答案1

如果你现有的 PV 数据小于 300GB

如果现有的 PV 上的数据少于 300GB,那么您只需将这些数据重新定位到磁盘的前面,然后使用即可pvresize。首先,创建一个新的 pv:

pvcreate /dev/sda1

将数据从现有 pv 重新定位到新的 pv 上:

pvmove /dev/sda2 /dev/sda1

删除旧的 pv:

vgreduce myvg /dev/sda2

现在,使用partedfdisk或任何方法来调整大小/dev/sda1以覆盖整个磁盘,然后使用pvresize扩展 pv 以覆盖分区。

使用外部设备无需停机

您可以使用pvmove将数据迁移到其他设备没有任何服务器停机。您将创建一个新的 pv:

pvcreate /dev/sdb

将其添加到您的 vg:

vgextend myvg /dev/sdb

将数据从现有 pv 重新定位到新的 pv:

pvmove /dev/sda2 /dev/sdb

从卷中删除现有的 pv:

pvremove /dev/myvg /dev/sda2

现在,重新分区 /dev/sda,创建一个新的 pv,并逆转上述过程。

相关内容