迁移,是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。
在线增加磁盘:
[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的可用性没有中断,并且,我还在【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。