简述
LVM Logical Volume Manager
,中文一般翻译为 "逻辑卷管理",它是 Linux 下对磁盘分区进行管理的一种机制。LVM利用Linux内核的device-mapper
功能来实现存储系统的虚拟化(系统分区独立于底层硬件)。
LVM 是建立在磁盘分区和文件系统之间的一个逻辑层,++系统管理员可以利用 LVM 在不重新对磁盘分区的情况下动态的调整分区的大小++。如果系统新增了一块硬盘,通过LVM就可以将新增的硬盘空间直接扩展到原来的磁盘分区上。
LVM 的优点:
- 文件系统可以跨多个磁盘,因此大小不再受物理磁盘的限制。
- 可以在系统运行状态下动态地扩展文件系统大小。
- 可以以镜像的方式冗余重要数据到多个物理磁盘上。
- 可以很方便地导出整个卷组,并导入到另外一台机器上。
LVM 缺点:
- 在从卷组中移除一个磁盘的时候必须使用 reducevg 命令(这个命令要求root权限,并且不允许在快照卷组中使用)。
- 当卷组中的一个磁盘损坏时,整个卷组都会受影响。
- 因为增加了一个逻辑层,存储的性能会受影响。
LVM相关概念
- PV(Physical Volume):物理卷
硬盘分区后但还未格式化为文件系统,可使用pvcreate
命令将分区创建为PV,其对应的system ID为8e即LVM格式所对应的系统标识符。
- VG(Volume Group):卷组
将多个PV组合起来,使用vgcreate
创建卷组,这样卷组就可以包含多个PV,相当于重新组合多个分区后所得到的磁盘。虽然VG是组合了多个PV,但创建VG时会将VG所有的空间根据指定的PE大小划分为多个PE,在LVM模式中存储都是以PE为单元,类似于文件系统中的BLOCK。
- PE(Physical Extent):物理块
PE是VG的存储单元,实际的数据都是存储在PE中
- LV(Logical Volume):逻辑卷
VG相当于组合的多个硬盘,则LV相当于分区,只不过该分区是通过VG进行划分的。VG中存在很多PE,可以指定将多少个PE划分给一个LV,也可以直接指定大小来划分。划分为LV后就相当于划分了分区,仅需要对LV进行格式化文件系统即可。
- LE(Logical Extent):逻辑块
PE是物理存储单元,而LE则是逻辑存储单元,即LE为LV中的逻辑存储单元,与PE大小一致。从VG中划分LV,实际上就是从VG中划分PE,而划分LV后称之为LE,而不是PE了。
LVM之所以能够伸缩容量,其实现方法就是将LV中的PE进行删除或增加
LVM的存储机制
LV是从VG中划分出来的,因此LV中的PE可能来自于多个PV。因此向LV存储数据时,主要有两种机制:
- 线性模式(Linear):先将数据存储在属于同一个PV的PE,然后再向下一个PV中的PE
- 条带模式(Striped):将一份数据拆分为多份,分别写入该LV对应的每个PV中,类似于RAID 0,因此读写性能会优于线性模式。
使用场景
在对磁盘分区的大小进行规划时,如果不能确定磁盘分区大小,可以通过LVM来解决;
使用 fdisk、gdisk 等工具对磁盘分区后,磁盘空间就固定了。空间过大会导致浪费,对于分区过小可以从新划分磁盘的分区,或者通过软连接的方式将此分区的目录链接到另外一个分区。这样虽然能够临时解决问题,但会给管理带来麻烦
创建LVM
一、磁盘分区(物理分区)
- 添加硬盘,通过
fdisk -l
查看硬盘是否添加成功; - 对硬盘进行分区
二、准备物理卷
在这之前,检查是否安装了lvm(pvcreat /dev/sdb1),如果未安装,安装命令:
yum install -y lvm2
1、安装好之后,创建物理卷:
2、查看物理卷:
pvdisplay
#或
pvs
三、创建卷组
先用2个物理卷创建一个卷组vg1
vgcreate vg1 /dev/sdb1 /dev/sdb2
使用vgdisplay
或者vgs
查看卷组信息
四、创建逻辑卷
1、在vg1卷组创建一个1000M的逻辑卷:
lvcreate -L 1000M -n lv1 vg1
2、查看逻辑卷信息:
3、逻辑卷格式化:
mkfs.ext4 /dev/vg1/lv1
4、挂载逻辑卷:
mount /dev/vg1/lv1 /data
五、扩展、缩减逻辑卷
- 添加硬盘;
fdisk -l #确认硬盘添加成功
- 开始分区;
fdisk /dev/sdk
Command (m for help): n # 1
Select (default p): p # 2
Partition number (1-4, default 1): 1 # 3
First sector (2048-20971519, default 2048): #4
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): #5
Command (m for help): t # 6
Hex code (type L to list all codes): 8e # 7
Command (m for help): p # 8
Command (m for help): w # 9
partprobe #激活分区
- 创建物理卷pv
pvcreate /dev/sdk #此处可以添加多个磁盘,和raid设备
pvs #查看pv详细信息
pvscan #查看当前系统中的所有PV
- 将物理卷添加至卷组vg
vgdisplay #查看卷组信息
vgextend centos /dev/sdk #将pv添加至centos卷组
- 增加逻辑卷容量
vgdisplay #查看vg可用空间
lvs #查看lvs信息
lvresize -L 30G /dev/vg1/lv1 #重新设置lv大小
lvextend -L +5G /dev/testVG/testLV #扩展lv
e2fsck -f /dev/vg1/lv1 #检查磁盘错误(ext4)
resize2fs /dev/vg1/lv1 #更新逻辑卷信息
xfs_growfs /dev/centos/root #更新逻辑卷信息,针对xfs文件系统
mount /mnt/ #重新挂载磁盘
- lvresize:扩展或缩小逻辑卷
- lvextend: 扩展逻辑卷
- 缩减逻辑卷大小
100缩减逻辑卷的时候,要事先卸载挂载的文件系统,然后减少逻辑卷的容量,然后重新挂载
umount /lvm1
e2fsck -f /dev/vgcyn/lvcyn #强行检查文件系统
resize2fs /dev/vgcyn/lvcyn 10G #缩减逻辑空间到10G
lvreduce -L 10G /dev/vg1/lv1 #缩减逻辑空间到10G
lvs
五、删除逻辑卷,卷组,物理卷
[注意: ]对于创建物理卷、创建卷组以及创建逻辑卷是有严格顺序的,同样,对于删除逻辑卷、删除卷组以及删除物理卷也是有严格顺序要求的
1、首先将正在使用的逻辑卷卸载掉 通过 umount
命令
2、将逻辑卷先删除 通过 lvremove
命令
3、删除卷组 通过 vgremove
命令
3、最后再来删除我们的物理卷 通过 pvremove
命令
补充
2、在yum安装某个服务的时候,如果不知道这个服务的准确名称,但是知道其中的命令,比如LVM我们知道它的软件名称,但是知道LVM中的pvcreate命令,可以:
yum provides "/*/pvcreate"
3、安装好之后,无法创建物理卷,输入命令:
partprobe
参考
https://blog.51cto.com/dreamfire/1084729
https://www.cnblogs.com/gucb/p/13361087.html