开发者

Linux LVM动态存储管理的指南分享

目录
  • 一、LVM 核心原理
    • 1. 核心组件及关系
    • 2. LVM 的核心优势
  • 二、LVM 配置步骤(基础流程)
    • 步骤 1:准备逻辑分区
    • 步骤 2:创建物理卷(PV)
    • 步骤 3:创建卷组(VG)
    • 步骤 4:创建逻辑卷(LV)
    • 步骤 5:格式化 LV 并挂载
  • 三、LVM 常用管理操作
    • 1. 扩展逻辑卷(LV 扩容)
    • 2. 缩减逻辑卷(LV 缩容)
    • 3. 新增物理设备到卷组(VG 扩容)
    • 4. 删除 LVM(谨慎操作)
  • 四、总结

    linux 逻辑卷管理(LVM,Logical Volume Manager)是一种灵活的存储管理技术,通过在物理存储设备与文件系统之间增加抽象层,实现对磁盘空间的动态管理(如动态扩容 / 缩容、跨设备合并等)。相比传统分区,LVM 更适合需要灵活调整存储空间的场景(如服务器、动态扩容需求的系统)。

    一、LVM 核心原理

    1. 核心组件及关系

    LVM 通过三层结构实现存储抽象,从底层到上层依次为:

    • 物理卷(PV,Physical Volume)

    底层物理存储设备的抽象,可是硬盘分区(如/dev/sdb1)、整个硬盘(如/dev/sdc)或 RAID 设备。

    PV 被划分为多个物理扩展(PE,Physical Extent),PE 是 LVM 中最小的存储单元(默认大小 4MB,可自定义),所有 PV 的 PE 大小需一致才能加入同一卷组。

    • 卷组(VG,Volume Group)

    由一个或多个 PV 组成的 “存储池”,将多个物理设备的空间合并为一个整体。VG 中的 PE 被统一管理,逻辑卷从 VG 中分配 PE。

    • 逻辑卷(LV,Logical Volume)

    从 VG 中 “切割” 出的逻辑空间,可直接格式化并挂载使用(类似传统分区)。LV 的大小由分配的 PE 数量决定,且可动态调整(增加 / 减少 PE 数量)。

    2. LVM 的核心优势

    • +-动态调整空间:LV 可在线扩容或缩容(无需卸载,部分文件系统支持),无需重新分区。
    • 跨设备合并:将多个物理磁盘的空间合并为一个 VG,LV 可使用所有设备的空间(如将 3 块 100GB 硬盘合并为 300GB 的 VG,创建 250GB 的 LV)。
    • 灵活管理:支持快照(Snapshot)、镜像(Mirror)等高级功能,便于数据备份和容灾。

    二、LVM 配置步骤(基础流程)

    需先创建扩展分区和逻辑分区

    Linux LVM动态存储管理的指南分享

    步骤 1:准备逻辑分区

    选择要加入 LVM 的物理设备(如逻辑分区/dev/sda5/dev/sda6,),确保设备未被挂载且无重要数编程客栈据(操作会清空数据)。

    查看可用设备:

    lsblk  # 列出所有磁盘及分区,确认目标设备(如sdb、sdc)

    Linux LVM动态存储管理的指南分享

     现在我们有两个500M的磁盘分区,但是需要放下一个7000M的文件,我们英应该怎么做? 

    步骤 2:创建物理卷(PV)

    pvcreate命令将物理设备初始化为 PpythonV:

    # 将/dev/sda5和/dev/sda6初始化为PV
    pvcreate /dev/sda5 /dev/sda6
    
    #编程客栈 验证PV:查看已创建的PV及PE信息
    pvs  # 简洁显示
    pvdisplay /dev/sda5  # 详细显示指定PV的信息(包括PE大小)

     

    Linux LVM动态存储管理的指南分享

    步骤 3:创建卷组(VG)

    vgcreate命令将 PV 加入 VG(自定义 VG 名称,如myvg):

    # 创建名为myvg的VG,包含/dev/sdb和/dev/sdc
    vgcreate vg0 /dev/sda5 /dev/sda6python  
    
    # 验证VG:查看VG的总空间、剩余空间等
    vgs  # 简洁显示
    vgdisplay vg0  # 详细显示(Total PE、Free PE等)

     

    Linux LVM动态存储管理的指南分享

    可选:创建 VG 时指定 PE 大小(默认 4MB,最大 65536PE,故默认最大 VG 大小为 4MB×65536=256GB;若需更大 VG,可增大 PE,如-s 16M):

    vgcreate -s 16M myvg /dev/sda5 /dev/sda6 # PE大小设为16MB

    步骤 4:创建逻辑卷(LV)

    lvcreate命令从 VG 中分配空间创建 LV(自定义 LV 名称,如mylv):

    # 方法1:指定大小(如创建100GB的LV)
    lvcreate -L 100G -n lv0 vg0 
    
    # 方法2:指定使用VG的百分比(如使用80%的空闲空间)
    lvcreate -l 80%FREE -n lv0 vg0
    
    # 方法3:指定PE数量(如使用1000个PE,每个PE 4MB则为4GB)
    lvcreate -l 1000 -n lv0 vg0 
    
    # 验证LV:查看LV的路径、大小等
    lvs  # 简洁显示(LV路径通常为/dev/[VG名]/[LV名],如/dev/myvg/mylv)
    lvdisplay /dev/lv0/vg0  # 详细显示

     

    Linux LVM动态存储管理的指南分享

    步骤 5:格式化 LV 并挂载

    LV 创建后需格式化(如 ext4、xfs),再挂载使用:

    # 格式化LV为ext4(xfs用mkfs.xfs)
    mkfs.ext4 /dev/lv0/vg0  
    
    # 创建挂载点目录
    mkdir /lv0  
    
    # 临时挂载(重启失效)
    mount /dev/vg0/lv0 /lv0 
    
    # 永久挂载:编辑/etc/fstab,添加一行(用LV的UUID更可靠)
    # 1. 获取LV的UUID
    blkid /dev/vg0/lv0 # 输出类似:UUID="xxx" TYPE="ext4"
    # 2. 编辑fstab
    echo 'UUID=xxx /lv0 ext4 defaults 0 0' >> /etc/fstab  
    # 3. 验证fstab
    mount -a  # 无报错则配置正确

     

    Linux LVM动态存储管理的指南分享

    三、LVM 常用管理操作

    1. 扩展逻辑卷(LV 扩容)

    当 LV 空间不足时,可从 VG 的空闲空间中分配更多 PE 扩展 LV(需 VG 有足够空闲空间)。

    可以向扩展分区扩容然后给物理卷,逻辑组。逻辑卷就可以从逻辑组扩容

    假设现在有一个1700M的文件,前面卷组只有1000m 所以不够,还需要扩展vg

    • 步骤一:现在增加2000M逻辑分区

    Linux LVM动态存储管理的指南分享

    • 步骤二:创建物理卷

    Linux LVM动态存储管理的指南分享

    • 步骤三:扩展卷组

    Linux LVM动态存储管理的指南分享

    • 步骤四:扩展逻辑卷
    # 1. 检查VG剩余空间(确认有足够Free PE)
    vgs vg0 
    
    # 2. 扩展LV(如增加2000M)
    lvextend -L +2000M /dev/vg0/lv0
    # 或使用全部剩余空间
    lvextend -l +100%FREE /dev/vg0/lv0  
    
    # 3. 扩展文件系统(关键:让文件系统识别新增空间)
    # 若为ext4/xfs:
    # ext4用resize2fs(支持在线扩容)
    resize2fs /dev/vg0/lv0
    # xfs用xfs_growfs(需先挂载,指定挂载点)
    xfs_growfs /mnt/lv0  

    Linux LVM动态存储管理的指南分享

    2. 缩减逻辑卷(LV 缩容)

    注意:缩容有数据丢失风险,需先卸载 LV 并检查文件系统完整性(仅 ext4 支持缩容,xfs 不支持!)。

    • 现在创建了/vg1 2000M 和lv1 800M

    Linux LVM动态存储管理的指南分享

    # 1. 卸载LV
    umount /lv1  
    
    # 2. 检查文件系统错误(必须执行)
    e2fsck -f /dev/vg1/lv1  
    
    # 3. 缩减文件系统(先于LV缩容,指定目标大小,如200M)
    resize2fs /dev/vg1/lv1 200M 
    
    # 4. 缩减LV(目标大小需≥文件系统大小,如200M)
    lvreduce -L 200M /dev/vg1/lv1 
    
    # 5. 重新挂载
    mount -a
    

    1.先卸载

     

    Linux LVM动态存储管理的指南分享

    2. 检查是否可以缩容

    Linux LVM动态存储管理的指南分享

    3.缩容

    Linux LVM动态存储管理的指南分享

    4.重新挂载

     

    Linux LVM动态存储管理的指南分享

    3. 新增物理设备到卷组(VG 扩容)

    当 VG 空间不足时,可添加新的 PV 扩展 VG:

    # 1. 将新设备(如/dev/sdd)初始化为PV
    pvcreate /dev/sdd  
    js
    # 2. 将PV加入已有VG(myvg)
    vgextend vg0 /dev/sdd  
    
    # 验证:查看VG空间是否增加
    vgs myvg  

    4. 删除 LVM(谨慎操作)

    如需删除 LVM,需按 “LV→VG→PV” 的反向顺序操作:

    # 1. 卸载LV
    umount /mnt/mylv  
    
    # 2. 从fstab中删除挂载配置(避免开机报错)
    vim /etc/fstab  # 删除对应行
    
    # 3. 删除LV
    lvremove /dev/myvg/mylv  
    
    # 4. 删除VG
    vgremove myvg  
    
    # 5. 删除PV(清空设备的LVM信息)
    pvremove /dev/sdb /dev/sdc  

    四、总结

    LVM 通过 “PV→VG→LV” 的三层结构,将物理存储抽象为灵活的逻辑空间,核心价值是动态调整和跨设备管理。掌握基础配置(创建 PV/VG/LV)和扩展操作,可满足大多数动态存储需求。实际使用中,需注意文件系统对扩容 / 缩容的支持(如 xfs 不支持缩容),并谨慎操作避免数据丢失。

    说明:lvcreat(创建)  lvdisplay(查看) lvextent(扩容) lvreduce(缩小)

    • xfs的文件系统的逻辑卷,只能扩容不能缩容
    • ext4的文件系统可以缩容也可以扩容

    逻辑卷的大小必须与逻辑卷所在文件大小一致(逻辑卷扩容后,需要挂载此时逻辑卷的大小发生改变,这个时候f所在的分区也需要扩展文件系统重新识别。)

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新运维

    运维排行榜