IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Linux LVM:在线迁移(旧磁盘 –> 新磁盘)

    Adamhuan发表于 2016-08-30 15:18:00
    love 0

    迁移,是LVM的特性之一。通过该特性,我们可以不需要关机,而将数据从旧的磁盘移动到新的磁盘。

    首先,准备实验数据:

    [root@mysql-1 ~]# fdisk -l | grep --color "Disk /dev"
    Disk /dev/sda: 21.5 GB, 21474836480 bytes
    Disk /dev/sdb: 3221 MB, 3221225472 bytes
    Disk /dev/mapper/vg_mysql1-lv_root: 18.8 GB, 18798870528 bytes
    Disk /dev/mapper/vg_mysql1-lv_swap: 2147 MB, 2147483648 bytes
    [root@mysql-1 ~]#
    
    将【/dev/sdb】做成逻辑卷:
    【创建PV】
    [root@mysql-1 ~]# pvs
      PV         VG        Fmt  Attr PSize  PFree
      /dev/sda2  vg_mysql1 lvm2 a--u 19.51g    0 
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# pvcreate /dev/sdb 
      Physical volume "/dev/sdb" successfully created
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# pvs
      PV         VG        Fmt  Attr PSize  PFree
      /dev/sda2  vg_mysql1 lvm2 a--u 19.51g    0 
      /dev/sdb             lvm2 ----  3.00g 3.00g
    [root@mysql-1 ~]#
    
    【创建VG】
    [root@mysql-1 ~]# vgs
      VG        #PV #LV #SN Attr   VSize  VFree
      vg_mysql1   1   2   0 wz--n- 19.51g    0 
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# vgcreate data_lvm /dev/sdb 
      Volume group "data_lvm" successfully created
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# vgs
      VG        #PV #LV #SN Attr   VSize  VFree
      data_lvm    1   0   0 wz--n-  3.00g 3.00g
      vg_mysql1   1   2   0 wz--n- 19.51g    0 
    [root@mysql-1 ~]#
    
    【创建LV】
    [root@mysql-1 ~]# lvs
      LV      VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_root vg_mysql1 -wi-ao---- 17.51g                                                    
      lv_swap vg_mysql1 -wi-ao----  2.00g                                                    
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# vgdisplay data_lvm
      --- Volume group ---
      VG Name               data_lvm
      System ID             
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  1
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                0
      Open LV               0
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               3.00 GiB
      PE Size               4.00 MiB
      Total PE              767
      Alloc PE / Size       0 / 0   
      Free  PE / Size       767 / 3.00 GiB
      VG UUID               FOkM7p-Noo3-CQGb-Oziw-mZW0-dhdS-cb8s8k
       
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# lvcreate -L 2.9G -n lv_data_lvm data_lvm
      Rounding up size to full physical extent 2.90 GiB
      Logical volume "lv_data_lvm" created.
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# lvs
      LV          VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_data_lvm data_lvm  -wi-a-----  2.90g                                                    
      lv_root     vg_mysql1 -wi-ao---- 17.51g                                                    
      lv_swap     vg_mysql1 -wi-ao----  2.00g                                                    
    [root@mysql-1 ~]# 
    
    【格式化文件系统】
    [root@mysql-1 ~]# mkfs.ext3 /dev/data_lvm/lv_data_lvm 
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    190464 inodes, 760832 blocks
    38041 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=780140544
    24 block groups
    32768 blocks per group, 32768 fragments per group
    7936 inodes per group
    Superblock backups stored on blocks: 
    	32768, 98304, 163840, 229376, 294912
    
    Writing inode tables: done                            
    Creating journal (16384 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 35 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    [root@mysql-1 ~]# 
    
    【创建挂载点,并挂载】
    [root@mysql-1 ~]# mkdir /lvm_me
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg_mysql1-lv_root
                           18G  4.3G   12G  27% /
    tmpfs                 932M   72K  932M   1% /dev/shm
    /dev/sda1             477M   40M  412M   9% /boot
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# mount /dev/data_lvm/lv_data_lvm /lvm_me/
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg_mysql1-lv_root
                           18G  4.3G   12G  27% /
    tmpfs                 932M   72K  932M   1% /dev/shm
    /dev/sda1             477M   40M  412M   9% /boot
    /dev/mapper/data_lvm-lv_data_lvm
                          2.9G   69M  2.7G   3% /lvm_me
    [root@mysql-1 ~]# 
    
    【向LVM的挂载点中添加测试数据】
    [root@mysql-1 ~]# ls -ltr /software
    total 190052
    -rw-r--r--. 1 root root  3888444 Aug 23 01:00 MySQL-devel-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r--. 1 root root 18302217 Aug 23 01:00 MySQL-client-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r--. 1 root root 52325627 Aug 23 01:00 MySQL-server-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r--. 1 root root 69533814 Aug 23 01:00 MySQL-embedded-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r--. 1 root root  2095112 Aug 23 01:00 MySQL-shared-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r--. 1 root root  5199241 Aug 23 01:00 MySQL-shared-compat-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r--. 1 root root 43010559 Aug 23 01:00 MySQL-test-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r--  1 root root   236364 Aug 26 06:21 ext3grep-0.10.2.tar.gz
    drwxr-xr-x  3 1000 1000     4096 Aug 26 06:45 ext3grep-0.10.2
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# cp -rf /software/* /lvm_me/
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# ls -ltr /lvm_me/
    total 190292
    drwx------ 2 root root    16384 Aug 30 23:47 lost+found
    -rw-r--r-- 1 root root   236364 Aug 30 23:50 ext3grep-0.10.2.tar.gz
    drwxr-xr-x 3 root root     4096 Aug 30 23:50 ext3grep-0.10.2
    -rw-r--r-- 1 root root  3888444 Aug 30 23:50 MySQL-devel-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root 18302217 Aug 30 23:50 MySQL-client-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root 69533814 Aug 30 23:50 MySQL-embedded-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root  5199241 Aug 30 23:50 MySQL-shared-compat-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root  2095112 Aug 30 23:50 MySQL-shared-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root 52325627 Aug 30 23:50 MySQL-server-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root 43010559 Aug 30 23:50 MySQL-test-5.5.37-1.rhel5.x86_64.rpm
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# du -sh /lvm_me/
    227M	/lvm_me/
    [root@mysql-1 ~]#

    这样,测试数据就准备好了。

    如上所示,当前我的LVM环境是这样的:
    1. /dev/sdb 被映射为逻辑卷:/dev/data_lvm/lv_data_lvm
    2. 我们希望将该逻辑卷【/lvm_me】中的数据(包括逻辑卷结构)移动到新的存储设备中。

    增加新的存储磁盘设备。
    我这里的操作是在虚拟机【VMware】上操作的,所以我新增一块虚拟磁盘即可。
    在现实的操作中,该操作可能是新增硬盘设备,或者通过存储新划分了一块LUN。

    LVM_Move_1

    LVM_Move_2

    在线增加磁盘:

    [root@mysql-1 ~]# cat /proc/scsi/scsi 
    Attached devices:
    Host: scsi2 Channel: 00 Id: 00 Lun: 00
      Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
      Type:   Direct-Access                    ANSI  SCSI revision: 02
    Host: scsi2 Channel: 00 Id: 01 Lun: 00
      Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
      Type:   Direct-Access                    ANSI  SCSI revision: 02
    Host: scsi4 Channel: 00 Id: 00 Lun: 00
      Vendor: NECVMWar Model: VMware SATA CD01 Rev: 1.00
      Type:   CD-ROM                           ANSI  SCSI revision: 05
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# echo "scsi add-single-device 2 0 2 0" > /proc/scsi/scsi 
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# cat /proc/scsi/scsi 
    Attached devices:
    Host: scsi2 Channel: 00 Id: 00 Lun: 00
      Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
      Type:   Direct-Access                    ANSI  SCSI revision: 02
    Host: scsi2 Channel: 00 Id: 01 Lun: 00
      Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
      Type:   Direct-Access                    ANSI  SCSI revision: 02
    Host: scsi4 Channel: 00 Id: 00 Lun: 00
      Vendor: NECVMWar Model: VMware SATA CD01 Rev: 1.00
      Type:   CD-ROM                           ANSI  SCSI revision: 05
    Host: scsi2 Channel: 00 Id: 02 Lun: 00
      Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
      Type:   Direct-Access                    ANSI  SCSI revision: 02
    [root@mysql-1 ~]#

    查看当前系统挂在的磁盘:

    [root@mysql-1 ~]# fdisk -l | grep --color "Disk /dev/"
    Disk /dev/sda: 21.5 GB, 21474836480 bytes
    Disk /dev/sdb: 3221 MB, 3221225472 bytes
    Disk /dev/mapper/vg_mysql1-lv_root: 18.8 GB, 18798870528 bytes
    Disk /dev/mapper/vg_mysql1-lv_swap: 2147 MB, 2147483648 bytes
    Disk /dev/mapper/data_lvm-lv_data_lvm: 3116 MB, 3116367872 bytes
    Disk /dev/sdc: 4294 MB, 4294967296 bytes
    [root@mysql-1 ~]#

    如上【/dev/sdc】就是我新增的磁盘设备。

    查看当前的LVM的状态:

    [root@mysql-1 ~]# lvs
      LV          VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_data_lvm data_lvm  -wi-ao----  2.90g                                                    
      lv_root     vg_mysql1 -wi-ao---- 17.51g                                                    
      lv_swap     vg_mysql1 -wi-ao----  2.00g                                                    
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# vgs
      VG        #PV #LV #SN Attr   VSize  VFree 
      data_lvm    1   1   0 wz--n-  3.00g 96.00m
      vg_mysql1   1   2   0 wz--n- 19.51g     0 
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# vgs -o +devices
      VG        #PV #LV #SN Attr   VSize  VFree  Devices        
      data_lvm    1   1   0 wz--n-  3.00g 96.00m /dev/sdb(0)    
      vg_mysql1   1   2   0 wz--n- 19.51g     0  /dev/sda2(0)   
      vg_mysql1   1   2   0 wz--n- 19.51g     0  /dev/sda2(4482)
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# pvs
      PV         VG        Fmt  Attr PSize  PFree 
      /dev/sda2  vg_mysql1 lvm2 a--u 19.51g     0 
      /dev/sdb   data_lvm  lvm2 a--u  3.00g 96.00m
    [root@mysql-1 ~]#

    【vgs -o +devices】可以查看卷组对应的具体的磁盘设备。

    在新的磁盘设备【/dev/sdc】上创建新的PV:

    [root@mysql-1 ~]# pvs
      PV         VG        Fmt  Attr PSize  PFree 
      /dev/sda2  vg_mysql1 lvm2 a--u 19.51g     0 
      /dev/sdb   data_lvm  lvm2 a--u  3.00g 96.00m
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# fdisk -l | grep --color "Disk /dev/"
    Disk /dev/sda: 21.5 GB, 21474836480 bytes
    Disk /dev/sdb: 3221 MB, 3221225472 bytes
    Disk /dev/mapper/vg_mysql1-lv_root: 18.8 GB, 18798870528 bytes
    Disk /dev/mapper/vg_mysql1-lv_swap: 2147 MB, 2147483648 bytes
    Disk /dev/mapper/data_lvm-lv_data_lvm: 3116 MB, 3116367872 bytes
    Disk /dev/sdc: 4294 MB, 4294967296 bytes
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# pvcreate /dev/sdc -v
        Wiping cache of LVM-capable devices
        Set up physical volume for "/dev/sdc" with 8388608 available sectors
        Zeroing start of device /dev/sdc
        Writing physical volume data to disk "/dev/sdc"
      Physical volume "/dev/sdc" successfully created
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# pvs
      PV         VG        Fmt  Attr PSize  PFree 
      /dev/sda2  vg_mysql1 lvm2 a--u 19.51g     0 
      /dev/sdb   data_lvm  lvm2 a--u  3.00g 96.00m
      /dev/sdc             lvm2 ----  4.00g  4.00g
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# pvs -o +devices
      PV         VG        Fmt  Attr PSize  PFree  Devices        
      /dev/sda2  vg_mysql1 lvm2 a--u 19.51g     0  /dev/sda2(0)   
      /dev/sda2  vg_mysql1 lvm2 a--u 19.51g     0  /dev/sda2(4482)
      /dev/sdb   data_lvm  lvm2 a--u  3.00g 96.00m /dev/sdb(0)    
      /dev/sdb   data_lvm  lvm2 a--u  3.00g 96.00m                
      /dev/sdc             lvm2 ----  4.00g  4.00g                
    [root@mysql-1 ~]#

    新的磁盘设备上创建新的PV(物理卷),成功。

    将新的PV,添加到打算迁移的卷组【data_lvm】中:

    [root@mysql-1 ~]# vgs
      VG        #PV #LV #SN Attr   VSize  VFree 
      data_lvm    1   1   0 wz--n-  3.00g 96.00m
      vg_mysql1   1   2   0 wz--n- 19.51g     0 
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# vgextend data_lvm /dev/sdc 
      Volume group "data_lvm" successfully extended
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# vgs
      VG        #PV #LV #SN Attr   VSize  VFree
      data_lvm    2   1   0 wz--n-  6.99g 4.09g
      vg_mysql1   1   2   0 wz--n- 19.51g    0 
    [root@mysql-1 ~]#

    查看打算迁移的卷组【data_lvm】的状态:

    [root@mysql-1 ~]# vgdisplay data_lvm -v
        Using volume group(s) on command line.
      --- Volume group ---
      VG Name               data_lvm
      System ID             
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  3
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               6.99 GiB
      PE Size               4.00 MiB
      Total PE              1790
      Alloc PE / Size       743 / 2.90 GiB
      Free  PE / Size       1047 / 4.09 GiB
      VG UUID               FOkM7p-Noo3-CQGb-Oziw-mZW0-dhdS-cb8s8k
       
      --- Logical volume ---
      LV Path                /dev/data_lvm/lv_data_lvm
      LV Name                lv_data_lvm
      VG Name                data_lvm
      LV UUID                PcoTWs-JM9F-0VwK-z077-0syE-8jFX-Lo89cL
      LV Write Access        read/write
      LV Creation host, time mysql-1, 2016-08-30 23:46:57 +0800
      LV Status              available
      # open                 1
      LV Size                2.90 GiB
      Current LE             743
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:2
       
      --- Physical volumes ---
      PV Name               /dev/sdb     
      PV UUID               o6MGyL-GKkg-18d1-6JPd-I7He-myiJ-8IY0on
      PV Status             allocatable
      Total PE / Free PE    767 / 24
       
      PV Name               /dev/sdc     
      PV UUID               QjjzvZ-QfQV-LDJB-KggF-CIfs-9YyY-iGDLI1
      PV Status             allocatable
      Total PE / Free PE    1023 / 1023
       
    [root@mysql-1 ~]#

    更详细的LVM与磁盘设备的依赖关系:

    [root@mysql-1 ~]# lvs -o +devices
      LV          VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices        
      lv_data_lvm data_lvm  -wi-ao----  2.90g                                                     /dev/sdb(0)    
      lv_root     vg_mysql1 -wi-ao---- 17.51g                                                     /dev/sda2(0)   
      lv_swap     vg_mysql1 -wi-ao----  2.00g                                                     /dev/sda2(4482)
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# dmsetup deps /dev/data_lvm/lv_data_lvm 
    1 dependencies	: (8, 16)
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# ls -ltr --time-style="+|%Y-%m-%d|%H:%M:%S|" /dev/ | grep --color sd
    brw-rw----  1 root disk      8,   0 |2016-08-30|23:34:56| sda
    brw-rw----  1 root disk      8,   2 |2016-08-30|23:34:57| sda2
    brw-rw----  1 root disk      8,   1 |2016-08-30|23:34:58| sda1
    brw-rw----  1 root disk      8,  16 |2016-08-31|00:15:29| sdb
    brw-rw----  1 root disk      8,  32 |2016-08-31|00:15:29| sdc
    [root@mysql-1 ~]#

    然后,就可以操作LVM的迁移了:
    1. LVM镜像
    2. LVM:pvmove

    下面详细介绍上面两种方法:

    一、LVM镜像。
    使用lvconvert,将数据从就的逻辑卷迁移到新的逻辑卷上:

    [root@mysql-1 ~]# lvs -o +devices -v
        Using logical volume(s) on command line.
      LV          VG        #Seg Attr       LSize  Maj Min KMaj KMin Pool Origin Data%  Meta%  Move Cpy%Sync Log Convert LV UUID                                LProfile Devices        
      lv_data_lvm data_lvm     1 -wi-ao----  2.90g  -1  -1  253    2                                                     PcoTWs-JM9F-0VwK-z077-0syE-8jFX-Lo89cL          /dev/sdb(0)    
      lv_root     vg_mysql1    1 -wi-ao---- 17.51g  -1  -1  253    0                                                     yq7Cae-gSCe-bShf-hg5u-C0vr-AFN8-AsmOMH          /dev/sda2(0)   
      lv_swap     vg_mysql1    1 -wi-ao----  2.00g  -1  -1  253    1                                                     t4nSv8-sWa1-4jyN-Acox-NC1j-SSAI-Gc8Td3          /dev/sda2(4482)
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# lvconvert -m 1 /dev/data_lvm/lv_data_lvm /dev/sdc 
      data_lvm/lv_data_lvm: Converted: 0.3%
      data_lvm/lv_data_lvm: Converted: 14.1%
      data_lvm/lv_data_lvm: Converted: 28.7%
      data_lvm/lv_data_lvm: Converted: 45.4%
      data_lvm/lv_data_lvm: Converted: 61.0%
      data_lvm/lv_data_lvm: Converted: 78.3%
      data_lvm/lv_data_lvm: Converted: 95.3%
      data_lvm/lv_data_lvm: Converted: 100.0%
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# lvs -o +devices
      LV          VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log                Cpy%Sync Convert Devices                                        
      lv_data_lvm data_lvm  mwi-aom---  2.90g                                [lv_data_lvm_mlog] 100.00           lv_data_lvm_mimage_0(0),lv_data_lvm_mimage_1(0)
      lv_root     vg_mysql1 -wi-ao---- 17.51g                                                                    /dev/sda2(0)                                   
      lv_swap     vg_mysql1 -wi-ao----  2.00g                                                                    /dev/sda2(4482)                                
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# lvs -o +devices -v
        Using logical volume(s) on command line.
      LV          VG        #Seg Attr       LSize  Maj Min KMaj KMin Pool Origin Data%  Meta%  Move Cpy%Sync Log                Convert LV UUID                                LProfile Devices                                        
      lv_data_lvm data_lvm     1 mwi-aom---  2.90g  -1  -1  253    2                                100.00   [lv_data_lvm_mlog]         PcoTWs-JM9F-0VwK-z077-0syE-8jFX-Lo89cL          lv_data_lvm_mimage_0(0),lv_data_lvm_mimage_1(0)
      lv_root     vg_mysql1    1 -wi-ao---- 17.51g  -1  -1  253    0                                                                    yq7Cae-gSCe-bShf-hg5u-C0vr-AFN8-AsmOMH          /dev/sda2(0)                                   
      lv_swap     vg_mysql1    1 -wi-ao----  2.00g  -1  -1  253    1                                                                    t4nSv8-sWa1-4jyN-Acox-NC1j-SSAI-Gc8Td3          /dev/sda2(4482)                                
    [root@mysql-1 ~]#

    注意,在做lvconvert的过程中,LVM的访问没有终止:
    LVM_Move_3
    可以看到,LVM的可用性没有中断,并且,我还在【data_lvm】的LVM中,新增了一个文本文件:me。

    移除旧的磁盘设备【/dev/sdb】

    [root@mysql-1 ~]# vgdisplay data_lvm -v
        Using volume group(s) on command line.
      --- Volume group ---
      VG Name               data_lvm
      System ID             
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  5
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               6.99 GiB
      PE Size               4.00 MiB
      Total PE              1790
      Alloc PE / Size       1487 / 5.81 GiB
      Free  PE / Size       303 / 1.18 GiB
      VG UUID               FOkM7p-Noo3-CQGb-Oziw-mZW0-dhdS-cb8s8k
       
      --- Logical volume ---
      LV Path                /dev/data_lvm/lv_data_lvm
      LV Name                lv_data_lvm
      VG Name                data_lvm
      LV UUID                PcoTWs-JM9F-0VwK-z077-0syE-8jFX-Lo89cL
      LV Write Access        read/write
      LV Creation host, time mysql-1, 2016-08-30 23:46:57 +0800
      LV Status              available
      # open                 1
      LV Size                2.90 GiB
      Current LE             743
      Mirrored volumes       2
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:2
       
      --- Physical volumes ---
      PV Name               /dev/sdb     
      PV UUID               o6MGyL-GKkg-18d1-6JPd-I7He-myiJ-8IY0on
      PV Status             allocatable
      Total PE / Free PE    767 / 24
       
      PV Name               /dev/sdc     
      PV UUID               QjjzvZ-QfQV-LDJB-KggF-CIfs-9YyY-iGDLI1
      PV Status             allocatable
      Total PE / Free PE    1023 / 279
       
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# lvs -o +devices
      LV          VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log                Cpy%Sync Convert Devices                                        
      lv_data_lvm data_lvm  mwi-aom---  2.90g                                [lv_data_lvm_mlog] 100.00           lv_data_lvm_mimage_0(0),lv_data_lvm_mimage_1(0)
      lv_root     vg_mysql1 -wi-ao---- 17.51g                                                                    /dev/sda2(0)                                   
      lv_swap     vg_mysql1 -wi-ao----  2.00g                                                                    /dev/sda2(4482)                                
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# lvs -o +devices -v
        Using logical volume(s) on command line.
      LV          VG        #Seg Attr       LSize  Maj Min KMaj KMin Pool Origin Data%  Meta%  Move Cpy%Sync Log                Convert LV UUID                                LProfile Devices                                        
      lv_data_lvm data_lvm     1 mwi-aom---  2.90g  -1  -1  253    2                                100.00   [lv_data_lvm_mlog]         PcoTWs-JM9F-0VwK-z077-0syE-8jFX-Lo89cL          lv_data_lvm_mimage_0(0),lv_data_lvm_mimage_1(0)
      lv_root     vg_mysql1    1 -wi-ao---- 17.51g  -1  -1  253    0                                                                    yq7Cae-gSCe-bShf-hg5u-C0vr-AFN8-AsmOMH          /dev/sda2(0)                                   
      lv_swap     vg_mysql1    1 -wi-ao----  2.00g  -1  -1  253    1                                                                    t4nSv8-sWa1-4jyN-Acox-NC1j-SSAI-Gc8Td3          /dev/sda2(4482)                                
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# lvconvert -m 0 /dev/data_lvm/lv_data_lvm /dev/sdb 
      Logical volume lv_data_lvm converted.
    [root@mysql-1 ~]#

    移除成功。

    再看当前LVM的状态:

    [root@mysql-1 ~]# vgdisplay data_lvm -v
        Using volume group(s) on command line.
      --- Volume group ---
      VG Name               data_lvm
      System ID             
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  10
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               6.99 GiB
      PE Size               4.00 MiB
      Total PE              1790
      Alloc PE / Size       743 / 2.90 GiB
      Free  PE / Size       1047 / 4.09 GiB
      VG UUID               FOkM7p-Noo3-CQGb-Oziw-mZW0-dhdS-cb8s8k
       
      --- Logical volume ---
      LV Path                /dev/data_lvm/lv_data_lvm
      LV Name                lv_data_lvm
      VG Name                data_lvm
      LV UUID                PcoTWs-JM9F-0VwK-z077-0syE-8jFX-Lo89cL
      LV Write Access        read/write
      LV Creation host, time mysql-1, 2016-08-30 23:46:57 +0800
      LV Status              available
      # open                 1
      LV Size                2.90 GiB
      Current LE             743
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:2
       
      --- Physical volumes ---
      PV Name               /dev/sdb     
      PV UUID               o6MGyL-GKkg-18d1-6JPd-I7He-myiJ-8IY0on
      PV Status             allocatable
      Total PE / Free PE    767 / 767
       
      PV Name               /dev/sdc     
      PV UUID               QjjzvZ-QfQV-LDJB-KggF-CIfs-9YyY-iGDLI1
      PV Status             allocatable
      Total PE / Free PE    1023 / 280
       
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# lvs -o +devices
      LV          VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices        
      lv_data_lvm data_lvm  -wi-ao----  2.90g                                                     /dev/sdc(0)    
      lv_root     vg_mysql1 -wi-ao---- 17.51g                                                     /dev/sda2(0)   
      lv_swap     vg_mysql1 -wi-ao----  2.00g                                                     /dev/sda2(4482)
    [root@mysql-1 ~]#
    [root@mysql-1 ~]# lvs -o +devices -v
        Using logical volume(s) on command line.
      LV          VG        #Seg Attr       LSize  Maj Min KMaj KMin Pool Origin Data%  Meta%  Move Cpy%Sync Log Convert LV UUID                                LProfile Devices        
      lv_data_lvm data_lvm     1 -wi-ao----  2.90g  -1  -1  253    2                                                     PcoTWs-JM9F-0VwK-z077-0syE-8jFX-Lo89cL          /dev/sdc(0)    
      lv_root     vg_mysql1    1 -wi-ao---- 17.51g  -1  -1  253    0                                                     yq7Cae-gSCe-bShf-hg5u-C0vr-AFN8-AsmOMH          /dev/sda2(0)   
      lv_swap     vg_mysql1    1 -wi-ao----  2.00g  -1  -1  253    1                                                     t4nSv8-sWa1-4jyN-Acox-NC1j-SSAI-Gc8Td3          /dev/sda2(4482)
    [root@mysql-1 ~]#

    查看LVM与磁盘设备的依赖关系的详情:

    [root@mysql-1 ~]# dmsetup deps /dev/data_lvm/lv_data_lvm
    1 dependencies	: (8, 32)
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# ls -ltr --time-style="+|%Y-%m-%d|%H:%M:%S|" /dev/ | grep --color sd
    brw-rw----  1 root disk      8,   0 |2016-08-30|23:34:56| sda
    brw-rw----  1 root disk      8,   2 |2016-08-30|23:34:57| sda2
    brw-rw----  1 root disk      8,   1 |2016-08-30|23:34:58| sda1
    brw-rw----  1 root disk      8,  32 |2016-08-31|00:41:41| sdc
    brw-rw----  1 root disk      8,  16 |2016-08-31|00:41:41| sdb
    [root@mysql-1 ~]#

    可以看到,现在LVM已经不依赖于【/dev/sdb】,而是依赖于【/dev/sdc】。
    这说明,上面的【在线将LVM从旧的磁盘设备迁移到新的磁盘设备】的操作已经完成了。

    查看下当前LVM中的数据状态:

    [root@mysql-1 ~]# cd /lvm_me/
    [root@mysql-1 lvm_me]# ls -ltr --time-style="+|%Y-%m-%d|%H:%M:%S|"
    total 190296
    drwx------ 2 root root    16384 |2016-08-30|23:47:58| lost+found
    -rw-r--r-- 1 root root   236364 |2016-08-30|23:50:17| ext3grep-0.10.2.tar.gz
    drwxr-xr-x 3 root root     4096 |2016-08-30|23:50:17| ext3grep-0.10.2
    -rw-r--r-- 1 root root  3888444 |2016-08-30|23:50:18| MySQL-devel-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root 18302217 |2016-08-30|23:50:18| MySQL-client-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root 69533814 |2016-08-30|23:50:19| MySQL-embedded-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root  5199241 |2016-08-30|23:50:20| MySQL-shared-compat-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root  2095112 |2016-08-30|23:50:20| MySQL-shared-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root 52325627 |2016-08-30|23:50:20| MySQL-server-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root 43010559 |2016-08-30|23:50:24| MySQL-test-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root        3 |2016-08-31|00:29:57| me
    [root@mysql-1 lvm_me]# 
    [root@mysql-1 lvm_me]# cat me 
    me
    [root@mysql-1 lvm_me]#

    可以看到,之前迁移过程中做出的变动也带过来了。

    最后,将不再需要的【旧的磁盘设备:/dev/sdb】从卷组中删除:

    [root@mysql-1 lvm_me]# vgs -o +devices
      VG        #PV #LV #SN Attr   VSize  VFree Devices        
      data_lvm    2   1   0 wz--n-  6.99g 4.09g /dev/sdc(0)    
      vg_mysql1   1   2   0 wz--n- 19.51g    0  /dev/sda2(0)   
      vg_mysql1   1   2   0 wz--n- 19.51g    0  /dev/sda2(4482)
    [root@mysql-1 lvm_me]# 
    [root@mysql-1 lvm_me]# vgdisplay data_lvm -v | tail -n 11
        Using volume group(s) on command line.
      --- Physical volumes ---
      PV Name               /dev/sdb     
      PV UUID               o6MGyL-GKkg-18d1-6JPd-I7He-myiJ-8IY0on
      PV Status             allocatable
      Total PE / Free PE    767 / 767
       
      PV Name               /dev/sdc     
      PV UUID               QjjzvZ-QfQV-LDJB-KggF-CIfs-9YyY-iGDLI1
      PV Status             allocatable
      Total PE / Free PE    1023 / 280
       
    [root@mysql-1 lvm_me]#
    [root@mysql-1 lvm_me]# vgdisplay data_lvm
      --- Volume group ---
      VG Name               data_lvm
      System ID             
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  10
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               6.99 GiB
      PE Size               4.00 MiB
      Total PE              1790
      Alloc PE / Size       743 / 2.90 GiB
      Free  PE / Size       1047 / 4.09 GiB
      VG UUID               FOkM7p-Noo3-CQGb-Oziw-mZW0-dhdS-cb8s8k
       
    [root@mysql-1 lvm_me]#
    [root@mysql-1 lvm_me]# vgreduce data_lvm /dev/sdb 
      Removed "/dev/sdb" from volume group "data_lvm"
    [root@mysql-1 lvm_me]#

    成功移除旧的磁盘设备。

    再次查看当前LVM状态:

    [root@mysql-1 lvm_me]# vgs -o +devices
      VG        #PV #LV #SN Attr   VSize  VFree Devices        
      data_lvm    1   1   0 wz--n-  4.00g 1.09g /dev/sdc(0)    
      vg_mysql1   1   2   0 wz--n- 19.51g    0  /dev/sda2(0)   
      vg_mysql1   1   2   0 wz--n- 19.51g    0  /dev/sda2(4482)
    [root@mysql-1 lvm_me]# 
    [root@mysql-1 lvm_me]# vgdisplay data_lvm -v | tail -n 11
        Using volume group(s) on command line.
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:2
       
      --- Physical volumes ---
      PV Name               /dev/sdc     
      PV UUID               QjjzvZ-QfQV-LDJB-KggF-CIfs-9YyY-iGDLI1
      PV Status             allocatable
      Total PE / Free PE    1023 / 280
       
    [root@mysql-1 lvm_me]# 
    [root@mysql-1 lvm_me]# vgdisplay data_lvm
      --- Volume group ---
      VG Name               data_lvm
      System ID             
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  11
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               4.00 GiB
      PE Size               4.00 MiB
      Total PE              1023
      Alloc PE / Size       743 / 2.90 GiB
      Free  PE / Size       280 / 1.09 GiB
      VG UUID               FOkM7p-Noo3-CQGb-Oziw-mZW0-dhdS-cb8s8k
       
    [root@mysql-1 lvm_me]# 
    [root@mysql-1 lvm_me]# lvs
      LV          VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_data_lvm data_lvm  -wi-ao----  2.90g                                                    
      lv_root     vg_mysql1 -wi-ao---- 17.51g                                                    
      lv_swap     vg_mysql1 -wi-ao----  2.00g                                                    
    [root@mysql-1 lvm_me]# 
    [root@mysql-1 lvm_me]# lvs -o +devices
      LV          VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices        
      lv_data_lvm data_lvm  -wi-ao----  2.90g                                                     /dev/sdc(0)    
      lv_root     vg_mysql1 -wi-ao---- 17.51g                                                     /dev/sda2(0)   
      lv_swap     vg_mysql1 -wi-ao----  2.00g                                                     /dev/sda2(4482)
    [root@mysql-1 lvm_me]# 
    [root@mysql-1 lvm_me]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg_mysql1-lv_root
                           18G  4.3G   12G  27% /
    tmpfs                 932M   72K  932M   1% /dev/shm
    /dev/sda1             477M   40M  412M   9% /boot
    /dev/mapper/data_lvm-lv_data_lvm
                          2.9G  296M  2.5G  11% /lvm_me
    [root@mysql-1 lvm_me]# 
    [root@mysql-1 lvm_me]# ls -ltr --time-style="+|%Y-%m-%d|%H:%M:%S|" /lvm_me/
    total 190296
    drwx------ 2 root root    16384 |2016-08-30|23:47:58| lost+found
    -rw-r--r-- 1 root root   236364 |2016-08-30|23:50:17| ext3grep-0.10.2.tar.gz
    drwxr-xr-x 3 root root     4096 |2016-08-30|23:50:17| ext3grep-0.10.2
    -rw-r--r-- 1 root root  3888444 |2016-08-30|23:50:18| MySQL-devel-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root 18302217 |2016-08-30|23:50:18| MySQL-client-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root 69533814 |2016-08-30|23:50:19| MySQL-embedded-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root  5199241 |2016-08-30|23:50:20| MySQL-shared-compat-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root  2095112 |2016-08-30|23:50:20| MySQL-shared-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root 52325627 |2016-08-30|23:50:20| MySQL-server-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root 43010559 |2016-08-30|23:50:24| MySQL-test-5.5.37-1.rhel5.x86_64.rpm
    -rw-r--r-- 1 root root        3 |2016-08-31|00:29:57| me
    [root@mysql-1 lvm_me]# 
    [root@mysql-1 lvm_me]# cat me 
    me
    [root@mysql-1 lvm_me]#

    这样,就完成了。

    二、LVM:pvmove。
    回到上面操作LVM镜像之前的状态。

    查看我们的LVM的状态:

    [root@mysql-1 ~]# pvs
      PV         VG        Fmt  Attr PSize  PFree 
      /dev/sda2  vg_mysql1 lvm2 a--u 19.51g     0 
      /dev/sdb   data_lvm  lvm2 a--u  3.00g 96.00m
      /dev/sdc   data_lvm  lvm2 a--u  4.00g  4.00g
    [root@mysql-1 ~]#
    [root@mysql-1 ~]# vgs -o +devices
      VG        #PV #LV #SN Attr   VSize  VFree Devices        
      data_lvm    2   1   0 wz--n-  6.99g 4.09g /dev/sdb(0)    
      vg_mysql1   1   2   0 wz--n- 19.51g    0  /dev/sda2(0)   
      vg_mysql1   1   2   0 wz--n- 19.51g    0  /dev/sda2(4482)
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# lvs -o +devices
      LV          VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices        
      lv_data_lvm data_lvm  -wi-ao----  2.90g                                                     /dev/sdb(0)    
      lv_root     vg_mysql1 -wi-ao---- 17.51g                                                     /dev/sda2(0)   
      lv_swap     vg_mysql1 -wi-ao----  2.00g                                                     /dev/sda2(4482)
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# vgdisplay data_lvm -v | tail -n 11
        Using volume group(s) on command line.
      --- Physical volumes ---
      PV Name               /dev/sdb     
      PV UUID               o6MGyL-GKkg-18d1-6JPd-I7He-myiJ-8IY0on
      PV Status             allocatable
      Total PE / Free PE    767 / 24
       
      PV Name               /dev/sdc     
      PV UUID               QjjzvZ-QfQV-LDJB-KggF-CIfs-9YyY-iGDLI1
      PV Status             allocatable
      Total PE / Free PE    1023 / 1023
       
    [root@mysql-1 ~]#

    新的驱动设备,一定要加入到需要操作的卷组中,否则会报错:

    [root@mysql-1 ~]# pvmove -n /dev/data_lvm/lv_data_lvm /dev/sdb /dev/sdc 
      Physical Volume "/dev/sdc" not found in Volume Group "data_lvm".
    [root@mysql-1 ~]#

    使用pvmove,操作迁移:

    [root@mysql-1 ~]# pvmove -n /dev/data_lvm/lv_data_lvm /dev/sdb /dev/sdc 
      /dev/sdb: Moved: 0.3%
      /dev/sdb: Moved: 22.3%
      /dev/sdb: Moved: 53.0%
      /dev/sdb: Moved: 96.1%
      /dev/sdb: Moved: 100.0%
    [root@mysql-1 ~]#

    迁移后,查看LVM的状态:

    [root@mysql-1 ~]# vgs -o +devices
      VG        #PV #LV #SN Attr   VSize  VFree Devices        
      data_lvm    2   1   0 wz--n-  6.99g 4.09g /dev/sdc(0)    
      vg_mysql1   1   2   0 wz--n- 19.51g    0  /dev/sda2(0)   
      vg_mysql1   1   2   0 wz--n- 19.51g    0  /dev/sda2(4482)
    [root@mysql-1 ~]#

    移除旧的磁盘设备:

    [root@mysql-1 ~]# vgreduce data_lvm /dev/sdb 
      Removed "/dev/sdb" from volume group "data_lvm"
    [root@mysql-1 ~]# 
    [root@mysql-1 ~]# vgdisplay data_lvm -v | tail -n 11
        Using volume group(s) on command line.
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:2
       
      --- Physical volumes ---
      PV Name               /dev/sdc     
      PV UUID               QjjzvZ-QfQV-LDJB-KggF-CIfs-9YyY-iGDLI1
      PV Status             allocatable
      Total PE / Free PE    1023 / 280
       
    [root@mysql-1 ~]#

    至此,LVM迁移的操作,完成。

    ——————————————————
    Done。



沪ICP备19023445号-2号
友情链接