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

在这里插入图片描述






推荐阅读
  • 导读:今天编程笔记来给各位分享关于php动态扩展怎么加载的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
  • docker是跨平台的?_跨平台构建 Docker 镜像新姿势,x86、arm 一把梭
    点击阅读原文可以获得更好的阅读体验。前言在工作和生活中,我们可能经常需要将某个程序跑在不同的CPU架构上,比如让某些不可描述的软件运行在树莓派或嵌入 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 1.dd命令dd命令的全称为diskdump,对系统所有用户开放。该命令用于复制磁盘的数据块,且可在复制文件的同时指定转换的文件格式。命令选项参数说明ifFILE:输入文件名称,默 ... [详细]
  • Nginxgaodaima.comnginx属于七层架构,支持的是http协议,本身对tcp协议没有支持。所以不能代理mysql等实现负载均衡。但是lvs这个东西不熟悉,主要是公司 ... [详细]
  • 这篇文章将为大家详细讲解有关C#开发技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C#开发技 ... [详细]
  • 目录结构如下:Nginx基础知识NginxHTTP服务器的特色及优点Nginx的主要企业功能Nginx作为web服务器的主要应用场景包括:Nginx的安装安装环境 ... [详细]
  • 讨论电子工程师的前途
    这里主要以个人经历谈谈年轻电子工程师作为电子新手,需要开始全新的技术生涯;面临的困惑、最关心的问题、对未来的期待。中国缺少什么样的电子工程师?中国缺少满嘴胡须的电子 ... [详细]
  • 前言微服务架构(MicroserviceArchitecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务 ... [详细]
  • 电脑是如何启动的?为什么电脑断电后系统时间任然在走,短时间内启动电脑后系统时间不会发生偏差?远程开机是如何实现的?为什么电脑 ... [详细]
  • 开发笔记:深度探索!Android之OkHttp网络架构源码解析
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了深度探索!Android之OkHttp网络架构源码解析相关的知识,希望对你有一定的参考价值。 ... [详细]
  • AI 学习路线:从Python开始机器学习
    AI 学习路线:从Python开始机器学习 ... [详细]
  • 高可用架构_MySQL高可用架构设计
    文章来自于https:www.jianshu.compd3107bda2963PHP进阶学习交流QQ群:983229225Mysql复制功能介绍Mysql的复制功能提 ... [详细]
  • 搭建lvs+keepalived+mfs+nagios架构
    搭建,lvs,keepalived,mfs ... [详细]
  • 架构设计:负载均衡层设计方案之负载场景和解决方式篇
    来自:JAVA入门中https:blog.csdn.netyinwenjiearticledetails46605451在上一篇《标准Web系统的架构分层》文章中&# ... [详细]
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社区 版权所有