LVM 逻辑卷管理

发布时间 2023-05-08 23:44:54作者: m_zhuang

一、LVM 的概念

LVM 是一种逻辑卷管理器,它可以将多个硬盘分区合并成一个逻辑卷组(VG),然后将逻辑卷组进行分区,形成一个个逻辑卷(LV)。用户可以动态的对其进行扩容和缩容,更加快速的对分区进行管理。

1.LVM 的优点

(1)突破硬盘容量的限制

传统的分区方式是将硬盘或分出多个的分区,每个分区的大小都是固定的,很难灵活的调整。

LVM 是通过将硬盘空间划分成多个物理卷(PV),然后将这些物理卷组成多个逻辑卷组(VG),逻辑卷组是不受空间大小限制的,只要有足够的硬盘就可以将硬盘添加进逻辑卷组中,再从逻辑卷组中把存储空间分给逻辑卷,达到灵活调整的目的。

(2)具有高可用性

LVM 支持在多个物理卷之间建立冗余存储(RAID),提供数据数据冗余和容错机制,保证数据的安全。

(3)具有可靠性

LVM 技术可以实现热备份和数据动态迁移。当某个硬盘出现故障时,可以在不停机的情况下对数据进行恢复和重建,提高数据的可靠性。

(4)管理性

LVM 技术可以对多个物理硬盘和多个逻辑卷进行集中管理和监控,LVM 的命令可以很方便的对存储空间的查看和监测,以及对性能进行调优和容错管理。

(5)高性能

LVM 提供了一种数据块级别的数据读写操作,可以实现高效的数据存储和访问。它还可以利用多个物理硬盘的并行处理能力,提高数据的访问速度和效率。

2. LVM 的组成

(1)物理卷

简称 PV,是真正的物理硬盘或者分区

(2)逻辑卷组

简称 VG,是将多个物理卷组合而成(组成一个物理卷可以是同一物理硬盘的不同分区,也可以是不同物理硬盘的分区)

(3)逻辑卷

简称 LV,是在逻辑卷组上进行分区的而来(逻辑卷组只有被分区和格式化后才可以使用)

(4)物理扩展

简称 PE,是用来存储数据的最小单元(可以配置,默认大小为 4 MB)

二、LVM 的管理命令

1. 功能管理命令

功能 PV 管理命令 VG 管理命令 LV管理命令
Scan(扫描) pvscan vgscan lvscan
Create(建立) pvcreate vgcreate lvcreate
Display(显示) pvdisplay vgdisplay lvdisplay
Extend(扩展) pvextend vgextend lvextend
Reduce(减少) vgreduce lvreduce

2. 命令格式

管理命令 命令格式
pvcreate(创建物理卷) pvcreate 设备名1 [设备名2] [设备名3] ……
pvdisplay(显示物理卷) pvdisplay 设备名1 [设备名2] ……(若不加设备名,则是查看所有的物理卷信息)
vgcreate(创建逻辑卷组) vgcreate 逻辑卷组名 物理卷名1 [物理卷名2] ……
vgdisplay ( 显示逻辑卷组 ) vgdispay 逻辑卷组名1 [逻辑卷组名2] …… (若不加卷组名,则是查看所有的逻辑卷组信息)
vgextend(扩容逻辑卷组) vgextend 逻辑卷组名 物理卷名1 [物理卷名2] ……(可以直接用设备名,系统可以直接将设备转成物理卷)
lvcreate(创建逻辑卷) lvcreate -L 容量大小(MB GB TB) -n 逻辑卷名 逻辑卷组名(容量还可以用 -l ,PE为单位)
lvdisplay(查看逻辑卷) lvdisplay 逻辑卷名1 [逻辑卷名2] ……(若不加逻辑卷名,则是查看所有的逻辑卷信息)
lvextend(扩容逻辑卷) lvextend -L +容量大小(MB GB TB) -n 逻辑卷名
lvreduce(缩容逻辑卷) lvreduce -L -容量大小(MB GB TB) -n 逻辑卷名
(只有EXT4文件系统的逻辑卷可以缩容)

三、实操

1. 创建硬盘物理分区

将新添加的物理硬盘 sdb sdc sdd 进行分区

(1)显示要分区的硬盘

[root@localhost ~]# lsblk

(2)将sdb进行分区,分区类型为主分区,分区名为 sdb1,分区大小为10G,文件系统为 LVM

[root@localhost ~]# fdisk /dev/sdb
	n		# 创建分区
	p		# 创建主分区
	1		# 选择分区号为1,分区名则为sdb1
 回车,默认
   +10G		# 设置分区大小为10G
 	t		# 进入更改文件系统交互模式
    8e		# 更改系统文件类型为LVM,它的代码是8e,查看所有的文件系统代码输入 l 可查看
    w		# 保存并退出
    

(3)对剩下的硬盘进行分区,步骤与 sdb1 的分区一致

2. 创建物理卷

将刚刚分的3个不同硬盘上的分区创建成物理卷

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1

3. 创建逻辑卷组

将物理卷sdb1、sdc1创建为一个逻辑卷组,逻辑卷组名为 testvg1

[root@localhost ~]# vgcreate testvg1 /dev/sdb1 /dev/sdc1

将物理卷sdd1 创建为一个逻辑卷组,逻辑卷组名为 testvg2

[root@localhost ~]# vgcreate testvg2 /dev/sdd1

4. 创建逻辑卷

从逻辑卷组testvg1中分出 15G 创建逻辑卷testlv

[root@localhost ~]# lvcreate -L 15G -n testlv testvg1

5. 格式化逻辑卷

逻辑卷须经格式化才可使用

将逻辑卷testlv格式化,文件系统类型为xfs

[root@localhost ~]# mkfs.xfs /dev/testvg1/testlv

6. 挂载逻辑卷

逻辑卷必须挂载后才可以写入数据

将逻辑卷testlv挂载至 /data/LV1 目录下

(1)临时挂载

临时挂载---系统重启后会失效,需要重新挂载

[root@localhost ~]# mkdir -p /data/LV1
[root@localhost ~]# mount /dev/testvg1/testlv /data/LV1


(2)永久挂载

永久挂载---系统重启后依旧有效

[root@localhost ~]# vim /etc/fstab
	/dev/testvg1/testlv /data xfs defaults 0 0
[root@localhost ~]# reboot



7. 逻辑卷扩容

查看逻辑卷组的空间是否足够

足够 --- 直接对逻辑卷扩容

不足够 --- 将物理分区创建成物理卷,再将物理卷添加到逻辑卷组,在对逻辑卷扩容

(1)当逻辑卷组空间足够时对逻辑卷扩容

将逻辑卷testlv 扩容 4G

[root@localhost ~]# lvextend -L +4G /dev/testvg1/testlv

(2)当逻辑卷组的空间不足够时对逻辑卷扩容

将逻辑卷testlv 扩容 6G

[root@localhost ~]# fdisk /dev/sdb
	n
	p
	2
	回车,默认
	回车,默认
	t
	8e
	w
[root@localhost ~]# vgextend testvg1 /dev/sdb2
[root@localhost ~]# lvextend -L +6G /dev/testvg1/testlv 

# 还需要刷新以下
# 可以在逻辑卷扩容的命令后加上 -r 表示扩容完后刷新
# 也可以使用下面命令刷新
[root@localhost ~]# xfs_growfs /dev/testvg1/testlv






8. 解除逻辑卷挂载

解除逻辑卷testlv挂载

[root@localhost ~]# umount -lf /dev/testvg1/testlv 

9. 磁盘配额

当linux的根分区空间耗尽时,系统将无法创建新文件,导致系统崩溃。为防止这种情况,可以使用磁盘配额功能,对指定用户对指定分区做出空间和文件数量上的限制。

不同的文件系统有不同的磁盘配额配置管理工具

XFS 文件系统使用 xfs_quota 工具进行管理

EXT3/4 文件系统使用的是 quota 工具进行管理

(1)安装所需软件

检查是否安装 xfsprogs 和 xfsquota 软件包

[root@localhost ~]# rpm -q xfsprogs quota
[root@localhost ~]# yum -y install xfsprogs quota

(2)挂载逻辑卷并启用磁盘配额

首先将需要启用磁盘配额的逻辑卷解挂载,再进行挂载启用磁盘配额功能,并关闭selinux防火墙

[root@localhost ~]# umount /dev/testvg1/testlv 
[root@localhost ~]# mount -o usrquota,grpquota /dev/testvg1/testlv /data/LV1
[root@localhost ~]# setenforce 0

# 也可以使用永久挂载
[root@localhost ~]# vim /etc/fstab
	/dev/stestvg1/testlv /data/LV1 defaults,usrquota,grpquota 0 0
	# 配置完成后需要重启系统

(3)对指定用户限制磁盘配额

创建一个用户testuser1,逻辑卷testlv对其进行限制空间配额

testuser1用户最多只能在逻辑卷testlv中创建3个文件,最大使用空间不许超过100MB

[root@localhost ~]# useradd testuser1
[root@localhost ~]# passwd testuser1
[root@localhost ~]# chmod 777 /data//LV1/
[root@localhost ~]# xfs_quota -x -c 'limit -u bsoft=80M bhard=100M testuser1' /data/LV1
[root@localhost ~]# xfs_quota -x -c 'limit -u isoft=2 ihard=3 testuser1' /data/LV1

# -x:表示启用专家模式,当前模式是下,可以使用所有的配额系统命令
# -c:表示直接调用管理命令
# -u:表示指定的用户对象
# bsoft:表示设置磁盘容量的软限制值
# bhard:表示设置磁盘容量的硬限制值
# isoft:表示设置磁盘文件数的软限制值
# ihard:表示设置磁盘文件数的硬限制值


(4)检验是否限制成功

(5)解除磁盘配额限制

需要恢复磁盘配额限制,重新挂载即可

[root@localhost ~]# xfs_quota -x -c 'disable -up' /data/LV1
[root@localhost ~]# su - testuser1
[testuser1@localhost ~]$ cd /data/LV1
[testuser1@localhost LV1]$ touch 2 3 4 5 6
[testuser1@localhost LV1]$ dd if=/dev/zero of=2 bs=10M count=12