场景
- 前期规划给了太多磁盘,实际用不到那么多,需要移除一个物理硬盘
- 当前LV总占用小于需要保留的硬盘容量
- 保留的物理卷未分配给lv的空间必须小于文件总容量,下面是一个参考
需要保留
sdb
,移除sdc
可迁移
lv总使用量: 1.5G
物理卷 | 物理卷大小 | lv总分配量 |
---|---|---|
sdb | 2G | 500M |
sdc | 2G | 500M |
不可迁移
lv总使用量: 3G
物理卷 | 物理卷大小 | lv总分配量 |
---|---|---|
sdb | 2G | 1.5G |
sdc | 2G | 1G |
技巧
root@debian:/# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvg lvm2 a-- <2.00g <2.00g
/dev/sdc1 lvg lvm2 a-- <2.00g 20.00m
root@debian:/#
通过pvs
命令可以看到每个物理磁盘的空闲(PFree
)大小,通过这个大小就可以知道结论
需要保留的物理磁盘空闲 | 总lv使用大小 | 迁移 |
---|---|---|
1G | 500M | 是 |
1G | 1.5G | 否 |
-
如果需要移除的设备
PSize
减去PFree
的值小于需要保留的设备PFree
则可以迁移并移除 -
如果需要移除的设备
PSize
和自身PFree
的值一致说明这个磁盘并没有使用到,可以直接移除,不需要迁移数据 -
如果需要移除的设备
PSize
减去PFree
的值大于需要保留的设备PFree
则可以无法迁移和移除
其他
Lvm创建请看: 从零开始创建LVM分区方案
配置
环境信息
root@debian:/# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
d1 lvg -wi-ao---- 500.00m
d2 lvg -wi-ao---- 500.00m
d3 lvg -wi-ao---- 1.00g
root@debian:/# vgs
VG #PV #LV #SN Attr VSize VFree
lvg 2 3 0 wz--n- 3.99g <2.02g
root@debian:/#
写入文件
root@debian:/# ls d1 d2 d3
d1:
DSM_VirtualDSM_42661.pat lost+found
d2:
DSM_DS918+_42962.pat lost+found
d3:
d3.pat lost+found
root@debian:/# df -h
Filesystem Size Used Avail Use% Mounted on
udev 953M 0 953M 0% /dev
tmpfs 197M 560K 196M 1% /run
/dev/sda2 30G 4.1G 25G 15% /
tmpfs 981M 0 981M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda1 511M 5.9M 506M 2% /boot/efi
tmpfs 197M 4.0K 197M 1% /run/user/0
/dev/mapper/lvg-d1 459M 326M 104M 76% /d1
/dev/mapper/lvg-d2 459M 347M 84M 81% /d2
/dev/mapper/lvg-d3 1.5G 347M 1.1G 26% /d3
root@debian:/#
迁移数据
语法
在移除硬盘之前,需要先迁移数据
pvmove命令用于将源物理卷上的物理盘区移动到一个或多个其他的目标物理卷。其基本语法格式为:
pvmove [选项] [源物理卷[:PE[-PE]...] [目标物理卷[:PE[-PE]...]...]]
这里是一些常用选项和实例:
常用选项:
--abort
:中止正在进行的任何移动。
实例:
移动物理卷/dev/sda5上的所有物理盘区:
pvmove /dev/sda5
将源物理卷/dev/sda5上的物理盘区移动到物理卷/dev/sda6上:
pvmove /dev/sda5 /dev/sda6
将源物理卷/dev/sda5上的物理盘区1000~1999移动到物理卷/dev/sda6上:
pvmove /dev/sda5:1000-1999 /dev/sda6
在执行pvmove命令之前,确保目标物理卷有足够的空间来容纳源物理卷上的数据,并且目标物理卷没有被其他逻辑卷使用。可以通过pvdisplay命令来查看物理卷的状态和使用情况。
需要注意的是,pvmove命令的执行可能需要一些时间,具体取决于数据的大小和系统的性能。在数据迁移过程中,建议避免对涉及的物理卷进行其他操作,以防止数据丢失或系统不稳定。
实践
将
sdc
的数据迁移到sdb
root@debian:/# pvmove /dev/sdc1 /dev/sdb1
/dev/sdc1: Moved: 0.40%
/dev/sdc1: Moved: 24.70%
/dev/sdc1: Moved: 49.41%
/dev/sdc1: Moved: 100.00%
root@debian:/#
执行结束之后,查看pv信息
root@debian:/# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvg lvm2 a-- <2.00g 20.00m
/dev/sdc1 lvg lvm2 a-- <2.00g <2.00g
root@debian:/#
此时可以看到,数据已经全部在sdb1
了
从VG中移除
vgreduce lvg /dev/sdc1
root@debian:/# vgreduce lvg /dev/sdc1
Removed "/dev/sdc1" from volume group "lvg"
root@debian:/#
从pv中移除
root@debian:/# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvg lvm2 a-- <2.00g 20.00m
/dev/sdc1 lvm2 --- <2.00g <2.00g
root@debian:/# pvremove /dev/sdc1
Labels on physical volume "/dev/sdc1" successfully wiped.
root@debian:/# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvg lvm2 a-- <2.00g 20.00m
root@debian:/#
可以看到,此时的pv
已经没有sdc1
了
root@debian:/# vgs
VG #PV #LV #SN Attr VSize VFree
lvg 1 3 0 wz--n- <2.00g 20.00m
root@debian:/#
vg
的总大小也变化了