linux-LVM逻辑卷

"linux"

Posted by yangsir on December 18, 2023

“Yeah It’s on. ”

LVM逻辑卷

注意:逻辑分区和逻辑卷不是一个概念。

普通分区的缺点:

  • 问题一:服务的日志存放在/var/log目录下,现在空间不够了怎么办?
  • 问题二:数据库软件安装在/user/local/mysql目录下,现在空间不够了怎么办?

基本概念

1、pv物理卷

物理卷是 LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘,创建物理卷时,会在分区或硬盘头部创建一个保留区块,用于记录 LVM 的属性,并把存储空间分割成默认大小为 4MB 的基本单元Physical Exent,PE),而构成物理卷。物理卷一般直接使用设备文件名称。

2、VG卷组

由一个或多个物理卷组成一个整体,即成为卷组,在卷组中可以动态添加或移除物理卷,多个物理卷可以分成不同的卷组,卷组的名称用户自己定义。卷组的大小就是多个物理卷大小的总和。

3、LV逻辑卷

逻辑卷建立在卷组之上,与物理卷没有直接关系,对于逻辑卷来说,每一个卷组就是个整体,从这个整体中分割出一块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷。逻辑卷经过格式化创建了文件系统后,就可以挂载使用了。

整个过程

硬盘—>分区—->物理卷 —->卷组—>lv逻辑卷—>格式化—-挂载使用

也就是揉碎–>整合–>重分

LVM相关管理命令

功能 物理卷管理 卷组管理 逻辑卷管理
扫描 pvscan(pvs) vgscan(vgs) lvscan(lvs)
创建 pvcreate vgcreate lvcreate
显示 pvdisplay vgdisplay lvdisplay
删除 pvremove vgremove lvremove
扩展   vgextend lvextend
减少   vgreduce lvreduce

(注意:减少基本上用不到)

示例:

pvcreate

1
pvcreate 设备1(分区)[设备2 ......]

vgcreate格式;

1
vgcreate 卷组名 物理卷名1 物理卷名2......

lvcreate格式:

1
lvcreate  -L 容量大小 (-l 指定PE个数) -n 逻辑卷名 卷组名

xfs_growfs /dev/myvg/mylv 重新识别大小

xfs文件系统只支持增大分区空间的情况,不支持减小

演示:

我现在有一块磁盘sdb,已将其分区sdb1,将其规划成逻辑卷,并将其挂载

image-20250724165843044

确认磁盘分区

首先检查sdb1是否存在并确认其状态

1
2
lsblk /dev/sdb
fdisk -l /dev/sdb1

image-20250724165944264

将分区转换为 LVM 物理卷(PV)

1
2
3
4
5
6
# 将sdb1初始化为物理卷
pvcreate /dev/sdb1

# 验证物理卷创建结果
pvdisplay /dev/sdb1
pvs  # 查看所有物理卷

image-20250724170049625

创建卷组(VG)

1
2
3
4
5
6
# 创建名为vg_data的卷组,包含/dev/sdb1
vgcreate vg_data /dev/sdb1

# 验证卷组创建结果
vgdisplay vg_data
vgs  # 查看所有卷组

image-20250724170151894

创建逻辑卷(LV)

1
2
3
4
5
6
7
8
9
# 创建名为lv_data的逻辑卷,使用卷组所有空间
lvcreate -l +100%FREE -n lv_data vg_data

# 或者创建指定大小的逻辑卷(例如3GB)
lvcreate -L 3G -n lv_data vg_data

# 验证逻辑卷创建结果
lvdisplay /dev/vg_data/lv_data
lvs  # 查看所有逻辑卷

image-20250724170311025

格式化逻辑卷

1
2
3
4
5
# 格式化为ext4文件系统
mkfs.ext4 /dev/vg_data/lv_data

# 或者格式化为xfs文件系统
mkfs.xfs /dev/vg_data/lv_data

image-20250724170352238

挂载逻辑卷

1
2
3
4
5
6
7
8
9
10
11
# 创建挂载点
mkdir /mnt/data

# 临时挂载
mount /dev/vg_data/lv_data /mnt/data

# 设置永久挂载(添加到/etc/fstab)
echo "/dev/vg_data/lv_data /mnt/data ext4 defaults 0 0" >> /etc/fstab

# 验证挂载
df -h /mnt/data

image-20250724170515819

如果资源不足,只需将新的分区进行pv后,加到同一个VG后即可

扩展逻辑卷 0.5G

1
2
3
4
5
# 扩展逻辑卷0.5G
lvextend -L +0.5G /dev/vg_data/lv_data

# 查看逻辑卷状态,确认扩展结果
lvdisplay /dev/vg_data/lv_data

扩展文件系统以识别新增空间

1
2
3
4
5
# 如果是ext4文件系统
resize2fs /dev/vg_data/lv_data

# 如果是xfs文件系统
xfs_growfs /dev/vg_data/lv_data

image-20250724170939612