LVM 命令 - 在两个磁盘之间复制 LV

LVM 命令 - 在两个磁盘之间复制 LV

我想简单地将 LV 从一个磁盘复制到另一个磁盘,但听起来很简单,经过大量谷歌搜索后,找到正确的流程对我来说变得非常抽象。所以我认为我需要朝着正确的方向努力。

-如何将 lv.root 移动到 md10,我得到提示,我需要扩展 vg.system 以覆盖 md10 和 md20,然后复制 lv。vg* 和 lv* 命令有很多种可能性,我不确定哪一个最适合此目的。

現象是:

NAME                     MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                        8:0    0 119.2G  0 disk  
|-sda1                     8:1    0     9M  0 part  
`-sda2                     8:2    0 119.2G  0 part  
  `-md0                    9:0    0 119.2G  0 raid1 
    |-vg.system-lv.root  253:0    0    30G  0 lvm   /
    `-vg.system-lv.cache 253:1    0    80G  0 lvm   /mnt/cdn-cache
sdb                        8:16   0 119.2G  0 disk  
|-sdb1                     8:17   0     9M  0 part  
|-sdb2                     8:18   0  29.3G  0 part  
| `-md10                   9:10   0  29.3G  0 raid1 
`-sdb3                     8:19   0    90G  0 part  
  `-md20                   9:20   0  89.9G  0 raid0 

预期结果应该类似于 cca:

NAME                     MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                        8:0    0 119.2G  0 disk  
|-sda1                     8:1    0     9M  0 part  
`-sda2                     8:2    0 119.2G  0 part  
  `-md0                    9:0    0 119.2G  0 raid1 
    |-vg.system-lv.root  253:0    0    30G  0 lvm   /
    `-vg.system-lv.cache 253:1    0    80G  0 lvm   /mnt/cdn-cache
sdb                        8:16   0 119.2G  0 disk  
|-sdb1                     8:17   0     9M  0 part  
|-sdb2                     8:18   0  29.3G  0 part  
| `-md10                   9:10   0  29.3G  0 raid1
       vg.system-lv.root   
`-sdb3                     8:19   0    90G  0 part  
  `-md20                   9:20   0  89.9G  0 raid0 
     -vg.system-lv.cache   

我猜目的并不是那么重要,但以防万一 - 稍后我将格式化 sda2 并以与 sdb 相同的方式对其进行分区,然后将磁盘合并到准备好的 raid 池中,以期望从缓存分区获得更高的性能。

编辑:谢谢大家,我意识到尺寸略有偏差,所以我纠正了它,现在它完全匹配,奇怪的是尺寸不同 -

NAME                     MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                        8:0    0 119.2G  0 disk  
|-sda1                     8:1    0     9M  0 part  
`-sda2                     8:2    0 119.2G  0 part  
  `-md0                    9:0    0 119.2G  0 raid1 
    |-vg.system-lv.root  253:0    0    30G  0 lvm   /
    `-vg.system-lv.cache 253:1    0    80G  0 lvm   /mnt/cdn-cache
sdb                        8:16   0 119.2G  0 disk  
|-sdb1                     8:17   0    10M  0 part  
|-sdb2                     8:18   0    30G  0 part  
| `-md10                   9:10   0    30G  0 raid1 
`-sdb3                     8:19   0  80.1G  0 part  
  `-md20                   9:20   0    80G  0 raid0 

  PV Name               /dev/md0
  VG Name               vg.system
  PV Size               119.17 GiB / not usable 1.31 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              30507
  Free PE               2347
  Allocated PE          28160
  PV UUID               97qFfS-qcNo-Wp8W-QfWj-Ilqx-e7Jw-uMLXX7

  --- Physical Segments ---
  Physical extent 0 to 7679:
    Logical volume  /dev/vg.system/lv.root
    Logical extents 0 to 7679
  Physical extent 7680 to 28159:
    Logical volume  /dev/vg.system/lv.cache
    Logical extents 0 to 20479
  Physical extent 28160 to 30506:
    FREE

  --- Physical volume ---
  PV Name               /dev/md10
  VG Name               vg.system
  PV Size               30.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              7679
  Free PE               7679
  Allocated PE          0
  PV UUID               gLYsRF-kNlb-F7c9-9BS5-Xi05-pfCY-z093pb

  --- Physical Segments ---
  Physical extent 0 to 7678:
    FREE

  --- Physical volume ---
  PV Name               /dev/md20
  VG Name               vg.system
  PV Size               80.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              20479
  Free PE               20479
  Allocated PE          0
  PV UUID               vYljv8-tNc3-9jdE-p5rk-eI3y-8FVs-l1bCSF

  --- Physical Segments ---
  Physical extent 0 to 20478:

奇怪。我设法使用

pvmove -v -n lv.cache /dev/md20 /dev/md0

之前,然后我甚至将它放回 md0,因为之后我使用 gparted 来调整磁盘大小,以便总 PE 计数匹配并且没有发生溢出并继续。

我现在有两个问题。上面的命令不再起作用

pvmove -v -n lv.cache /dev/md20 /dev/md0
    Cluster mirror log daemon is not running.
    Wiping internal VG cache
    Wiping cache of LVM-capable devices
    Archiving volume group "vg.system" metadata (seqno 28).
    Creating logical volume pvmove0
  No data to move for vg.system

而且我也有点担心尺寸上的轻微不匹配,即 80G 到 80.1G,会在稍后组装到 RAID 池时产生问题 :/ 不确定为什么尺寸不同而总 PE 完全相同。

答案1

我认为,通过创建新卷并简单地复制数据可能会比尝试以下操作更好:

步骤大致如下(当然,没有经过测试,所以首先检查数据备份):

  • 将新的块设备转换为适合 LVM 的存储

    pvcreate /dev/md10
    pvcreate /dev/md20
    
  • 将新存储添加到名为“vg.system”的现有卷组

    vgextend vg.system /dev/md10
    vgextend vg.system /dev/md20
    
  • 通常您现在将运行pvmove /dev/md01并将vgreduce vg.system /dev/md01所有数据从 /dev/md01 移出,但想要控制哪些 lvm 数据去往何处,因此:

  • 我认为您可以更改现有的逻辑卷以使用特定的物理卷作为后端存储lvconvert

    lvconvert --replace /dev/md01 vg.system/lv.root  /dev/md10
    lvconvert --replace /dev/md01 vg.system/lv.cache /dev/md20
    
  • 确认进度

    lvs -a -o name,copy_percent,devices 
    
  • 最后从 lv 卷组中删除 md01 块设备,所有数据都将被迁移。

    vgreduce vg.system /dev/md01
    

相关内容