LVM
# 为何要用lvm
- 当刚开始安装Linux系统时,往往不能确定每个分区使用的空间大小,只能凭经验分配不科学;
- 如果分区设置的过大,就浪费了磁盘空间;
- 如果分区设置的过小,就会导致空间不够;
- 如何希望分配的空间过大或过小,都能动态调整,则需要使用到
LVM
逻辑卷;
# 什么是lvm
- LVM是
Logical Volume Manager
逻辑卷管理的简写,它是对磁盘分区管理的一种机制; - LVM优点:
- LVM可以创建和管理逻辑卷,而不是直接使用物理硬盘;
- LVM可以弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据;
- LVM可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷;
- LVM缺点︰
- LVM如果有一个磁盘损坏,整个LVM都坏了,LVM只有动态扩展作用
- 解决办法:用
RAID+LVM
=既有冗余又有动态扩展;
- 解决办法:用
- LVM如果有一个磁盘损坏,整个LVM都坏了,LVM只有动态扩展作用
# lvm相关术语
- 物理卷(PV)︰将常规的磁盘通过
pvcreate
命令对其进行初始化,形成了物理卷。(面粉) - 卷组(VG):把多个物理卷组成一个逻辑的整体,这样卷组的大小就是多个盘之和。(大面团)
- 逻辑卷(LV)︰从卷组中划分需要的空间大小出来,用户仅需对其格式化然后即可挂载使用。(切成馒头)
- 基本单元(PE):分配的逻辑大小的最小单元,默认4MB,假设分配100MB的空间,则需要创建25个PE
# lvm配置实践
# 环境与思路
- 准备三块物理磁盘,建议在虚拟机关闭状态添加,以便更好的实验;
- 创建物理卷,将普通磁盘转换为物理卷;
- 创建卷组,将物理卷加入到卷组中;
- 在卷组中划分逻辑卷,然后挂载使用;
# 创建物理卷
将磁盘转换为物理卷,并加入
pv
;[root@web ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created.
1
2检查
pv
创建情况;[root@web ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb lvm2 --- 1.00g 1.00g
1
2
3
# 创建卷组
创建名为
datavg
的卷组,然后将物理卷加入进卷组;[root@web ~]# vgcreate datavg /dev/sdb volume group "datavg" successfully created
1
2检查卷组(发现存在一个PV卷);
[root@web ~]# vgs VG #PV #LV #SN Attr VSize VFree datavg 1 0 0 wz--n- 1020.00m 1020.00m
1
2
3
# 创建逻辑卷
分配
datavg
逻辑卷,-n
指定逻辑卷名称,-L
指定逻辑卷大小;# 分配100M空间给lv1逻辑卷 [root@web ~]# lvcreate -L 100m -n lv1 datavg Logical volume "datalv1" created.
1
2
3检查逻辑卷;
[root@web ~]# lvscan ACTIVE '/dev/datavg/lv1' [100.00 MiB] inherit
1
2
# 挂载使用
格式化逻辑卷;
[root@web ~]# mkfs.xfs /dev/datavg/lv1
1创建目录并挂载;
[root@web ~]# mkdir /lv1 [root@web ~]# mount /dev/datavg/lv1 /lv1/ [root@web ~]# df -h Filesystem size Used Avail Use% Mounted on ... /dev/mapper/datavg-lv1 97M 5.2M 92M 6% /lv1
1
2
3
4
5
6
# lvm卷组管理
# 扩大卷组
准备新的磁盘加入至
pv
,然后检查卷组当前的大小;[root@web ~]# pvcreate /dev/sdc [root@web ~]# vgs VG #PV #LV #SN Attr VSize VFree datavg 1 1 0 wz--n- 1020.00m 920.00m
1
2
3
4使用
vgextend
扩展卷组;[root@web ~]# vgextend datavg /dev/sdc Volume group "datavg" successfully extended
1
2再次检查,发现卷组已经扩大;
[root@web ~]# vgs VG #PV #LV #SN Attr VSize VFree datavg 2 1 0 wz--n- 1.99g 1.89g
1
2
3
# 缩减卷组
- 假设想移除
/dev/sdb
磁盘,建议先将sdb
磁盘数据先迁移到sdc
磁盘,然后在移除;- 注意:同一卷组的磁盘才可以进行在线迁移;
检查当前逻辑卷
VG
中PV
使用情况;[root@web ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb vg1 1vm2 a -- 2.00g 1.76g /dev/sdc vg1 1vm2 a -- 2.00g 2.00g
1
2
3
4pvmove
在线数据迁移,将sdb
的数据迁移至sdc
;[root@web ~]# pvmove /dev/sdb /dev/ sdb: Moved: 100. 00%
1
2检查是否将
sdb
数据迁移至sdc
;[root@web ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb vg1 1vm2 a -- 2.00g 2.00g /dev/sdc vg1 1vm2 a -- 2.00g 1.76g
1
2
3
4从卷组中移除
sdb
磁盘;[root@web ~]# vgreduce datavg /dev/sdb Removed " /dev/sdb" from volume group "datavg'
1
2
# lvm逻辑卷管理
# 扩展逻辑卷
扩展逻辑卷:取决于
VG
卷中是否还有剩余的容量;注意扩展逻辑卷不能超过卷组
VG
的总大小;[root@web ~]# vgs VG #PV #LV #SN Attr VSize VFree datavg 1 1 0 wz--n- 1020.00m 920.00m
1
2
3
扩展
lv
逻辑卷,增加800M
分配给逻辑卷;[root@web ~]# lvextend -L +800M /dev/datavg/lv1 #也可以选择分配卷组中多少百分比给逻辑卷 [root@web ~]# lvextend -l +50%FREE /dev/datavg/lv1
1
2
3
4扩展逻辑卷后需要更新fs文件系统;
[root@web ~]# xfs_growfs /dev/datavg/lv1 #xfs文件格式扩容 [root@web ~]# resize2fs /dev/datavg/lv1 #ext文件格式扩容
1
2
# 删除逻辑卷
先卸载挂载点,然后在移除逻辑卷;
[root@web ~]# umount /dev/datavg/lv1 [root@web ~]# lvremove /dev/datavg/lv1
1
2删除
vg
;[root@web ~]# vgremove datavg
1删除
pv
;[root@web ~]# pvremove /dev/sdb [root@web ~]# pvremove /dev/sdc
1
2
Last Updated: 2024/03/13, 11:35:42