热门标签 | 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覆盖原数据,就是全新的设备了!

在这里插入图片描述






推荐阅读
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
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社区 版权所有