linuxlvm介绍及管理

author author     2022-08-01     384

关键词:

什么是LVM?

LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,用来提高磁盘分区管理的灵活性。系统管理员可以通过LVM轻松的管理磁盘分区,如:将若干个磁盘分区或物理磁盘连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。相对于普通的磁盘分区有很大的灵活性,使用普通的磁盘分区,当一个磁盘的分区空间不够使用的时候,可能就会带来很大的麻烦,而使用LVM可以很灵活的调整分区的大小并且数据不受影响。

基本术语

PV(物理卷,Physical Volume):指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

VG(卷组,Volume Group):由多个物理卷组成,类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷)

LV(逻辑卷,Logical Volume):类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统

PE(物理块,Physical Extent):每一个物理卷PV被划分成为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成

LE(逻辑块,Logical Extent):逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应


PV、VG、LV三者之间是有一定逻辑关系的,LVM是将一些零碎的磁盘分区(PV)合并成一个较大的磁盘(VG),然后在根据需要对这个较大的磁盘(VG)进行划分成不同的小分区(LV),并且这些小分区(LV)是可以动态的扩展或缩小的。而PE是PV的基本组成单元,LE是LV的基本组成单元。


创建LVM

第1步:首先创建PV,PV的创建可以直接使用新的磁盘,也可以使用分区,如果使用分区的话需要在创建分区时将分区的标识改为8e( Linux LVM)。

创建PV的命令为:pvcreate [-f] DEVICE

查看PV的命令有:pvdisplay、pvs

#直接将一块新的磁盘创建为PV
[[email protected] ~]# pvcreate /dev/sdb
#使用分区创建PV
[[email protected] ~]# fdisk -l /dev/sdc
...
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   8e  Linux LVM
[[email protected] ~]# pvcreate /dev/sdc1
#查看创建好的PV
[[email protected] ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb        lvm2 ---  20.00g 20.00g
  /dev/sdc1       lvm2 ---  20.00g 20.00g
[[email protected] ~]# pvdisplay 
  "/dev/sdd" 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               zi9Sja-zARN-1fRG-qw5f-iPhH-7oeY-BiiZCP
  ...

第2步:创建VG,创建VG时必须指明卷组的名称和使用哪些pv创建,可以使用-s选项指定PE的大小,PE的默认大小为4M,

具体命令为:vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

查看VG的命令有:vgdisplay、vgs

#创建一个名为vg0,PE大小为8M的VG卷组,并将/dev/sdb和/dev/sdc1加入到卷组中
[[email protected] ~]# vgcreate -s 8M vg0 /dev/sd{b,c1}
  Volume group "vg0" successfully created

#查看创建好的VG
[[email protected] ~]# vgs
   VG   #PV #LV #SN Attr   VSize  VFree 
  vg0    2   0   0 wz--n- 39.98g 39.98g
[[email protected] ~]# vgdisplay 
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               39.98 GiB
  PE Size               8.00 MiB
  Total PE              5118
  Alloc PE / Size       0 / 0   
  Free  PE / Size       5118 / 39.98 GiB
  VG UUID               AJzWEi-UKUx-MtEZ-wKkZ-K5eA-f9Tl-QKLhnU

第3步:创建LV,创建LV时必须指明从哪个卷组中创建,可以使用-L选项指定LV的大小,并且可以使用-n选项指定LV的名称

具体命令为:lvcreate-L #[mMgGtT] -n NAME VolumeGroup

查看LV的命令有:lvdisplay、lvs

#创建一个名为lv0,大小为15G的LV
[[email protected] ~]# lvcreate -L 15G -n lv0 vg0
  Logical volume "lv0" created.
  
#查看创建好的LV
[[email protected] ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-a----- 15.00g                                                    
[[email protected] ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                rQMMHT-GV5D-Jquu-sgFD-4M0V-jrpf-Uu9bg8
  LV Write Access        read/write
  LV Creation host, time fengl, 2016-08-30 18:59:38 +0800
  LV Status              available
  # open                 0
  LV Size                15.00 GiB
  Current LE             1920
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

第4步:格式化、挂载

#格式化分区
[[email protected] ~]# mkfs.ext4 /dev/vg0/lv0 
#查看分区
[[email protected] ~]# blkid 
...
/dev/mapper/vg0-lv0: UUID="78248233-6e64-47ae-9392-2abf6a25fbf0" TYPE="ext4" 
#挂载到/mnt/lvm下,如果想开机自动挂载需要在/etc/fstab配置文件中添加挂载信息
[[email protected] ~]# mount UUID="78248233-6e64-47ae-9392-2abf6a25fbf0" /mnt/lvm

LVM管理

(1)扩容LV:lv的扩容需要两步,第一步先扩容LV大小,这一步可以使用-L选项指定具体扩容到多少,或在原来的基础上添加多大空间,也可以使用-l选项利用百分比的方式扩容,执行完第一步后查看LV确实扩容了,但是挂载的分区大小还是原来大小,如果是ext系列的文件系统可以使用resizefs命令重置大小,命令使用格式如下:

lvextend -L [+]#[bBsSkKmMgGtTpPeE] /dev/VG_NAME/LV_NAME   或

lvextend -l [+]#[%{VG|LV|PVS|FREE|ORIGIN}] /dev/VG_NAME/LV_NAME

resize2fs /dev/VG_NAME/LV_NAME

#将LV从15G扩容到20G
[[email protected] ~]# lvextend -L +5G /dev/vg0/lv0    #方法1
[[email protected] ~]# lvextend -L 20G /dev/vg0/lv0    #方法2
#使用百分比的方式扩容,如将VG0剩余的空间全部扩容给LV0
[[email protected] ~]# lvextend -l +100%FREE /dev/vg0/lv0

#重置大小
[[email protected] ~]# resize2fs /dev/vg0/lv0

(2)缩减LV:LV的缩减比扩容稍微麻烦一点,需要先取消挂载,然后使用e2fsck命令强制执行文件系统检测,然后再使用resize2fs命令缩减文件系统大小到多大,注意缩减后的大小不能小于该分区下所有文件总量的大小,最后再使用lvreduce命令缩减逻辑卷大小到多大

lvreduce  -L  [-]#[bBsSkKmMgGtTpPeE]  /dev/VG_NAME/LV_NAME  或

lvreduce  -l  [-]#[%{VG|LV|FREE|ORIGIN}]  /dev/VG_NAME/LV_NAME

#卸载已经挂载的逻辑卷
[[email protected] ~]# umount /dev/vg0/lv0
#强制检测逻辑卷
[[email protected] ~]# e2fsck -f /dev/vg0/lv0
#缩减文件系统大小为30G
[[email protected] ~]# resize2fs /dev/vg0/lv0 30G
#缩减逻辑卷大小为30G
[[email protected] ~]# lvreduce -L 30G /dev/vg0/lv0
#重新挂载
[[email protected] ~]# mount /dev/vg0/lv0 /mnt/lvm/

(3)扩容VG:卷组的扩容需要先增加PV,然后再将新的PV加入到VG中即可

vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

#新建一个新的PV
[[email protected] ~]# pvcreate /dev/sdd
#扩容VG,将新的/dev/add加入到vg0
[[email protected] ~]# vgextend vg0 /dev/sdd

(4)缩减VG:将某个PV从VG中移除,需要注意的是如果要移除的PV已经被使用,需要先使用pvmove将其中的PE移出来

vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

#先将/dev/sdd中的PE移动出来
[[email protected] ~]# pvmove /dev/sdd
#再缩减VG大小,即将/dev/sdd从vg0中移除
[[email protected] ~]# vgreduce vg0 /dev/sdd

(5)删除lvm

#先卸载已经挂载的逻辑卷
[[email protected] ~]# umount /dev/vg0/lv0
#删除LV
[[email protected] ~]# lvremove /dev/vg0/lv0
#删除VG
[[email protected] ~]# vgremove /dev/vg0
#删除pv
[[email protected] ~]# pvremove /dev/sd{b,ca,d}





本文出自 “linux运维学习之路” 博客,请务必保留此出处http://fengliang.blog.51cto.com/3453935/1844280

linuxlvm与磁盘管理

一、LVM概述1、逻辑卷管理能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性/boot分区用于存放引导文件,不能基于LVM创建2、LVM机制的基本概念1.1、PV(物理卷)物理卷是LVM机制的基本存储设备,通... 查看详情

linuxlvm磁盘扩容

LVM的基本概念物理卷physicalVolume(PV):可以在上面建立组卷的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopbackfile)。物理卷包括一个特殊的header,其余部分被切割为一块块物理区域(physiclaextents)卷组Volumegroup... 查看详情

linux环境:fdisk及parted磁盘分区管理工具介绍

1.fdisk分区工具及实质2.查看磁盘分区信息3.查看磁盘分区cat/proc/partitionsll/dev/sd*4.parted磁盘分区管理工具介绍 查看详情

winform开发框架中的内容及文档管理模块功能介绍

...样需要我们对这些内容及文档进行合适的管理。本文主要介绍在WInform项目中利用ZetaHtmlEditControl进行HTML内容管理,以及利用TXTextControl控件进行WORD文档管理,这两方面都是我们一般进行内容和文档管理所必须的。1、内容及文档管 查看详情

linuxlvm的操作手册_pvcreate_vgcreate_lvcreate_相关

作者微信:15013593099欢迎交流linuxlvm的操作手册_pvcreate_vgcreate_lvcreate_相关一、 前言  每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理... 查看详情

scom管理包模板的介绍及使用

...管理模板包含九个类别,这里就根据常见的几个监控,来介绍他们的作用以及用法:1..NET应用程序性能监视作用:除了使用Microsoft.NetFramework的Windows服务之外,此模板允许你监视IIS7.0和IIS8.0中承载的ASP。NET和 查看详情

淘淘商城01——工程介绍及搭建(代码片段)

一、淘淘商城介绍淘淘网上商城是一个综合性的B2C(商家到用户)平台,类似京东商城、天猫商城。会员可以在商城浏览商品、下订单,以及参加各种活动。管理员、运营可以在平台后台管理系统中管理商品、订单等。客服可以... 查看详情

逻辑卷管理(lvm)

...细地描述了Linux逻辑卷的管理https://linux.die.net/man/8/lvm LinuxLVM2工具手册本文将从以下几个方面介绍LVM什么是逻辑卷逻辑卷的结构逻辑卷的管理迁移逻辑卷到新的系统删除逻辑卷逻辑卷快照什么 查看详情

dockerimages详细介绍及管理制作镜像

Docker  images   介绍:     docker images是docker的三大组件之一 docker把下载好的镜像上传到docker本地镜像仓库中,如果本地镜像仓库中不存在需要用到的镜像,docker会从一个镜像库中去下载... 查看详情

第六大组题目及分工介绍

题目:企业人事档案管理系统随着经济的发展,企业的规模不断扩大,人员流动日趋频繁,人员档案管理的工作量也随之增加,以往的人工处理方式对于员工很多的企业来说就显得力不从心,利用现代计算机技术可使管理人事档... 查看详情

docker的安全及日志管理介绍(代码片段)

Docker的安全及日志管理一、Docker容器与虚拟机的区别1.隔离与共享2.性能与损耗二、Docker存在的安全问题1.Docker自身漏洞2.Docker源码问题三、Docker架构缺陷与安全机制1.容器之间的局域网攻击2.DDoS攻击耗尽资源3.有漏洞的系统调用4.... 查看详情

源代码管理工具github介绍及使用

目录 引言 Git与GitHub   GitHub   Git    Git与GitHub GitHub的使用   账号注册   创建及使用仓库 总结 一、引言  &nb 查看详情

nginx介绍及日常管理的详解

这篇文章主要介绍了Nginx介绍及日常管理的详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下Nginx介绍及日常管理的详解Nginx(发音同enginex)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务... 查看详情

vmwarevcenter6.0安装及群集配置介绍

一、介绍VMwarevCenterServer提供了一个可伸缩、可扩展的平台,为虚拟化管理奠定了基础。可集中管理VMwarevSphere环境,与其他管理平台相比,极大地提高了IT管理员对虚拟环境的控制。VMwarevCenterServer:提高在虚拟基础架构每个级别... 查看详情

vmwarevcenter6.5安装及群集配置介绍

一、介绍VMwarevCenterServer提供了一个可伸缩、可扩展的平台,为虚拟化管理奠定了基础。可集中管理VMwarevSphere环境,与其他管理平台相比,极大地提高了IT管理员对虚拟环境的控制。VMwarevCenterServer:提高在虚拟基础架构每个级别... 查看详情

springcloud组件及功能介绍

1.什么是SpringClould?SpringCloud是一个基于SpringBoot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一... 查看详情

kubesphere简介,功能介绍,优势,架构说明及应用场景

KubeSphere简介,功能介绍,优势,架构说明及应用场景KuberSphere简介1.1功能介绍Kubernetes资源管理微服务治理多租户管理DevOps工程SourcetoImage多维度监控自研多租户告警系统日志查询与收集应用管理与编排基础设施管理多... 查看详情

源代码管理工具github介绍及使用

 一、 GitHub介绍要了解GitHub,首先需要了解Git。Git是一款免费的、开源的、最先进的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。那版本控制又是什么呢?就好比一份文档,你需要添加修... 查看详情