1、基础
1.1、为何要用LVM
当刚开始安装Linux系统时,往往不能确定每个分区使用的空间大小,只能凭经验分配不科学;
如果分区设置的过大,就浪费了磁盘空间;
如果分区设置的过小,就会导致空间不够;
如何希望分配的空间过大或过小,都能动态调整,则需要使用到LVM逻辑卷;
1.2、什么是LVM
LVM是Logical volume Manager逻辑卷管理的简写,它是对磁盘分区管理的一种机制;
LVM优点:
1、LVM可以创建和管理逻辑卷,而不是直接使用物理硬盘。
2、LVM可以弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据;
3、LVM可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。
LVM缺点:
1、LVM如果有一个磁盘损坏,整个LVM都坏了,LVM只有动态扩展作用。
解决办法:用RAID+LVM,既有冗余又有动态扩展;
1.3、LVM相关术语
1.3.1、术语介绍
1、物理卷(PV)︰将常规的磁盘通过pvcreate命令对其进行初始化,形成了物理卷。(面粉)
2、卷组(VG)︰把多个物理卷组成一个逻辑的整体,这样卷组的大小就是多个盘之和。(大面团)
3、逻辑卷(LV)︰从卷组中划分需要的空间大小出来,用户仅需对其格式化然后即可挂载使用。(切成馒头)
4、基本单元(PE):分配的逻辑大小的最小单元,默认4MB,假设分配10OMB的空间,则需要创建25个PE
1.3.2、构架图

2、LVM配置实战
2.1、配置流程
1、准备三块物理磁盘,建议在虚拟机关闭状态添加,以便更好的实验;
2、创建卷【PV】,将普通磁盘转换为物理卷【PV】
3、创建卷组【VG】,将物理卷【PV】加入到卷组【VG】
4、在卷组【VG】中划分逻辑卷【LV】,然后挂载使用
2.2、创建物理卷【PV】
2.2.1、创建物理卷
pvcreate /dev/sdb
如果有报如下错误的解决方法:
原因:该设备之前有被分区使用过的
]# pvcreate /dev/sdb
Device /dev/sdb excluded by a filter.
]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel msdos
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to
continue?
Yes/No? yes
(parted) quit
Information: You may need to update /etc/fstab.
操作好后,重新创建pv即可
2.2.2、检查pv创建结果-pvs
]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 19.53g 0
/dev/sdb lvm2 --- 5.00g 5.00g
2.3、创建卷组【VG】
2.3.1、创建名为datavg的卷组,然后将物理卷加入进卷组
2.3.2、检查卷组-vgs
~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 19.53g 0
datavg 1 0 0 wz--n- <5.00g <5.00g
2.4、创建逻辑卷【PV】
2.4.1、分配datavg 逻辑卷
lvcreate -L 100M -n lv1 datavg
-n 指定逻辑卷名称
-L 指定逻辑卷大小
2.4.2、检查逻辑卷-lvscan
]# lvscan
ACTIVE '/dev/centos/swap' [1.91 GiB] inherit
ACTIVE '/dev/centos/root' [17.62 GiB] inherit
ACTIVE '/dev/datavg/lv1' [100.00 MiB] inherit
2.5、挂载使用
2.5.1、格式化逻辑卷
2.5.2、挂载并且写入数据测试
mkdir /mnt/lv1
mount /dev/datavg/lv1 /mnt/lv1/
echo "test" >/mnt/lv1/index.html
3、LVM-卷组管理
3.1、扩容卷组
3.1.1、准备新的磁盘加入至pv,然后检查卷组当前的大小
~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 19.53g 0
datavg 1 1 0 wz--n- <5.00g <4.90g
3.1.2、使用vgextend扩展卷组
3.1.3、查询卷组有没有扩大
]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 19.53g 0
datavg 2 1 0 wz--n- 9.99g 9.89g
3.2、缩容卷组
3.2.1、需求
假设想移除/dev/sdb磁盘,建议先将sdb磁盘数据先迁移到sdc磁盘,然后在移除;
注意:同一卷组的磁盘才可以进行在线迁移
3.2.2、检查当前逻辑卷vg 中pv使用情况
]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 19.53g 0
/dev/sdb datavg lvm2 a-- <5.00g <4.90g
/dev/sdc datavg lvm2 a-- <5.00g <5.00g
3.2.3、pvmove在线数据迁移,将sdb 的数据迁移至sdc
]# pvmove /dev/sdb
/dev/sdb: Moved: 100.00%
3.2.4、检查是否将sdb数据迁移至sdc
]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 19.53g 0
/dev/sdb datavg lvm2 a-- <5.00g <5.00g
/dev/sdc datavg lvm2 a-- <5.00g <4.90g
3.2.5、从卷组中移除sdb磁盘
]# vgreduce datavg /dev/sdb
Removed "/dev/sdb" from volume group "datavg"
4、LVM-逻辑卷管理
4.1、扩容逻辑卷
4.1.1、扩容注意事项
1、扩展逻辑卷︰取决于vg 卷中是否还有剩余的容量
2、扩展逻辑卷不能超过卷组vg的总大小
4.1.2、查询卷组总的大小
]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 19.53g 0
datavg 1 1 0 wz--n- <5.00g <4.90g
4.1.3、扩容lv逻辑卷,增加800M分配给逻辑卷
lvextend -L +800M /dev/datavg/lv1
4.1.4、扩展逻辑卷后需要更新fs文件系统
# xfs格式
xfs_growfs /dev/datavg/lv1
# ext格式
resize2fs /dev/datavg/lv1
4.2、删除逻辑卷
4.2.1、卸载挂载点,然后在移除逻辑卷
umount /dev/datavg/lv1
lvremove /dev/datavg/lv1
4.2.2、删除卷组gv
4.2.3、删除物理卷pv
pvremove /dev/sdb
pvremove /dev/sdc
5、排错方法
5.1、如果遇到创建pv有问题,使用lsblk查询硬盘占用情况
]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 476M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 17.6G 0 lvm /
└─centos-swap 253:1 0 1.9G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
└─datavg-lv1 253:2 0 100M 0 lvm /mnt/lv1
sdc 8:32 0 5G 0 disk
└─sdc1 8:33 0 5G 0 part
sdd 8:48 0 5G 0 disk
sr0 11:0 1 973M 0 rom