LVM详解


简述

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进行删除或增加

image

LVM的存储机制

LV是从VG中划分出来的,因此LV中的PE可能来自于多个PV。因此向LV存储数据时,主要有两种机制:

  • 线性模式(Linear):先将数据存储在属于同一个PV的PE,然后再向下一个PV中的PE
  • 条带模式(Striped):将一份数据拆分为多份,分别写入该LV对应的每个PV中,类似于RAID 0,因此读写性能会优于线性模式。

使用场景

在对磁盘分区的大小进行规划时,如果不能确定磁盘分区大小,可以通过LVM来解决;
使用 fdisk、gdisk 等工具对磁盘分区后,磁盘空间就固定了。空间过大会导致浪费,对于分区过小可以从新划分磁盘的分区,或者通过软连接的方式将此分区的目录链接到另外一个分区。这样虽然能够临时解决问题,但会给管理带来麻烦

创建LVM

一、磁盘分区(物理分区)

  1. 添加硬盘,通过fdisk -l查看硬盘是否添加成功;
  2. 对硬盘进行分区

二、准备物理卷

在这之前,检查是否安装了lvm(pvcreat /dev/sdb1),如果未安装,安装命令:

yum install -y lvm2
1、安装好之后,创建物理卷:

2、查看物理卷:
pvdisplay
#或
pvs

LVM逻辑卷的创建与使用

三、创建卷组

先用2个物理卷创建一个卷组vg1

vgcreate vg1 /dev/sdb1 /dev/sdb2

LVM逻辑卷的创建与使用

使用vgdisplay或者vgs查看卷组信息

四、创建逻辑卷

1、在vg1卷组创建一个1000M的逻辑卷:

lvcreate -L 1000M -n lv1 vg1

LVM逻辑卷的创建与使用

2、查看逻辑卷信息:

LVM逻辑卷的创建与使用

3、逻辑卷格式化:

mkfs.ext4 /dev/vg1/lv1

LVM逻辑卷的创建与使用

4、挂载逻辑卷:

mount /dev/vg1/lv1 /data

五、扩展、缩减逻辑卷

  1. 添加硬盘;
fdisk -l   #确认硬盘添加成功
  1. 开始分区;
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  #激活分区
  1. 创建物理卷pv
pvcreate /dev/sdk   #此处可以添加多个磁盘,和raid设备
pvs     #查看pv详细信息
pvscan          #查看当前系统中的所有PV
  1. 将物理卷添加至卷组vg
vgdisplay		#查看卷组信息
vgextend centos /dev/sdk   #将pv添加至centos卷组
  1. 增加逻辑卷容量
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: 扩展逻辑卷
  1. 缩减逻辑卷大小

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

LVM----扩展/缩小VG与扩展/缩小LV


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM