当前位置:首页>Linux>Linux 使用 LVM 挂载磁盘:从零到自动挂载

Linux 使用 LVM 挂载磁盘:从零到自动挂载

  • 2026-10-10 16:40:53
Linux 使用 LVM 挂载磁盘:从零到自动挂载

Linux 使用 LVM 挂载磁盘:从零到自动挂载

一、什么是 LVM

LVM(Logical Volume Manager,逻辑卷管理器)是 Linux 下对磁盘进行弹性管理的方案。传统分区一旦划分就固定了,而 LVM 允许你动态调整文件系统大小、跨多个物理磁盘、在线扩容,无需重新格式化或重新分区。

核心概念三件套:

  • PV(Physical Volume,物理卷):LVM 的基础单元,通常是整个磁盘或磁盘分区,初始化后可添加到卷组

  • VG(Volume Group,卷组):由一个或多个物理卷组成的存储池,大小是所有物理卷大小的总和

  • LV(Logical Volume,逻辑卷):从卷组中分配空间创建的虚拟磁盘,可格式化为任何文件系统并挂载使用

简单理解:PV 是砖,VG 是墙,LV 是房间。

二、实操步骤

下面以一块新磁盘 /dev/vdb 为例,完整走一遍 LVM 创建到挂载的流程。

1. 确认磁盘并创建物理卷(PV)

首先确认目标磁盘存在且未被占用:

# 查看磁盘状态[root@wc-ckg-99-2 data]# lsblk | grep vdbvdb    253:16   0  300G  0 disk└─vdb1 253:17   0  300G  0 part

如果磁盘已有分区(如 vdb1),需要清除分区上的残留数据再创建物理卷:

[root@wc-ckg-99-2 data]# sudo wipefs -a /dev/vdb1/dev/vdb1: 2 bytes were erased at offset 0x00000438 (ext4): 53 ef

将磁盘或分区转化为物理卷,如下则创建成功:

[root@wc-ckg-99-2 data]# pvcreate /dev/vdb1  Physical volume "/dev/vdb1" successfully created.

验证pvs或者 pvdisplay:

[root@wc-ckg-99-2 ~]# pvs  PV         VG      Fmt  Attr PSize    PFree  /dev/vdb1  data_vg lvm2 a--  <300.00g <300.00g

2. 创建卷组(VG)

把物理卷加入到卷组中,卷组名 data_vg:

[root@wc-ckg-99-2 ~]# vgcreate data_vg /dev/vdb1  Volume group "data_vg" successfully created.

验证 vgs或者vgdisplay:

[root@wc-ckg-99-2 ~]# vgs  VG      #PV #LV #SN Attr   VSize    VFree  data_vg   100 wz--n- <300.00g <300.00g

如果是已有卷组想扩容,可以用 vgextend 把新的物理卷加到现有卷组里:

vgextend data_vg /dev/vdb1

3. 创建逻辑卷(LV)

从卷组中分配空间创建逻辑卷。两种方式:

全部可用空间:

[root@wc-ckg-99-2 ~]# lvcreate -l 100%FREE -n data_lv data_vg  Logical volume "data_lv" created.

指定大小(如 10G):

lvcreate -L 10G -n data_lv data_vg

验证 lvs 或者 lvdisplay:

[root@wc-ckg-99-2 ~]# lvs  LV      VG      Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  data_lv data_vg -wi-a----- <300.00g

4. 格式化逻辑卷(xfs或者ext4)

先通过 lvdisplay 确认逻辑卷路径,再格式化:

# 查看逻辑卷路径[root@ansible-111 worker]# lvdisplay--- Logical volume ---  LV Path                /dev/data_vg/data_lv  LV Name                data_lv  VG Name                data_vg  ...

格式化(XFS 或 ext4 均可):

# XFS(推荐,支持在线扩容)mkfs.xfs /dev/data_vg/data_lv# ext4[root@wc-ckg-99-2 ~]# mkfs.ext4 /dev/data_vg/data_lvmke2fs 1.45.6 (20-Mar-2020)Creating filesystem with 78642176 4k blocks and 19660800 inodesFilesystem UUID: d7d4960c-555d-42ef-96db-e11056b29f75...Writing superblocks and filesystem accounting information: done.

生产环境推荐 XFS(支持在线扩容,CentOS 7+ 默认文件系统),ext4 也可用(支持扩缩容,但缩容风险较高)。

5. 挂载逻辑卷

# 创建挂载点并临时挂载mkdir /datamount /dev/data_vg/data_lv /data# 验证df -h /data

6. 配置开机自动挂载

推荐使用 UUID 而非设备路径,避免磁盘顺序变化导致挂载错乱:

# 查看逻辑卷 UUID[root@wc-ckg-99-2 ~]# blkid/dev/mapper/data_vg-data_lv: UUID="d7d4960c-555d-42ef-96db-e11056b29f75"BLOCK_SIZE="4096"TYPE="ext4"# 写入 fstabecho"UUID=d7d4960c-555d-42ef-96db-e11056b29f75  /data  ext4  defaults  0 0" >> /etc/fstab# 测试 fstab 配置是否正确(无报错即为成功)mount -a

也可以用 /dev/mapper/data_vg-data_lv 路径写入 fstab,但 UUID 方式更稳妥。

三、总结命令流程

# 1. 创建物理卷pvcreate /dev/vdb# 2. 创建卷组vgcreate data_vg /dev/vdb# 3. 创建逻辑卷lvcreate -l100%FREE -n data_lv data_vg# 4. 格式化mkfs.ext4 /dev/data_vg/data_lv# 5. 挂载mkdir /datamount /dev/data_vg/data_lv /data# 6. 配置开机自动挂载blkid /dev/data_vg/data_lv  # 获取 UUIDecho"UUID=xxxx-xxxx  /data  ext4  defaults  0 0" >> /etc/fstabmount -a# 测试

四、日常扩容操作

LVM 最大的好处就是在线扩容,不用停机。假设空间不够了,新加了一块 /dev/vdc:

# 1. 新磁盘创建 PVpvcreate /dev/vdc# 2. 扩展卷组vgextend data_vg /dev/vdc# 3. 扩展逻辑卷(增加 50G)lvextend -L+50G /dev/data_vg/data_lv# 4. 刷新文件系统(XFS 用 xfs_growfs,ext4 用 resize2fs)xfs_growfs /data

四条命令,全程在线,不停服务。

五、LVM 优缺点总结

优点:

  • 灵活性:动态调整逻辑卷大小,无需停机或重新分区

  • 可扩展性:轻松添加新物理卷到卷组,增加存储容量

  • 快照支持:可创建逻辑卷快照,方便备份和恢复

  • 条带化:可在多个物理卷之间条带化数据,提高读写性能

  • 故障隔离:逻辑卷跨多个物理卷,单盘故障不影响其他卷

缺点:

  • 复杂性:比传统分区管理更复杂,需要理解 PV/VG/LV 概念

  • 性能开销:额外的抽象层可能引入轻微性能损耗

  • 学习曲线:初学者需要时间熟悉 LVM 的概念和命令

六、常用命令速查

命令作用
pvs / pvdisplay查看物理卷信息
vgs / vgdisplay查看卷组信息
lvs / lvdisplay查看逻辑卷信息
vgextend扩展卷组
vgremove删除卷组
lvextend扩展逻辑卷
lvremove删除逻辑卷
xfs_growfs刷新 XFS 文件系统(扩容后)
resize2fs刷新 ext4 文件系统(扩容后)
wipefs -a清除磁盘分区残留数据

七、注意事项

  • 写 fstab 优先用 UUID,避免磁盘顺序变化导致挂载混乱

  • XFS 只支持扩容不支持缩容,ext4 支持扩缩容但缩容需先卸载,生产环境慎用

  • 操作前建议先 vgs 确认卷组剩余空间(VFree)够不够

  • 新磁盘创建 PV 前先 lsblk 确认磁盘未被占用,必要时用 wipefs -a 清除残留

最新文章

随机文章