万字吃透Linux LVM逻辑卷!弹性扩容+快照备份+RAID融合实战
摘要:在Linux服务器运维中,传统磁盘分区固化、无法灵活扩容、不支持跨盘存储的短板,早已无法适配生产环境动态业务需求。而LVM逻辑卷管理作为Linux核心存储技术,凭借灵活伸缩、跨盘聚合、快照备份、冗余容错等特性,成为企业存储标配方案。本文从传统分区缺陷切入,详解LVM核心原理、PV/VG/LV完整实操、卷组扩缩容、逻辑卷调优、XFS/EXT4文件系统适配、快照备份恢复、RAID逻辑卷部署,全程真机命令实操,零基础也能快速掌握生产级LVM运维技巧。
标签:Linux运维、LVM逻辑卷、磁盘存储、存储扩容、文件系统调优、数据快照、RAID存储、服务器运维
一、实验环境准备
本次所有实操基于 CentOS 7 纯净虚拟机环境,无预装多余服务、无磁盘残留数据。手动新增 3块20G空白硬盘,设备纯净无分区、无格式化,保证所有操作可1:1复刻落地。
本次实验磁盘设备:/dev/sdb、/dev/sdc、/dev/sdd
查看磁盘设备状态,确认磁盘空闲可用:
[root@server ~ 14:36:41]# lsblk /dev/sd[b-d]
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
二、传统分区 VS LVM逻辑卷
想要理解LVM的核心价值,首先要清楚传统磁盘分区的致命短板,这也是企业普遍弃用传统分区、全面改用LVM的核心原因。
2.1 传统硬盘分区方案缺点
传统MBR、GPT磁盘分区属于静态存储划分方式,分区大小固定、空间固化,在动态业务场景中局限性极强:
-
空间扩容极其受限:分区仅能使用磁盘连续空间,若分区后方无空闲磁盘空间,无法直接扩容,只能重新分区、迁移数据,操作繁琐且风险极高。
-
单盘容量限制:单个文件系统只能依托单块物理磁盘创建,无法跨多块硬盘聚合容量,无法搭建超大容量存储池。
-
数据容错能力弱:磁盘与分区强绑定,单块硬盘损坏,对应分区内所有数据直接丢失,无冗余备份机制。
-
无法动态调优:分区创建后大小固定,扩容、缩容、重构均需要离线操作,会直接中断业务运行。
2.2 LVM逻辑卷方案核心优点
LVM(Logical Volume Manager,逻辑卷管理器)是Linux专属的动态弹性存储管理机制,彻底解决传统分区痛点,适配90%以上企业服务器存储场景:
-
弹性伸缩灵活:支持逻辑卷在线扩容、离线缩容,无需重装系统、无需迁移全量数据,不影响核心业务运行。
-
跨盘聚合存储:可将多块物理硬盘整合为统一存储池,突破单盘容量限制,轻松搭建超大容量文件系统。
-
支持数据冗余:可结合RAID技术创建镜像逻辑卷,实现磁盘数据冗余,单块硬盘损坏不会丢失数据、不中断业务。
-
快照备份恢复:自带LV快照功能,可秒级留存数据某一时刻完整状态,实现快速备份与误删数据恢复。
-
资源利用率最大化:磁盘资源池化管理,可按需分配、回收存储空间,避免磁盘资源闲置浪费。
三、LVM核心概念与工作流程
3.1 核心概念详解
LVM整体架构分为三层:物理卷PV → 卷组VG → 逻辑卷LV,三层逐级封装,是LVM运维的核心逻辑,必须熟练掌握。
1. PV 物理卷(Physical Volume)
LVM的最小物理存储单元,是将普通磁盘、磁盘分区、RAID阵列等块设备,初始化后的专属LVM存储设备。物理卷会记录LVM专属管理参数,为上层卷组提供原始存储空间。
2. VG 卷组(Volume Group)
由一个或多个物理卷PV聚合而成的存储资源池。卷组无固定容量限制,可随时新增PV扩容、移除PV缩容,所有逻辑卷均从卷组中分配空间。
3. LV 逻辑卷(Logical Volume)
从卷组VG中按需划分的逻辑存储空间,是最终给用户使用的存储载体。类比传统分区:卷组相当于一块超大虚拟硬盘,逻辑卷相当于虚拟硬盘上的分区,可直接格式化、挂载使用。
3.2 LVM标准工作流程
LVM所有部署、运维操作,严格遵循固定流程:初始化物理卷PV → 创建/扩容卷组VG → 创建/调优逻辑卷LV → 格式化文件系统 → 挂载使用
四、LVM基础实操:PV/VG/LV创建与管理
4.1 常用命令及选项
| PV 物理卷 | pvcreate /dev/sdX [-f] | 磁盘格式化为 PV,-f 强制清除旧分区、阵列残留 |
| pvdisplay [/dev/sdX] | 查看全部 / 单个 PV 详细参数 | |
| pvs [-o + 自定义字段] | 精简列表快速查看所有 PV | |
| pvremove /dev/sdX [-f] | 擦除 PV 的 LVM 标签,-f 强制删除 | |
| pvmove 源 PV [目标 PV] [-n LV 名] | PV 数据迁移,可定向迁移、指定 LV 迁移 | |
| pvresize /dev/sdX [–setphysicalvolumesize 容量] | 刷新扩容空间、手动限制 PV 大小 | |
| pvscan [-v] | 全盘扫描识别所有 LVM 物理卷 | |
| VG 卷组 | vgcreate [-s PE 尺寸] VG 名 PV1 PV2… | 创建卷组,-s 仅创建时设置 PE 大小,后续不可改 |
| vgdisplay [VG 名称] | 查看全部 / 单个 VG 详细信息 | |
| vgs [-o + 自定义字段] | 简洁列表查看卷组容量、空闲空间 | |
| vgextend VG 名 /dev/sdX | 新增 PV,扩容卷组总空间 | |
| vgreduce VG 名 /dev/sdX [-a/–removemissing] | 移除空闲 PV、清理损坏丢失 PV | |
| vgremove VG 名 [-f] | 删除整卷组,-f 免确认强制删除 | |
| vgrename 旧名 新名 | 卷组重命名 | |
| vgchange -a y/n VG 名 | -ay 激活 VG、-an 离线停用 VG | |
| vgsplit/vgmerge | 拆分卷组、合并闲置卷组 | |
| vgexport/vgimport VG 名 | 跨服务器迁移 VG 的导出、导入 | |
| vgscan | 扫描全局所有卷组 | |
| LV 逻辑卷 | lvcreate -L 容量 /-lPE 数 -nLV 名 VG 名 [-i 条带 /-m 镜像 /-s 快照] | 创建普通 / 条带 / 镜像 / 快照逻辑卷 |
| lvdisplay [/dev/VG/LV] | 查看全部 / 单个 LV 详情 | |
| lvs [-o + 自定义字段] | 列表快速查看逻辑卷状态与大小 | |
| lvextend -L± 容量 /-l+100% FREE [-r] /dev/VG/LV | 扩容 LV,-r 自动同步扩容文件系统 | |
| lvreduce -L± 容量 [-r/-f] /dev/VG/LV | 缩容 LV,仅 ext4 可用,XFS 禁止缩容 | |
| lvresize -L 容量 [-r] /dev/VG/LV | 通用伸缩 LV,-r 联动文件系统大小 | |
| lvremove [-f] /dev/VG/LV | 删除逻辑卷,-f 强制删除 | |
| lvrename 旧路径 新路径 | 逻辑卷重命名 | |
| lvchange -a y/n /dev/VG/LV | 激活、离线停用 LV,可修改读写权限 | |
| lvconvert –merge/–type raid1 /dev/VG/LV | 快照回滚、普通 LV 转为镜像 LV、故障盘替换 | |
| lvscan | 全盘扫描所有逻辑卷 |
4.2 物理卷 PV 创建与查看
将空闲磁盘设备初始化为LVM物理卷,支持单块磁盘创建、多块磁盘批量创建。
# 单个磁盘创建PV
[root@server ~ 14:56:09]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
# 批量多磁盘创建PV
[root@server ~ 14:56:58]# pvcreate /dev/sd[cd]
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.
简洁查看所有物理卷概要信息:
[root@server ~ 14:57:04]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a– <199.00g 4.00m
/dev/sdb lvm2 — 20.00g 20.00g
/dev/sdc lvm2 — 20.00g 20.00g
/dev/sdd lvm2 — 20.00g 20.00g
查看单个物理卷详细参数:
[root@server ~ 14:58:45]# pvdisplay /dev/sdb
"/dev/sdb" is a new physical volume of "20.00 GiB"
— NEW Physical volume —
PV Name /dev/sdb
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID pDGM56-OeYz-hkAM-2HE6-MuiH-ZG3U-s2oPvg
4.3 卷组 VG 创建与查看
将初始化完成的物理卷聚合为卷组,支持单PV创建卷组、多PV聚合创建卷组。
# 单物理卷创建卷组 webapp
[root@server ~ 14:58:53]# vgcreate webapp /dev/sdb
Volume group "webapp" successfully created
# 多物理卷聚合创建卷组 dbapp
[root@server ~ 15:01:03]# vgcreate dbapp /dev/sd[cd]
Volume group "dbapp" successfully created
查看PV与VG绑定状态:
[root@centos7 ~]# pvs
[root@server ~ 15:01:08]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a– <199.00g 4.00m
/dev/sdb webapp lvm2 a– <20.00g <20.00g
/dev/sdc dbapp lvm2 a– <20.00g <20.00g
/dev/sdd dbapp lvm2 a– <20.00g <20.00g
简洁查看所有卷组概要:
[root@centos7 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
dbapp 2 0 0 wz–n- 39.99g 39.99g
webapp 1 0 0 wz–n- <20.00g <20.00g
查看卷组详细信息(含PE单元、容量、设备数):
[root@server ~ 15:01:48]# vgdisplay dbapp
— Volume group —
VG Name dbapp # 卷组名称
System ID
Format lvm2 # 采用lvm2格式
Metadata Areas 2 # 元数据存储在2个物理卷上
Metadata Sequence No 1 # 卷组操作序列号,每次变更自动递增
VG Access read/write # 卷组权限:可读可写
VG Status resizable # 卷组支持扩容、缩容
MAX LV 0 # 最大逻辑卷数量限制,0为无限制
Cur LV 0 # 当前已创建逻辑卷总数
Open LV 0 # 当前正在挂载使用的逻辑卷数量
Max PV 0 # 最大物理卷数量限制,0为无限制
Cur PV 2 # 已加入该VG的物理卷总数
Act PV 2 # 正常在线可用的物理卷数量
VG Size 39.99 GiB # 卷组整体总容量
PE Size 4.00 MiB # PE最小分配单元,LVM空间最小划分粒度
Total PE 10238 # 卷组全部PE总数
Alloc PE / Size 0 / 0 # 已分配PE数量、已占用空间大小
Free PE / Size 10238 / 39.99 GiB # 空闲PE数量、剩余可用空间
VG UUID oYlsNo-3Xb5-7qv5-krAv-7PEI-8iV9-0Badcj # 卷组唯一UUID标识
核心注解:PE(Physical Extend)是卷组最小物理存储单元,默认4MB,所有逻辑卷空间均以PE为单位分配,是LVM空间调度的核心粒度。
4.4 逻辑卷 LV 创建与查看
从已有卷组中按需划分空间,创建逻辑卷,支持指定固定容量创建跨盘逻辑卷。
# webapp卷组创建5G逻辑卷 webapp01
[root@server ~ 15:07:35]# lvcreate -n webapp01 -L 5G webapp
Logical volume "webapp01" created.
# dbapp卷组创建25G跨盘逻辑卷 dbapp01
[root@server ~ 15:10:56]# lvcreate -n dbapp01 -L 25G dbapp
Logical volume "dbapp01" created.
查看所有逻辑卷概要信息:
# 查看逻辑卷简洁信息
[root@server ~ 15:12:30]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao—- <145.12g
root centos -wi-ao—- 50.00g
swap centos -wi-ao—- <3.88g
dbapp01 dbapp -wi-a—– 25.00g
webapp01 webapp -wi-a—– 5.00g
# 查看逻辑卷详细信息
[root@server ~ 15:12:20]# lvdisplay /dev/webapp/webapp01
— Logical volume —
LV Path /dev/webapp/webapp01 # 逻辑卷设备完整路径,挂载、格式化使用该路径
LV Name webapp01 # 逻辑卷名称
VG Name webapp # 归属的卷组名称
LV UUID YqF1zd-POfx-xyQU-NERg-Rlqp-k23d-LFTL9Q # 逻辑卷唯一标识
LV Write Access read/write # 权限:正常可读可写
LV Creation host, time server.fangbing.cloud, 2026-08-01 15:10:56 +0800 # 创建主机与时间
LV Status available # 状态:可用、正常
# open 0 # 被进程挂载打开次数,0代表当前未挂载
LV Size 5.00 GiB # 逻辑卷总大小5G
Current LE 1280 # 占用LE数量,LE和VG的PE一一对应
Segments 1 # 空间连续为1段,无碎片化分散
Allocation inherit # 空间分配策略:继承卷组默认策略
Read ahead sectors auto # 预读扇区自动调节
– currently set to 8192 # 当前预读扇区数值
Block device 253:3 # 内核主次设备号
4.5 逻辑卷设备三种访问格式
LVM逻辑卷在系统中存在三种设备标识格式,功能完全通用,可随意使用:
-
/dev/卷组名/逻辑卷名(最直观、常用)
-
/dev/mapper/卷组名-逻辑卷名
-
/dev/dm-N(系统内核设备名)
[root@server ~ 15:15:18]# ls -l /dev/webapp/webapp01 /dev/mapper/webapp-webapp01
lrwxrwxrwx. 1 root root 7 8月 1 15:10 /dev/mapper/webapp-webapp01 –> ../dm-3
lrwxrwxrwx. 1 root root 7 8月 1 15:10 /dev/webapp/webapp01 –> ../dm-3
4.6 查看逻辑卷详细与跨盘状态
查看单个逻辑卷完整参数:
# 查看逻辑卷详细信息
[root@server ~ 15:12:20]# lvdisplay /dev/webapp/webapp01
— Logical volume —
LV Path /dev/webapp/webapp01 # 逻辑卷设备完整路径,挂载、格式化使用该路径
LV Name webapp01 # 逻辑卷名称
VG Name webapp # 归属的卷组名称
LV UUID YqF1zd-POfx-xyQU-NERg-Rlqp-k23d-LFTL9Q # 逻辑卷唯一标识
LV Write Access read/write # 权限:正常可读可写
LV Creation host, time server.fangbing.cloud, 2026-08-01 15:10:56 +0800 # 创建主机与时间
LV Status available # 状态:可用、正常
# open 0 # 被进程挂载打开次数,0代表当前未挂载
LV Size 5.00 GiB # 逻辑卷总大小5G
Current LE 1280 # 占用LE数量,LE和VG的PE一一对应
Segments 1 # 空间连续为1段,无碎片化分散
Allocation inherit # 空间分配策略:继承卷组默认策略
Read ahead sectors auto # 预读扇区自动调节
– currently set to 8192 # 当前预读扇区数值
Block device 253:3 # 内核主次设备号
查看物理卷空间占用状态,验证跨盘存储特性:
[root@server ~ 15:16:18]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a– <199.00g 4.00m
/dev/sdb webapp lvm2 a– <20.00g <15.00g
/dev/sdc dbapp lvm2 a– <20.00g 0
/dev/sdd dbapp lvm2 a– <20.00g 14.99g
查看磁盘与逻辑卷挂载关系,确认dbapp01跨sdc、sdd两块硬盘:
[root@server ~ 15:18:03]# lsblk /dev/sd[b-d]
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
└─webapp-webapp01 253:3 0 5G 0 lvm
sdc 8:32 0 20G 0 disk
└─dbapp-dbapp01 253:4 0 25G 0 lvm
sdd 8:48 0 20G 0 disk
└─dbapp-dbapp01 253:4 0 25G 0 lvm
4.7 逻辑卷格式化与永久挂载
# 格式化为XFS文件系统
[root@server ~ 15:18:40]# mkfs.xfs /dev/webapp/webapp01
# 创建挂载目录并临时挂载
[root@centos7 ~]# mkdir -p /usr/share/nginx/html
[root@server ~ 15:20:35]# mount /dev/webapp/webapp01 /usr/share/nginx/html
永久挂载(开机自启):编辑fstab文件,添加挂载配置
[root@server ~ 15:21:01]# vim /etc/fstab
# 新增如下内容
/dev/webapp/webapp01 /usr/share/nginx/html xfs defaults 0 0
4.8 LVM全套清理删除操作
实验结束后,可按 卸载→删LV→删VG→删PV 顺序清理环境:
# 1. 卸载挂载目录
[root@server ~ 15:21:01]# umount /usr/share/nginx/html
# 2. 删除所有逻辑卷
[root@server ~ 15:22:34]# lvremove /dev/webapp/webapp01 /dev/dbapp/dbapp01
Do you really want to remove active logical volume webapp/webapp01? [y/n]: y
Logical volume "webapp01" successfully removed
Do you really want to remove active logical volume dbapp/data01? [y/n]: y
Logical volume "data01" successfully removed
# 3. 删除卷组
[root@server ~ 15:23:47]# vgremove webapp dbapp
Volume group "webapp" successfully removed
Volume group "dbapp" successfully removed
# 4. 清除物理卷标识,还原空白磁盘
[root@server ~ 15:24:59]# pvremove /dev/sd[b-d]
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
Labels on physical volume "/dev/sdd" successfully wiped.
五、卷组 VG 扩容与缩减实操
卷组作为存储资源池,支持动态新增磁盘扩容、移除空闲磁盘缩容,适配存储容量动态调整场景。
5.1 环境重置
# 初始化PV、创建基础卷组与逻辑卷
[root@server ~ 15:25:28]# vgcreate webapp /dev/sdb
Physical volume "/dev/sdb" successfully created.
Volume group "webapp" successfully created
[root@server ~ 15:26:17]# lvcreate -n webapp01 -L 10G webapp
WARNING: xfs signature detected on /dev/webapp/webapp01 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/webapp/webapp01.
Logical volume "webapp01" created.
实操注解:vgcreate 命令可自动将空白磁盘初始化为PV,无需单独执行 pvcreate,简化实操步骤。
5.2 卷组扩容(vgextend)
卷组空间不足时,可新增物理磁盘加入卷组,扩充存储池容量:
[root@server ~ 15:26:55]# vgextend webapp /dev/sd[cd]
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.
Volume group "webapp" successfully extended
5.3 卷组缩减(vgreduce)
需移除卷组内多余物理磁盘时,需保证移除磁盘无数据占用,否则报错。若磁盘已存数据,需先迁移数据。
查看磁盘占用状态:
[root@server ~ 15:38:52]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb webapp lvm2 a– <20.00g <10.00g # 磁盘已占用空间
/dev/sdc webapp lvm2 a– <20.00g <20.00g
/dev/sdd webapp lvm2 a– <20.00g <20.00g
直接移除已占用磁盘会报错:
[root@server ~ 15:39:13]# vgreduce webapp /dev/sdb
Physical volume "/dev/sdb" still in use
解决方案:迁移磁盘数据
# 将sdb数据迁移至卷组内其他磁盘
[root@server ~ 15:41:52]# pvmove /dev/sdb /dev/sdd
/dev/sdb: Moved: 0.51%
/dev/sdb: Moved: 100.00%
数据迁移完成后,成功缩减卷组、移除磁盘:
[root@server ~ 15:42:52]# vgreduce webapp /dev/sdb
Removed "/dev/sdb" from volume group "webapp"
[root@server ~ 15:43:16]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a– <199.00g 4.00m
/dev/sdb lvm2 — 20.00g 20.00g
/dev/sdc webapp lvm2 a– <20.00g <20.00g
/dev/sdd webapp lvm2 a– <20.00g <10.00g
六、逻辑卷 LV 扩容与缩减实操
卷组空间充足时,可自由调整逻辑卷大小,支持在线扩容、离线缩容。
6.1 逻辑卷扩容
# 给逻辑卷新增2G空间
[root@server ~ 15:43:22]# lvextend -L +2G /dev/webapp/webapp01
Size of logical volume webapp/webapp01 changed from 10.00 GiB (2560 extents) to 12.00 GiB (3072 extents).
Logical volume webapp/webapp01 successfully resized.
# 查看扩容后状态
[root@server ~ 15:45:01]# lvs /dev/webapp/webapp01
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
webapp01 webapp -wi-a—– 12.00g
6.2 逻辑卷缩减
缩容存在数据风险,系统会强制告警,需确认执行:
[root@server ~ 15:45:34]# lvreduce -L -2G /dev/webapp/webapp01
WARNING: Reducing active logical volume to 10.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce webapp/webapp01? [y/n]: y
Size of logical volume webapp/webapp01 changed from 12.00 GiB (3072 extents) to 10.00 GiB (2560 extents).
Logical volume webapp/webapp01 successfully resized.
[root@server ~ 15:46:35]# lvs /dev/webapp/webapp01
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
webapp01 webapp -wi-a—– 10.00g
七、文件系统扩容与缩减(XFS/EXT4差异化)
重点:逻辑卷空间调整后,必须同步调整文件系统,容量才能生效,XFS与EXT4文件系统规则完全不同。
7.1 XFS 文件系统(仅支持扩容,不支持缩容)
XFS是CentOS 7+默认文件系统,只支持在线扩容,无法缩减容量。
# 环境准备:格式化、挂载、写入测试数据
[root@server ~ 15:48:25]# mkfs.xfs -f /dev/webapp/webapp01
[root@server ~ 15:48:38]# mkdir -p /usr/share/nginx/html/
[root@server ~ 15:49:10]# mount /dev/webapp/webapp01 /usr/share/nginx/html/
[root@server ~ 15:49:33]# cp /etc/ho* /usr/share/nginx/html/
方式1:分步扩容(先扩LV,再扩文件系统)
# 1. 逻辑卷扩容至25G
[root@server ~ 15:52:18]# lvextend -L 25G /dev/webapp/webapp01
# 2. XFS文件系统在线扩容生效
[root@server ~ 15:53:12]# xfs_growfs /usr/share/nginx/html/
[root@server ~ 15:53:46]# df -hT /usr/share/nginx/html/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/webapp-webapp01 xfs 25G 33M 25G 1% /usr/share/nginx/html
方式2:一键扩容(自动同步LV与文件系统)
[root@server ~ 15:54:00]# lvextend -rL 30G /dev/webapp/webapp01
[root@server ~ 16:07:59]# df -hT /usr/share/nginx/html/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/webapp-webapp01 xfs 30G 33M 30G 1% /usr/share/nginx/html
7.2 EXT4 文件系统(支持扩容、缩容)
EXT4兼容性更强,支持双向容量调整,缩容必须离线操作。
# 环境重置为EXT4格式
[root@server ~ 16:08:04]# umount /dev/webapp/webapp01
[root@server ~ 16:10:05]# mkfs.ext4 /dev/webapp/webapp01
[root@server ~ 16:10:35]# mount /dev/webapp/webapp01 /usr/share/nginx/html/
[root@server ~ 16:11:20]# cp /etc/host* /usr/share/nginx/html/
EXT4扩容操作:
# 分步扩容
[root@server ~ 16:11:37]# lvextend -L 32G /dev/webapp/webapp01
[root@server ~ 16:12:43]# resize2fs /dev/webapp/webapp01
[root@server ~ 16:13:11]# df -hT /usr/share/nginx/html/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/webapp-webapp01 ext4 32G 49M 30G 1% /usr/share/nginx/html
# 一键扩容
[root@server ~ 16:16:22]# lvextend -rL 35G /dev/webapp/webapp01
[root@server ~ 16:16:31]# df -hT /usr/share/nginx/html/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/webapp-webapp01 ext4 35G 48M 33G 1% /usr/share/nginx/html
7.3 EXT4 文件系统离线缩容完整流程
核心注意事项:EXT4不支持在线缩容,必须卸载文件系统、检测磁盘、先缩文件系统、后缩LV,且缩容后容量不能小于已用空间。
# 1. 卸载挂载
[root@server ~ 16:17:03]# umount /usr/share/nginx/html/
# 2. 强制检测文件系统完整性
[root@server ~ 16:17:47]# e2fsck -f /dev/webapp/webapp01
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/webapp/webapp01: 16/2293760 files (0.0% non-contiguous), 189047/9175040 blocks
# 3. 缩减文件系统至10G
[root@centos7 ~]# resize2fs /dev/webapp/webapp01 10G
# 4. 缩减逻辑卷至10G
[root@server ~ 16:18:06]# resize2fs /dev/webapp/webapp01 10G
# 5. 重新挂载验证
[root@server ~ 16:19:11]# mount /dev/webapp/webapp01 /usr/share/nginx/html/
[root@server ~ 16:19:53]# df -hT /usr/share/nginx/html/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/webapp-webapp01 ext4 9.8G 37M 9.2G 1% /usr/share/nginx/html
八、LVM快照备份与恢复
LVM快照是生产运维中非常实用的数据瞬时备份功能,类似于虚拟机快照。它可以记录逻辑卷某一时刻的完整数据状态,后续无论原文件误删、篡改、损坏,都可以通过快照快速回滚恢复数据,且快照创建速度极快、占用空间小。
LVM快照原理:快照采用写时复制机制,创建快照瞬间只记录文件系统元数据,不复制全量数据;只有当原LV数据发生修改时,才会将旧数据写入快照卷,极大节省磁盘空间。
核心限制:快照容量无需等于原LV,但不能小于原LV已使用容量,否则快照会损坏失效。
8.1 创建LVM快照
基于已有逻辑卷 /dev/webapp/webapp01 创建只读快照,快照大小设置为10G:
# 创建快照:-s 快照模式 -n 快照名称 -L 快照容量
[root@server ~ 16:27:34]# lvcreate -s -n webapp01-snap1 -L 3G /dev/webapp/webapp01
Logical volume "webapp01-snap1" created.
8.2 挂载快照查看历史数据
快照创建完成后可直接挂载,查看快照时刻的原始数据,不受原卷后续数据变更影响:
# 创建快照挂载目录并挂载
[root@server ~ 16:27:55]# mkdir -p /webapp/snap
[root@server ~ 16:29:01]# mount /dev/webapp/webapp01-snap1 /webapp/snap
# 查看快照内原始数据
[root@server ~ 16:29:18]# ls /webapp/snap
host.conf hostname hosts hosts.allow hosts.deny lost+found
8.3 模拟原卷数据损坏/误删
在原逻辑卷中新增、删除文件,模拟业务数据误操作场景:
# 原卷新增测试文件
[root@server ~ 16:29:31]# echo "test data error" > /usr/share/nginx/html/error.txt
# 误删原有业务数据
[root@server ~ 16:31:53]# rm -f /usr/share/nginx/html/host*
# 查看损坏后的原卷数据
[root@server ~ 16:32:19]# ls /usr/share/nginx/html/
error.txt lost+found
8.4 通过快照恢复数据
快照数据完好保留创建时刻的所有文件,可直接拷贝恢复丢失数据:
# 快照数据覆盖恢复至原卷
[root@server ~ 16:32:39]# cp -r /webapp/snap/* /usr/share/nginx/html/
# 验证数据恢复完成
[root@server ~ 16:33:43]# ls /usr/share/nginx/html/
error.txt host.conf hostname hosts hosts.allow hosts.deny lost+found
8.5 卸载并删除快照(生产规范)
快照为一次性恢复工具,数据恢复完成后需及时清理,释放存储空间:
# 卸载快照
[root@server ~ 16:34:03]# umount /webapp/snap
# 删除快照卷
[root@server ~ 16:34:42]# lvremove /dev/webapp/webapp01-snap1
Do you really want to remove active logical volume webapp/webapp01-snap1? [y/n]: y
Logical volume "webapp01-snap1" successfully removed
九、LVM + RAID 融合实战(高可用存储)
普通LVM仅实现弹性扩容,无数据冗余能力。生产环境中通常 RAID负责容错、LVM负责灵活伸缩,组合实现高可用、高弹性企业存储架构。本节实操 RAID1 冗余逻辑卷、RAID5逻辑卷创建。
9.1 环境重置清理
[root@server ~ 16:41:17]# umount /dev/webapp/webapp01
[root@server ~ 16:41:36]# lvremove -f /dev/webapp/webapp01
[root@server ~ 16:42:07]# vgremove -f webapp
[root@server ~ 16:42:19]# pvremove -f /dev/sd[b-d]
9.2 创建 RAID1 冗余逻辑卷
RAID1实现双盘镜像,单盘损坏数据不丢失、业务不中断:
# 创建RAID1类型逻辑卷,容量15G
[root@server ~ 16:43:49]# vgcreate webapp /dev/sd[b-d]
[root@server ~ 16:43:56]# lvcreate –type raid1 -n webapp01 -L 15G webapp
# 格式化并挂载
[root@server ~ 16:45:32]# mkfs.xfs /dev/webapp/webapp01
[root@server ~ 16:45:57]# mount /dev/webapp/webapp01 /usr/share/nginx/html/
[root@server ~ 16:46:39]# cp /etc/host* /usr/share/nginx/html/
9.3 模拟磁盘故障,验证容错能力
# 模拟 /dev/sdb 磁盘损坏
[root@server ~ 16:47:03]# dd if=/dev/zero of=/dev/sdd bs=1M count=256
[root@server ~ 16:58:40]# pvs | grep webapp
WARNING: Device for PV UO9G1A-fHzv-YSc8-1lwk-gtT3-9hWS-dJrH71 not found or rejected by a filter.
Couldn't find device with uuid UO9G1A-fHzv-YSc8-1lwk-gtT3-9hWS-dJrH71.
WARNING: Couldn't find all devices for LV webapp/webapp01_rmeta_0 while checking used and assumed devices.
WARNING: Couldn't find all devices for LV webapp/webapp01_rimage_0 while checking used and assumed devices.
/dev/sdb webapp lvm2 a– <20.00g <20.00g
/dev/sdc webapp lvm2 a– <20.00g 4.99g
[unknown] webapp lvm2 a-m <20.00g 4.99g
# 验证文件系统正常访问,数据不丢失
[root@server ~ 16:47:56]# ls /usr/share/nginx/html/
host.conf hostname hosts hosts.allow hosts.deny
9.4 RAID故障修复与重建
# 卸载文件系统
[root@server ~ 16:48:15]# umount /usr/share/nginx/html
# 移除损坏的物理卷
[root@server ~ 16:52:00]# vgreduce –removemissing webapp –force
# 重新添加磁盘至卷组
[root@server ~ 16:54:39]# vgextend webapp /dev/sdd
# 修复RAID1镜像、同步数据
[root@server ~ 16:55:20]# lvconvert –repair /dev/webapp/webapp01
# 刷新PV状态
[root@centos7 ~]# pvscan
# 验证修复完成
[root@server ~ 17:00:42]# pvs | grep webapp
WARNING: Not using lvmetad because a repair command was run.
/dev/sdb webapp lvm2 a– <20.00g 4.99g
/dev/sdc webapp lvm2 a– <20.00g 4.99g
/dev/sdd webapp lvm2 a– <20.00g <20.00g
# 重新挂载,验证数据正常
[root@server ~ 17:00:52]# mount /dev/webapp/webapp01 /usr/share/nginx/html/
[root@server ~ 17:01:37]# ls /usr/share/nginx/html/
host.conf hostname hosts hosts.allow hosts.deny
9.5 生产常用:RAID5 逻辑卷创建示例
RAID5兼顾容量与容错,适合大容量业务存储,命令模板如下:
# 创建 RAID5 LV:可用5G、3条数据带、条带大小64K、名字为mylv 、卷组为vg00(这个至少需要4块磁盘,3条数据带,1个校验磁盘)
lvcreate –type raid5 -L 5G -i 3 -I 64 -n mylv vg00
# 详细查看条带、磁盘结构
lvdisplay -m /dev/vg00/mylv
十、总结与生产最佳实践
1、LVM核心价值:彻底解决传统磁盘分区固化、无法在线扩容、不支持跨盘存储的痛点,是Linux服务器动态存储的行业标配方案,适配绝大多数动态业务场景。
2、文件系统适配规范:XFS 文件系统仅支持在线扩容、不支持缩容;EXT4 文件系统兼顾扩缩容。CentOS 7及以上系统默认优先使用XFS,稳定性更强。
3、快照生产使用规范:LVM快照为临时应急备份工具,依托写时复制机制节省空间,不可长期留存。数据恢复完成后需立即删除,避免占用磁盘空间、引发存储异常。
4、企业高可用存储架构:生产最优组合为 RAID 磁盘容错 + LVM 弹性伸缩,RAID保障数据冗余安全,LVM实现存储容量灵活调整,兼顾安全性与灵活性。
5、高危操作避坑指南:卷组、逻辑卷缩容属于高危操作,务必提前迁移数据、执行文件系统完整性检测,严格遵循「先检测、再缩文件系统、最后缩逻辑卷」流程,杜绝数据丢失。
网硕互联帮助中心





评论前必须登录!
注册