当前位置:首页>Linux>lvm逻辑卷组-linux磁盘分区

lvm逻辑卷组-linux磁盘分区

  • 2026-09-09 01:09:56
lvm逻辑卷组-linux磁盘分区

“ 本篇记录在linux环境中,关于磁盘分区lvm逻辑卷组的实用说明,以及跟lvm管理命令相同的另外一个权限更高的命令-dmsetup的使用。逻辑卷管理(LVM, Logical Volume Manager)是 Linux 下用于动态调整磁盘大小、整合存储资源的机制。LVM的核心概念包括物理卷(PV)、卷组(VG)和逻辑卷(LV)”

lvm这是一个比较常见且用起来很容易混淆的命令,在运维过程中,经常会用到用到磁盘相关的格式化分区、查看磁盘使用、扇区修复等,本篇重点介绍lvm逻辑卷组的管理命令:lvm、dmsetup。
命令速查
在日常运维中,可以通过以下命令快速查看 LVM 各层级的状态信息
#查看物理卷 (PV): pvs(简略列表)或  pvdisplay(详细信息)#查看卷组 (VG): vgs(简略列表)或  vgdisplay(详细信息)#查看逻辑卷 (LV): lvs(简略列表)或  lvdisplay(详细信息)#查看底层磁盘状态: lsblk
完整创建和挂在流程
创建 LVM 需要遵循“PV -> VG -> LV”的层级顺序
#第一步,创建物理卷pv,将物理磁盘或者分区初始化为物理卷  pvcreate /dev/sdc#第二步,创建卷组,将物理卷pv合并为统一的存储池(卷组)  vgcreate vg1 /dev/sdc /dev/sdd#第三步,创建逻辑卷,从卷组中指定逻辑卷的大小  lvcreate -L 200M -n lv1 vg1#第四步,将逻辑卷格式化为所需的文件系统分区(ext4或者xfs),并挂载到目录,  mkfs.ext4 /dev/vg1/lv1  mkdir /mnt/lv1  mount /dev/vg1/lv1 /mnt/lv1
动态扩展和缩减
lvm最大的优势在于能动态调整逻辑卷的空间大小。可调整卷组vg和逻辑卷lv的大小
卷组扩展

当卷组空间不足时,只需将新的物理磁盘或分区初始化为 PV,然后追加到现有的 VG 中即可。整个过程无需卸载任何已挂载的逻辑卷,也无需中断业务

#初始化新盘为物理卷pvreate /dev/sde #将初始化后的pv加入到卷组vgvgextend vg1 /dev/sde
逻辑卷扩展,可在线执行
1.增加lv空间#扩展逻辑卷容量,在现有基础上增加100M,#必须有+符号  lvextend -L +100M /dev/vg1/lv1  #或者使用百分比来扩容空间,+100%FREE表示将vg全部的剩余空间扩展到lv  lvextend -L 100%FREE -r /dev/vg1/lv12.刷新文件系统  #扩展完成以后,刷新文件系统,使其识别新空间。#或者在第一步执行lvextend命令时加上-r可无需执行此步。  resize2fs  /dev/vg1/lv1  #指定逻辑卷   xfs_growfs /mnt/lv1   #指定挂载目录 
缩减卷组

与扩展相比,缩减 VG 需要稍微谨慎一些,因为必须确保要移除的 PV 上没有正在使用的 LV 数据

#安全移除pvvgreduce vg1 /dev/sde#强制移除(包含数据)-可以先使用pvmove /dev/sde 命令将数据迁移到vg内的其他空闲pv,然后再执行vgreduce.

缩减逻辑卷,先卸载文件系统才能执行缩减空间的操作,需谨慎操作

#1.卸载文件系统  umount /dev/mnt/lv1#2.检查文件系统  e2fsck -f /dev/vg1/lv1#3.缩减文件系统  resize2fs /dev/vg1/lv1 <目标大小>#4.执行缩减  lvcreate -L -<减少量> /dev/vg1/lv1
删除逻辑卷
当你不在需要这个lvm资源池,需按照从lv-->vg-->pv的顺序完成。
#1.卸载逻辑卷,解除占用状态  umount /mnt/lv1#2.删除逻辑卷  lvremove /dev/vg1/lv1#3.删除卷组  vgremove vg1#4.删除物理卷  pvremove /dev/sdc
dmsetup

msetup 是一个更加底层的逻辑卷管理工具。平时我们管理linux 上的逻辑卷,使用lvm相关的工具即可。lvs是更高级的管理逻辑卷的命令,但是,有时候会出现类似lvm 删除不掉的lvm分区,我们可以使用dmsetup去删除。

dmsetup命令

  dmsetup info   # 查看Device Mapper设备概述  显示当前devicemapper 的信息  demsetup ls #列出所有逻辑设备  demsetup status # 列出所有逻辑设备的状态信息  dmsetup deps   # 显示设备依赖关系  dmsetup table  #用来查看物理设备到虚拟设备的映射表  desetup remove # 移除逻辑设备

操作实例

#操作实例1.创建lv逻辑卷。# 创建逻辑卷[root@seed-84 ~]# vgcreate  vg-test /dev/sdbPhysical volume "/dev/sdb" successfully created.Volume group "vg-test" successfully created[root@seed-84 ~]# lvcreate -n vg-lv  -l 100%FREE vg-testLogical volume "vg-lv" created.# 查看逻辑卷[root@seed-84 ~]# lvsLV    VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertvg-lv vg-test -wi-a----- <16.00g2.查看lvm路径。[root@seed-84 ~]# ll /dev/mapper/vg--test-vg--lvlrwxrwxrwx. 1 root root 7 May 27 11:51 /dev/mapper/vg--test-vg--lv -> ../dm-03.rm 删除 dm-0(这里为非正常删除,为了演示现象)。[root@seed-84 ~]# rm /dev/dm-0rm: remove block special file ‘/dev/dm-0’? y4.删除/dev/mapper/下的vg-test目录。rm /dev/mapper/vg--test-vg--lv  -rf5.使用sgdisk 格式化磁盘信息。[root@seed-84 ~]# sgdisk  -z /dev/sdbCreating new GPT entries.GPT data structures destroyed! You may now partition the disk using fdisk orother utilities.[root@seed-84 ~]# sgdisk  -Z /dev/sdbCreating new GPT entries.GPT data structures destroyed! You may now partition the disk using fdisk orother utilities.6.执行wipefs -a 尝试擦该设备,却一直提示磁盘正在使用。[root@seed-84 ~]# wipefs -a /dev/sdbwipefs: error: /dev/sdb: probing initialization failed: Device or resource busy7.使用dmsetup 查看lv卷,使用dmsetup移除该卷。[root@seed-84 ~]# dmsetup lsvg--test-vg--lv (253:0)[root@seed-84 ~]# dmsetup remove vg--test-vg--lv8.再次执行wipefs -a /dev/sdb。[root@seed-84 ~]# wipefs -a /dev/sdb
lvm相关操作命令集合
#物理卷  pvcreate   创建pv               例:pvcreate /dev/sda1  pvs        查看pv信息           例:直接在命令行里输入pvs  pvdisplay  查看pv详细信息       例:pvcreate /dev/sda1  pvmove     将pv数据移动到其他pv  例:pvmove /dev/sda1 /dev/sda4  pvremove   将pv删除             例:pvremove /dev/sda1#卷组  vgcreate   创建vg               例:vgcreate myvg  /dev/sda{m,n}  vgs        查看vg信息           例:直接在命令行里输入vgs  vgdisplay  查看vg详细信息       例:vgdisplay myvg  vgremove   将vg删除             例:vgremove myvg#扩展vg,首先准备好一个PV;#然后使用vgextend命令即可完成扩展;#格式: vgextend VG_NAME /PATH/TO/PV  vgextend myvg /dev/sdb2 扩展myvg卷组,把/dev/sda2加进去#缩减vg(移除pv /dev/vdc)  1)确定要移除的PV;  2) 缩减lv到2G大小     umount /data                          #先卸载逻辑卷     e2fsck -f /dev/vg_zhb/lv_zhb          #检查文件系统的完整性     resize2fs /dev/vg_zhb/lv_zhb 2G       #调整文件系统大小为2G     lvreduce -L 2G /dev/vg_zhb/lv_zhb     #缩减lv大小为2G  3)将此PV上的数据转移至其它PV;    格式:pvmove /path/to/pv      示例:pvmove -v /dev/vdc /dev/vdb      #将pv vdc的lv迁移逻辑卷到pv vdb上  4)从卷组中将此PV vdc移除;    格式:vgreduce VG_NAME /PATH/TO/PV    示例:vgreduce vg_zhb /dev/vdc         #缩减vg_zhb卷组,把/dev/vdc去掉  5)刷新lv文件系统     resize2fs /dev/vg_zhb/lv_zhb      6)重新挂载        #创建、查看、删除lv  lvcreate   创建lv                 示例1:lvcreate -n lv-name -L 20G vg-name   示例2:lvcreate  -n lv_zhb -l 100%FREE vg_zhb  lvs        查看lv信息           例:直接在命令行里输入lvs  lvdisplay  查看lv详细信息       例:vgdisplay lv1  lvremove   将lv 移除            例:lvremove  /dev/myvg/lv1#扩展lv 1、扩展(支持在线)    lvextend -L [+]SIZE /path/to/lv    resize2fs /path/to/device    lvextend -L +2G /dev/vg_zhb/lv_zhb    resize2fs /dev/vg_zhb/lv_zhb 2、缩减lv(不支持在线)    确定缩减的大小,但前提是至少能容纳原有的所有数据    umount /dev/vg_zhb/lv_zhb           #先卸载逻辑卷    e2fsck -f /dev/vg_zhb/lv_zhb        #检查文件系统的完整性    lvresize /dev/vg_zhb/lv_zhb -L 2G   #缩减文件系统大小,设置lv大小为2G    lvreduce -L 2G /dev/vg_zhb/lv_zhb   #将逻辑卷/dev/vg_zhb/lv_zhb的大小缩小到2GB    resize2fs /dev/vg_zhb/lv_zhb        #将逻辑卷 /dev/vg_zhb/lv_zhb 的大小调整为2GB    mount /dev/vg_zhb/lv_zhb /data#缩减lvsudo umount /mnt/mylv              #先卸载逻辑卷sudo e2fsck -f /dev/myvg/mylv      #检查文件系统的完整性sudo resize2fs /dev/myvg/mylv 15G  #缩减文件系统大小sudo lvreduce -L 15G /dev/myvg/mylv 1)卸载并强行检测文件系统;   e2fsck -f 2)逻辑边界   resize2fs /path/to/device SIZE 3)物理边界   lvreduce -L [-]SIZE /path/to/lv#缩减lv,缩减vg#将vdc增加到vg_zhb,缩减lv_zhb,缩减vg_zhb。pvcreate  /dev/vdcvgextend vg_zhb /dev/vdclvcreate -n lv_zhb -l 100%FREE vg_zhbmkfs.ext4 /dev/vg_zhb/lv_zhbmount /dev/vg_zhb/lv_zhb  /datadd if=/dev/zero of=/data/aa.txt bs=4M count=100umount /datae2fsck -f /dev/vg_zhb/lv_zhbresize2fs /dev/vg_zhb/lv_zhb 2Glvreduce -L 2G /dev/vg_zhb/lv_zhbpvmove -v /dev/vdc /dev/vdbvgreduce vg_zhb /dev/vdcresize2fs /dev/vg_zhb/lv_zhbmount /dev/vg_zhb/lv_zhb  /data

往期推荐:

操作系统Centos和openEuler有什么不同点

linux安全 云主机常见的安全配置

局域网内部配置ubuntu apt本地软件源

linux系统中用一次忘一次的命令

国产信创100%替换进程:需求分析

——订阅内容集合——
linux技术博客 | 云计算-openstack | 市场分析 | 为梦想启航

持续分享了 Linux 运维中的实用技巧和工具,希望能为你的日常工作带来帮助。


系统稳定,始于细节;运维之道,贵在积累。

🔹 欢迎点赞 + 在看 + 转发,让更多同行看到!

🔹 关注本号,持续更新 Linux、Shell、云计算等技术干货。

🔹 留言区开放:你在实践中遇到过哪些运维问题?欢迎交流!

最新文章

随机文章