Linux服务器LVM逻辑卷管理与快照备份恢复实战配置

Linux服务器在运行过程中经常面临磁盘空间不足、分区结构调整、数据备份恢复等运维需求。LVM(Logical Volume Manager)逻辑卷管理器通过在物理设备和文件系统之间引入抽象层,实现了磁盘空间的动态分配、在线扩容和快照备份,是服务器运维中不可或缺的存储管理工具。本文从LVM核心概念出发,结合实际服务器环境配置PV、VG、LV以及快照恢复的完整流程,给出可直接复用的操作方案。

LVM逻辑卷管理核心概念与架构

LVM将磁盘管理分为三个层次:物理卷(PV,Physical Volume)、卷组(VG,Volume Group)和逻辑卷(LV,Logical Volume)。

物理卷是LVM管理的最底层设备,可以是整个磁盘(如/dev/sdb)或磁盘分区(如/dev/sdb1)。创建PV时,LVM在设备头部写入元数据,记录该PV属于哪个VG、PE大小等信息。

卷组由一个或多个PV组成,是LVM的存储池。VG将底层的物理空间统一管理,向上提供逻辑卷分配的可用空间。同一个VG内的多个PV可以来自不同的物理磁盘,实现跨磁盘的容量聚合。

逻辑卷从VG中分配空间创建,是面向文件系统的逻辑设备。LV可以在不停止服务的情况下在线扩容和缩容,这是LVM相对于传统分区方案的核心优势。

PE(Physical Extent)是VG内的最小分配单位,默认4MB。LE(Logical Extent)与PE一一对应,LV的空间以LE为单位从VG分配。

物理卷PV与卷组VG创建配置

假设服务器新加了两块磁盘/dev/sdb和/dev/sdc,需要创建LVM存储池。操作步骤如下:

# 1. 查看可用磁盘
lsblk
fdisk -l

# 2. 创建物理卷
pvcreate /dev/sdb /dev/sdc
pvdisplay
pvs

# 3. 创建卷组,指定PE大小8MB
vgcreate -s 8M vg_data /dev/sdb /dev/sdc

# 4. 验证卷组
vgdisplay
vgs

# 5. 查看VG总空间和可用空间
vgdisplay vg_data | grep -E "VG Size|Free"

如果后续需要向VG追加新磁盘,使用 vgextend 命令:

# 新增磁盘/dev/sdd加入VG
pvcreate /dev/sdd
vgextend vg_data /dev/sdd
vgs vg_data

在生产环境中,建议将不同类型的磁盘分别创建VG,避免SSD和HDD混在一个VG中导致性能不均匀。例如 vg_ssd 用于数据库和高IO应用, vg_hdd 用于日志和备份存储。

逻辑卷LV创建与在线扩容实战

从VG中创建逻辑卷并格式化挂载:

# 1. 创建100GB逻辑卷
lvcreate -L 100G -n lv_data vg_data

# 2. 按VG剩余空间的百分比创建
lvcreate -l 100%FREE -n lv_backup vg_data

# 3. 创建时指定条带数(跨多PV提升IO性能)
lvcreate -L 200G -i 2 -I 64 -n lv_fast vg_data

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

# 5. 创建挂载点并挂载
mkdir -p /data
mount /dev/vg_data/lv_data /data

# 6. 写入fstab实现开机自动挂载
echo "/dev/vg_data/lv_data /data xfs defaults 0 0" >> /etc/fstab

-i 2 参数指定条带数为2,数据跨两个PV分布, -I 64 设置条带大小64KB。条带化适合对顺序读写性能要求高的场景,如数据库数据文件。

LV在线扩容是LVM最常用的运维操作。当 /data 空间不足时,无需卸载文件系统即可扩容:

# 1. 检查VG剩余空间
vgs vg_data

# 2. LV扩容50GB
lvextend -L +50G /dev/vg_data/lv_data

# 3. xfs文件系统在线扩容
xfs_growfs /data

# 4. ext4文件系统在线扩容
resize2fs /dev/vg_data/lv_data

# 5. 验证扩容结果
df -h /data
lvs

注意xfs文件系统只能扩容不能缩容,ext4支持双向调整。生产环境推荐使用xfs,除非有明确的缩容需求。如果VG空间不足,先通过 vgextend 追加新PV,再执行 lvextend

LVM快照机制与数据备份恢复

LVM快照是某一时间点LV数据的只读副本,采用写时复制(Copy-on-Write)机制,初始创建时几乎不占用额外空间,仅在原LV数据被修改时才将旧数据复制到快照区域。快照适用于数据库一致性备份、文件系统冻结备份等场景。

# 1. 创建快照(分配10GB空间存储COW数据)
lvcreate -L 10G -s -n lv_data_snapshot /dev/vg_data/lv_data

# 2. 查看快照状态
lvdisplay /dev/vg_data/lv_data_snapshot

# 3. 从快照备份数据
mkdir -p /mnt/snapshot
mount -o ro /dev/vg_data/lv_data_snapshot /mnt/snapshot

# 使用tar备份快照数据
tar -czf /backup/data_backup_$(date +%Y%m%d).tar.gz -C /mnt/snapshot .

# 4. 备份完成后卸载并删除快照
umount /mnt/snapshot
lvremove -f /dev/vg_data/lv_data_snapshot

快照空间大小取决于快照存活期间原LV数据的变化量。对于高写入频率的数据库LV,建议快照空间设为原LV的10-20%;对于低写入频率的场景,5%即可。快照存活时间应尽量短,完成备份后立即删除,避免COW数据持续增长耗尽快照空间。

从快照恢复数据的操作:

# 方式1:合并快照回原LV(原LV必须卸载)
umount /data
lvconvert --merge /dev/vg_data/lv_data_snapshot
mount /dev/vg_data/lv_data /data

# 方式2:从快照创建新LV
lvcreate -L 100G -s -n lv_data_restored /dev/vg_data/lv_data_snapshot

LVM条带化与镜像高可用配置

对于高可用要求较高的场景,LVM支持LV级别的镜像(Mirror),类似于RAID 1。镜像LV在两块磁盘上维护数据副本,单盘故障时数据不丢失:

# 创建镜像LV(2份镜像)
lvcreate -L 100G -m 1 --mirrorlog disk -n lv_mirror vg_data

# 查看镜像状态
lvs -a -o name,copy_percent,devices vg_data

# 磁盘故障后替换
lvconvert -m 0 /dev/vg_data/lv_mirror /dev/sdb
vgreduce --removemissing vg_data
pvcreate /dev/sdd
vgextend vg_data /dev/sdd
lvconvert -m 1 /dev/vg_data/lv_mirror /dev/sdd

对于大规模存储环境,LVM还支持thin provisioning(精简配置),按实际使用量分配空间而非预分配全部容量:

# 创建thin pool
lvcreate -L 500G -T vg_data/lv_thinpool

# 从thin pool创建thin volume(可超分配)
lvcreate -V 1T -T vg_data/lv_thinpool -n lv_thin_data

# 监控thin pool使用率
lvs -o name,data_percent,metadata_percent vg_data

精简配置允许总thin volume容量超过实际物理空间,但需要监控thin pool使用率,在接近满时及时扩容,否则所有thin volume的写入操作都会失败。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-lvm-luo-ji-juan-guan-li-yu-kuai-zhao-bei-fen/

(0)
小编小编
上一篇 16小时前
下一篇 16小时前

相关推荐