使用的空间我有这样构建的LVM
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 10G 0 disk
└─vda1 252:1 0 10G 0 part /
vdb 252:16 0 10G 0 disk
└─pro103-home--files (dm-2) 253:2 0 10G 0 lvm /home/pro103by
vdc 252:32 0 50G 0 disk
└─pro103by--sql-mysql (dm-1) 253:1 0 90G 0 lvm /data
vdd 252:48 0 30G 0 disk
└─dbbackup-data (dm-0) 253:0 0 30G 0 lvm /dbbackup
vde 252:64 0 30G 0 disk
└─pro103by--sql-mysql (dm-1) 253:1 0 90G 0 lvm /data
vdf 252:80 0 10G 0 disk
└─pro103by--sql-mysql (dm-1) 253:1 0 90G 0 lvm /data
vdg 252:96 0 150G 0 disk
└─vdg1 252:97 0 150G 0 part
pro103by-sql 卷组中包含的驱动器
lvs -o +devices /dev/pro103by-sql/mysql
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices
mysql pro103by-sql -wi-ao---- 89.99g /dev/vdc(0)
mysql pro103by-sql -wi-ao---- 89.99g /dev/vde(0)
mysql pro103by-sql -wi-ao---- 89.99g /dev/vdf(0)
已用空间
pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/vdb pro103 lvm2 a--u 10.00g 4.00m 9.99g
/dev/vdc pro103by-sql lvm2 a--u 50.00g 0 50.00g
/dev/vdd dbbackup lvm2 a--u 30.00g 0 30.00g
/dev/vde pro103by-sql lvm2 a--u 30.00g 0 30.00g
/dev/vdf pro103by-sql lvm2 a--u 10.00g 0 10.00g
/dev/vdg1 pro103by-sql lvm2 a--u 150.00g 150.00g 0
我需要将数据从所有三个驱动器 - /dev/vdc /dev/vde /dev/vdf 移动到一个更大的驱动器 我知道如何使用 pvmove 将数据从一个驱动器移动到另一个驱动器,但不确定这在这种情况下是否有效。
答案1
免责声明:做好备份。
由于前 3 个 PV 上使用的空间总和 (50+30+10=80g) 小于第 4 个 PV 上的可用空间 (150g),因此这是可能的。
这不是一项复杂的任务,(第一个和)第二个示例pvmove
的手册页适合您的情况:
将指定 PV 上的简单 LV 使用的所有物理盘区移至 VG 中其他位置的可用物理盘区。
pvmove /dev/sdb1
移动物理范围时使用特定的目标 PV。
pvmove /dev/sdb1 /dev/sdc1
因此适合您的情况,这可以通过三个命令完成,一次一个:
pvmove /dev/vdc /dev/vdg1
pvmove /dev/vde /dev/vdg1
pvmove /dev/vdf /dev/vdg1
这手册页还告诉这不应该对单个 LV 并行完成。不会造成任何伤害,但所有动作都不会完成,并且必须再次运行:
如果多个 pvmove 正在从不同源 PV 移动数据,则可以同时运行多个 pvmove,但额外的 pvmoves 将忽略任何已经在更改过程中的 LV,因此某些数据可能不会被移动。
这可以在数据库运行的情况下在线完成(在幕后,该pvmove
操作通过使用临时镜像映射等确保平滑迁移。详细信息请参阅手册页的注释.)。但是,如果这不是保持服务运行所必需的,那么最好在执行备份之前进行备份并使数据库脱机:这样可以在出现不可预见的问题时从备份进行回滚。
/dev/vdg1
然后,您可以通过运行以下命令之一来验证所有数据是否确实在 PV 中:
pvdisplay --maps
或者具体来说:
pvdisplay --maps /dev/vdc
pvdisplay --maps /dev/vde
pvdisplay --maps /dev/vdf
pvdisplay --maps /dev/vdg1
然后将仅显示/dev/vdg1
(all for /dev/pro103by-sql/mysql
) 中使用的物理范围。
正交命令为:
lvdisplay --maps /dev/pro103by-sql/mysql
这将表明它的所有逻辑范围都在 中/dev/vdg1
。