热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

开发笔记:什么是逻辑卷管理器lvm?lvm设备的管理

篇首语:本文由编程笔记#小编为大家整理,主要介绍了什么是逻辑卷管理器lvm?lvm设备的管理相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了什么是逻辑卷管理器lvm?lvm设备的管理相关的知识,希望对你有一定的参考价值。








lvm逻辑卷管理


    • 基础概念
    • lvm设备的建立
    • xfs文件系统下的lvm扩容(不支持缩容)
      • 1. 当vg中的容量充足,lv的不够了
      • 2. 当vg中的容量不足时,添加pv

    • EXT4文件系统下的lvm扩容和缩容
      • 扩容
      • 缩容

    • 给lvm设备拍快照
    • 删掉lvm设备




基础概念



为什么使用lvm?
lvm是Linux系统用于对硬盘分区进行管理的一种机制,为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进行强制扩容或缩容从理论上讲是可行的。但是却可能造成数据的丢失。LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理设备和底层架构和布局,就可以实现对硬盘分区的动态调整。



  • LVM(Logical Volume Manager)逻辑卷管理器:
    是Linux环境下对磁盘分区进行管理的一种机制,可以动态调整磁盘容量,提高磁盘管理灵活性。本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次。但是/boot分区必须独立出来,不能基于LVM创建。
  • PV(Physical Volume)物理卷:
    是LVM机制的基本存储设备,处于LVM中的最底层,通常对应一个普通分区或是整个硬盘。创建物理卷时,会在分区或磁盘头部创建一个用于记录LVM属性的保留区块,并把存储空间分割成默认大小为4MB的基本单元(Physical Extend,PE),从而构成物理卷。
  • VG(Volume Group)卷组:
    卷组建立在物理卷之上,是由一个或多个物理卷组成的一个整体。一个LVM系统中可以只有一个卷组,也可以包含多个卷组。可以动态添加、移除物理卷,创建时可以指定PE大小。
  • LV(Logical Volume)逻辑卷:
    建立在卷组之上,与物理卷没有直接关系。格式化后,即可挂载使用。它是最终用户使用的逻辑设备。逻辑卷创建之后,其大小可以伸缩。
  • PE(Physical Extents)物理扩展块:
    PE是LVM最小的存储单位,一般为4MB大小,它是构成VG的基本单位,PE的大小是可以指定的。但PE的大小一旦确定将不能改变,同一个卷组中的所有的物理卷的PE的大小是固定的。
  • LE(logical extent)逻辑块:
    逻辑块是逻辑卷中可用于分配的最小存储单元,逻辑块的大小取决于逻辑卷所在卷组中的物理块的大小(PE和LE的大小是相同的)。一个LV由多个固定大小的LE组成。

简单点说:我们硬盘的分区安装上lvm软件后变成物理卷pv,pe设定了物理卷pv最小存储单元,物理卷pv捆绑到一起叫vg卷组,vg卷组里再划分出来一个设备,设备叫lv逻辑卷,格式化后即可挂载使用。lv逻辑卷没有了从vg卷组里取,vg卷组没有了再划分物理磁盘添加,这样保证了lv空间永远是充足的。



在这里插入图片描述
图源:什么是lvm



lvm设备的建立

第一步:建立物理分区并设定分区type为lvm
fdisk /dev/sda,输入n建立分区
在这里插入图片描述
输入t更改分区类型,然后wq退出保存。最后udevadm settle,同步分区表
在这里插入图片描述
第二步:创建pv
pvcreate /dev/sda1
在这里插入图片描述
第三步:创建vg
vgcreate lcukyvg -s 2M /dev/sda1 ,-s设定最大存储单元pe大小为2M,存储单元越小,划分精度越高,读取速度越慢,最小128KB
vgdisplay查看vg
在这里插入图片描述
第四步:创建lvm
lvcreate -L 100M -n luckylv0 luckyvg ,-L指定大小 -n指定名称
在这里插入图片描述
第五步:格式化
mkfs.xfs /dev/luckyvg/luckylv0
在这里插入图片描述
第六步:挂载
mount /dev/luckyvg/luckylv0 /lucky
在这里插入图片描述
最终结果:
在这里插入图片描述


xfs文件系统下的lvm扩容(不支持缩容)


1. 当vg中的容量充足,lv的不够了

第一步:拉伸lv
`lvextend -L 200M /dev/mapper/luckyvg/luckylv0`
##拉伸设备到200M

在这里插入图片描述
第二步:拉伸文件系统:
xfs_growfs /lucky/
或者
xfs_growfs /dev/luckyvg/luckylv0
##拉伸文件系统,可以用设备或挂载点
在这里插入图片描述


2. 当vg中的容量不足时,添加pv

第一步~第二步见上面lvm设备的建立:划分分区并创建pv
在这里插入图片描述
第三步:对容量不够的vg扩容
vgextend luckyvg /dev/sda2
##将pv物理卷sda2加入到vg卷组中
在这里插入图片描述
第四步:拉伸lv
lvextend -L 1500M /dev/mapper/luckyvg/luckylv0
第五步:拉伸文件系统:
xfs_growfs /lucky/
##刷新文件系统
在这里插入图片描述


EXT4文件系统下的lvm扩容和缩容


扩容

第一步:在上文创建好lvm设备的基础上,卸载并格式化为EXT4文件系统然后再挂载回去
在这里插入图片描述
第二步:拉伸lv和文件系统
lvextend -L 1800M /dev/luckyvg/luckylv0
##拉伸lv到1800M
resize2fs /dev/mapper/westosvg-westoslv
##刷新文件系统
在这里插入图片描述


缩容

第一步:在上文创建好lvm设备的基础上,卸载并检测设备上有多大的数据e2fsck -f /dev/luckyvg/luckylv0
在这里插入图片描述
第二步:缩减文件设备并挂载
resize2fs /dev/luckyvg/luckylv0 500M
##缩到500M
在这里插入图片描述
第三步:缩减lv
lvreduce -L 500M /dev/luckyvg/luckylv0
在这里插入图片描述
第四步:把vg里闲置的pv移走
pvs查看/dev/sda2是空的,可以把这块移走
在这里插入图片描述
vgreduce luckyvg /dev/sda2
##减掉vg
pvremove /dev/sda2
##移走pv的sda2
在这里插入图片描述



如果想移走的pv是有数据的,可以先把数据移动到其他的pv分区里,再减掉vg,移走不要的pv设备
pvmove /dev/sda1 /dev/sda2
##1的数据移到2里
在这里插入图片描述



给lvm设备拍快照

拍快照的目的是在快照上进行操作,不会对原始设备造成损害!
拍快照命令:
lvcreate -L 50M -n luckylv0-backup -s /dev/luckyvg/luckylv0
##L存储更改内容的大小
##快照在/dev/luckyvg/目录下
测试:
第一步:挂载原始lv设备,并进入挂载点创建一些文件,然后卸载
在这里插入图片描述
第二步:拍快照(lvs可以查看到),然后挂载luckylv0-backup这块设备(拍的快照)到之前我们创建文件的目录!!!进入挂载点删掉创建的文件,然后卸载。
##这样我们的操作就是在快照上进行,不会对原始设备造成损害!
在这里插入图片描述

第三步:去掉我们快照的设备lvremove /dev/luckyvg/luckylv0-backup,然后重新对原始硬盘拍快照,然后重新挂载快照设备查看我们之前的文件还在,说明我们的原始设备没有数据没有被删除,测试成功!
在这里插入图片描述


删掉lvm设备

lvm删除:
umount /dev/luckyvg/luckylv0 #如果有快照还挂载着记得也卸载了
lvremove /dev/luckyvg/luckylv0
vgremove /dev/luckyvg
pvremove /dev/sda2 --force --force #有数据的情况下要加--force --force,强制清空
最后dd if=/dev/zero of=/dev/sda bs=1M count=5覆盖原数据,就是全新的设备了!

在这里插入图片描述






推荐阅读
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 第三周课堂测试1、使用汇编语言编写指令时,用一些简单的容易记忆的符号来代替二进制指令,比机器语言更为方便,属于高级语言。(B ... [详细]
  • 我们正在使用GNU Make来构建我们的系统,在makefile文件的末尾,我们通过一个名为Makedepends的包含来生成一系列的.d文件。然而,当文件被删除或移动时,依赖关系会中断,我们需要寻找一种方法来优雅地处理这种情况。 ... [详细]
  • PHP网站部署指南:从零开始搭建PHP网站
    本文提供了详细的步骤指导,帮助开发者在不同环境下成功部署PHP网站,包括在IIS和Apache服务器上的具体操作。 ... [详细]
  • 成为一名高效的Java架构师不仅需要掌握高级Java编程技巧,还需深入理解JVM的工作原理及其优化方法。此外,对池技术(包括对象池、连接池和线程池)的应用、多线程处理、集合对象的内部机制、以及常用的数据结构和算法的精通也是必不可少的。同时,熟悉Linux操作系统、TCP/IP协议栈、HTTP协议等基础知识,对于构建高效稳定的系统同样重要。 ... [详细]
  • VS Code 中 .vscode 文件夹配置详解
    本文介绍了 VS Code 中 .vscode 文件夹下的配置文件及其作用,包括常用的预定义变量和三个关键配置文件:launch.json、tasks.json 和 c_cpp_properties.json。 ... [详细]
  • 本文详细介绍了如何在Ubuntu操作系统中安装和配置Maven,包括必要的环境准备和验证步骤。 ... [详细]
  • Mac环境下Java与Ant自动化构建环境搭建指南
    本文详细介绍了如何在Mac操作系统上为测试工程师搭建Java和Ant开发环境,包括环境变量配置等关键步骤。 ... [详细]
  • 设计模式系列-原型模式
    一、上篇回顾上篇创建者模式中,我们主要讲述了创建者的几类实现方案,和创建者模式的应用的场景和特点,创建者模式适合创建复杂的对象,并且这些对象的每个组成部分的详细创建步骤可以是动态的变化的,但 ... [详细]
  • 酷家乐 Serverless FaaS 产品实践探索
    本文探讨了酷家乐在 Serverless FaaS 领域的实践与经验,重点介绍了 FaaS 平台的构建、业务收益及未来发展方向。 ... [详细]
  • 本文将详细介绍在Linux环境下挂载U盘的方法和步骤,帮助用户更好地理解和操作Linux系统下的外部存储设备。 ... [详细]
  • 本文深入探讨了分布式文件系统的核心概念及其在现代数据存储解决方案中的应用,特别是针对大规模数据处理的需求。文章不仅介绍了多种流行的分布式文件系统和NoSQL数据库,还提供了选择合适系统的指导原则。 ... [详细]
  • 本文详细探讨了 HAProxy 的基本概念及其与 LVS(Linux Virtual Server)的比较,特别是在内核空间与用户空间的工作差异。文章还深入介绍了 HAProxy 独有的数据结构——弹性二叉树,以及其在高并发场景下的表现。 ... [详细]
  • 本文探讨了为何在Linux系统上进行项目开发的重要性,并详细介绍了如何在Ubuntu系统上安装PyCharm这一流行的Python集成开发环境(IDE)。通过本文,您将了解在Linux环境下进行Python开发的优势及具体安装步骤。 ... [详细]
author-avatar
DHY微学院朱曜宇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有