LVM 逻辑卷管理
一、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