将 LVM 卷组从一个物理磁盘移动到另一个物理磁盘

her*_*er0 5 linux xen lvm

我是一名资深的 PHP 开发人员,必须处理以下系统管理问题。

我们有一个运行 Xen (xen-hypervisor-4.4-amd64 4.4.0-0ubuntu5.1) 的 Ubuntu (Ubuntu 14.04.1 LTS) 服务器。

它有两个物理磁盘(250GB 和 2TB),每个磁盘都包含一个 LVM 文件系统(/dev/sdb 是旧的 250GB,/dev/sda 是新的 2TB)。

root@xen:~# pvscan
  PV /dev/sdb3   VG tiffany-vg   lvm2 [232.17 GiB / 85.48 GiB free]
  PV /dev/sda5   VG xen-vg       lvm2 [1.82 TiB / 1.77 TiB free]
  Total: 2 [2.05 TiB] / in use: 2 [2.05 TiB] / in no VG: 0 [0   ]
Run Code Online (Sandbox Code Playgroud)

我需要将组“tiffany-vg”移动到新的/更大的磁盘 (/dev/sda),目的是从服务器中删除旧的 250GB 物理磁盘。目标磁盘已包含另一个名为“xen-vg”的 LVM 组,该组必须保持独立。

我想将“tiffany-vg”移动到 /dev/sda 上的“xen-vg”旁边,我真的需要不要丢失任何数据!我真的不想造成任何数据丢失吗?

我可能用错了一些术语,我相信你明白我想说的。

更新:

“目标”磁盘(/dev/sda)当前看起来像这样......

root@xen:~# parted /dev/sda
#...snip
Number  Start   End     Size    Type      File system  Flags
 1      1049kB  256MB   255MB   primary   ext2         boot
 2      257MB   2000GB  2000GB  extended
 5      257MB   2000GB  2000GB  logical                lvm
Run Code Online (Sandbox Code Playgroud)

pet*_*erh 5

卷组可以有多个物理磁盘(或者在您的情况下是分区)。

首先,您的较大磁盘上需要有空间 ( /dev/sda)。

您在帖子中没有提到这一点,但根据您的问题,我假设您可以腾出空间,然后添加一个我们将调用的新分区:/dev/sdaX

更新后扩展:

您可以/dev/sda通过简单地合并卷组来腾出空间,但您不想这样做 - 正如您在原始帖子中所述。你需要做的实际上比这更简单。

按着这些次序:

步骤-5:减少物理卷,/dev/sda5为新分区腾出空间:

pvresize /dev/sda5 -L 1500G
Run Code Online (Sandbox Code Playgroud)

步骤-4:使用parted将大小减小/dev/sda5到1600G(是的,比我们使用的大一点pvresize!)

步骤-3:使用新的可用空间(大约400G)parted创建一个新分区。/dev/sda6

步骤-2:检查内核是否能够自动检测分区变化。查看是否/proc/partition与新状态匹配(因此/dev/sda6可见)。如果没有,您需要重新启动。(可能会的。)

步骤-1:您可以/dev/sda5再次使其变得尽可能大:

 pvresize /dev/sda5
Run Code Online (Sandbox Code Playgroud)

步骤0:格式化/dev/sda6为物理卷:

pvcreate /dev/sda6
Run Code Online (Sandbox Code Playgroud)

从这一点来说,/dev/sda6就是我们的/dev/sdaX

延长端

首先:你应该给/dev/sdaX卷组tiffany-vg

vgextend tiffany-vg /dev/sdaX
Run Code Online (Sandbox Code Playgroud)

其次:您应该在卷组 tiffany-vg 的(已经)两个物理卷之间移动所有数据:

pvmove tiffany-vg /dev/sdb3 /dev/sdaX
Run Code Online (Sandbox Code Playgroud)

/dev/sdb3第三:您应该从 tiffany-vg 卷组中删除:

vgreduce tiffany-vg /dev/sdb3
Run Code Online (Sandbox Code Playgroud)

注意:上面的第二步有点关键,请保持好奇。如果它是根分区,最好从救援光盘执行此操作。祝你好运!

如果您只是合并卷组

第 1 步:您只需将其合并xen-vg到您的tiffany-vg

vgmerge tiffany-vg xen-vg
Run Code Online (Sandbox Code Playgroud)

第 2 步:将所有数据从/dev/sdb3移至/dev/sda5

pvmove tiffany-vg /dev/sdb3 /dev/sda5
Run Code Online (Sandbox Code Playgroud)

/dev/sdb3步骤 3:从新的大卷组中删除:

vgreduce tiffany-vg /dev/sdb3
Run Code Online (Sandbox Code Playgroud)

但请注意:您的旧xen-vg卷组在这里结束了他的生命,并且其所有卷都移到了下面/dev/tiffany-vg。您需要更改系统配置中对它们的每个引用(您不太可能需要更改任何内容/etc/fstab)。

结尾

  • 彼得,非常感谢你的帮助。我合并了卷组。先生,您真是钻石啊! (2认同)