【对比】LVM vs 传统分区:磁盘管理方案深度对比

阿里云推广

LVM vs 传统分区深度对比

磁盘分区是服务器部署的第一步。LVM和传统分区各有什么优劣?本文帮你做出正确选择。

一、架构对比

【传统分区架构】
物理磁盘 /dev/sdb
    ↓
分区 /dev/sdb1, /dev/sdb2
    ↓
格式化 mkfs.ext4 /dev/sdb1
    ↓
挂载 mount /dev/sdb1 /data

【LVM架构】
物理磁盘 /dev/sdb, /dev/sdc
    ↓
物理卷 PV: pvcreate /dev/sdb /dev/sdc
    ↓
卷组 VG: vgcreate vg_data /dev/sdb /dev/sdc
    ↓
逻辑卷 LV: lvcreate -n lv_app -L 100G vg_data
    ↓
格式化 mkfs.ext4 /dev/vg_data/lv_app
    ↓
挂载 mount /dev/vg_data/lv_app /data

二、功能对比

功能 传统分区 LVM
在线扩容 ❌ 需卸载/停机 ✅ 在线扩容
跨磁盘 ❌ 单盘限制 ✅ 多盘合并
快照 ❌ 不支持 ✅ 支持快照
条带化 ❌ 不支持 ✅ 提升性能
复杂度 简单 稍复杂
性能损耗 <5%

三、扩容操作对比

【传统分区扩容】(风险高,需停机)
# 1. 卸载分区
umount /data

# 2. 调整分区大小(危险操作!)
fdisk /dev/sdb
# 删除旧分区 → 创建更大的分区
# ⚠️ 如果操作失误,数据全丢!

# 3. 调整文件系统
resize2fs /dev/sdb1

# 4. 重新挂载
mount /dev/sdb1 /data
【LVM扩容】(在线,无需停机)
# 1. 检查VG剩余空间
vgdisplay vg_data

# 2. 如果VG空间不足,添加新磁盘
pvcreate /dev/sdd
vgextend vg_data /dev/sdd

# 3. 扩展逻辑卷(在线!)
lvextend -L +100G /dev/vg_data/lv_app
# 或 lvextend -l +100%FREE /dev/vg_data/lv_app

# 4. 扩展文件系统(在线!)
resize2fs /dev/vg_data/lv_app
# 或 xfs_growfs /data

# 完成!全程无需卸载,应用无感知

四、LVM快照功能

# 创建快照(瞬间完成,不影响业务)
lvcreate -n lv_snap -L 20G -s /dev/vg_data/lv_app

# 挂载快照(查看某一时刻的数据)
mount /dev/vg_data/lv_snap /mnt/snapshot

# 从快照恢复(数据误删时救命)
umount /data
lvconvert --merge /dev/vg_data/lv_snap
# 恢复快照后,原LV数据回到快照时刻

# 删除快照
umount /mnt/snapshot
lvremove /dev/vg_data/lv_snap

五、使用场景建议

场景 推荐方案 原因
根分区 / 传统分区 简单稳定,无需频繁调整
数据分区 /data LVM 未来可能需要扩容
数据库 LVM 快照备份、在线扩容
日志分区 传统分区 定期清理即可
虚拟机镜像 LVM 灵活调整大小

六、LVM常用命令速查

# 物理卷PV
pvcreate /dev/sdb          # 创建PV
pvdisplay                  # 查看PV
pvs                        # 简洁查看
pvremove /dev/sdb          # 删除PV

# 卷组VG
vgcreate vg0 /dev/sdb      # 创建VG
vgextend vg0 /dev/sdc      # 扩展VG
vgdisplay                  # 查看VG
vgs                        # 简洁查看
vgreduce vg0 /dev/sdb      # 从VG移除PV

# 逻辑卷LV
lvcreate -n lv0 -L 100G vg0    # 创建LV
lvextend -L +50G /dev/vg0/lv0  # 扩展LV
lvreduce -L -50G /dev/vg0/lv0  # 缩小LV(谨慎!)
lvdisplay                      # 查看LV
lvs                            # 简洁查看
lvremove /dev/vg0/lv0          # 删除LV

七、性能考虑

# LVM有轻微性能损耗,主要来自:
# 1. 额外的抽象层映射
# 2. 快照时的COW(写时复制)开销

# 优化建议:
# 1. 数据库等高性能场景,使用裸设备或考虑性能损耗
# 2. 启用read_ahead提升顺序读性能
blockdev --setra 8192 /dev/vg_data/lv_app

# 3. SSD使用none调度器
echo none > /sys/block/dm-0/queue/scheduler

总结

生产环境强烈建议数据盘使用LVM。虽然有一点学习成本和性能损耗,但在线扩容和快照功能带来的便利远超这些代价。

发表评论