百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Linux系统磁盘分区管理LVM概念及扩容操作

bigegpt 2025-03-14 15:08 13 浏览

LVM的全称为Logical Volume Manager,逻辑卷管理。它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volume group)形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。

LVM相关概念

  • 物理卷(Physical Volume,PV):物理卷是LVM中的基本单元,可以是硬盘、SSD或分区。使用pvcreate命令将物理磁盘或分区转换为物理卷。
  • 卷组(Volume Group,VG):卷组是由一个或多个物理卷组成的逻辑单元,相当于一个存储池。通过使用vgcreate命令创建卷组,将物理卷添加到卷组中。
  • 逻辑卷(Logical Volume,LV):逻辑卷是从卷组划分出来的独立存储单元,类似于硬盘上的一个分区。使用lvcreate命令创建逻辑卷,可以指定逻辑卷的大小和格式。
  • 物理区(Physical Extent,PE):物理区是卷组中的最小分配单元,通常是4MB或更小的大小。卷组中的空间被划分为一组物理区,逻辑卷和物理卷都在物理区级别上进行分配。

以上是LVM的主要组成部分。物理卷被组合成卷组,而卷组中的空间可以根据需要划分为逻辑卷。逻辑卷可以通过挂载到文件系统树上的特定目录来访问和使用。

LVM流程

物理磁盘->物理卷(PV)->加入卷组(VG)->卷组中抽取空间,制作逻辑卷(LV)->格式化->挂载

LVM实操

命令“lsblk”查看当前系统上的磁盘分区情况。

可以看到当前硬盘分区是一个标准分区结构:

  • sda是一个20GB的磁盘,有三个分区:
  • sda1是一个200MB的分区,被挂载为/boot,用于存储引导文件(启动分区);
  • sda2是一个2GB的分区,被标记为[SWAP],用于交换空间(虚拟内存);
  • sda3是一个17.8GB的分区,被挂载为根目录/,用于存储操作系统和用户数据。
  • sr0是一个虚拟光驱。

我们在虚拟机上添加一块5G新磁盘并采用LVM分区。

1. 首先把sdb这块新硬盘设置为物理卷(PV)。“pvcreate /dev/sdb” 将指定的磁盘或分区转换为LVM中的物理卷PV。创建成功后,输入“pvdisplay” 查看新建的物理卷PV信息。

  • PV Name:物理卷的名称为/dev/sdb。
  • VG Name:物理卷尚未分配给任何卷组,因此该字段为空。
  • PV Size:物理卷的总大小为5.00 GiB。
  • Allocatable:当前物理卷不可分配(Allocatable = NO)。
  • PE Size:物理卷上的物理区PE大小为0,这意味着物理卷尚未格式化或分割成任何逻辑结构。
  • Total PE:物理卷上总共的物理区数量为0。
  • Free PE:物理卷上可用的物理区数量为0,即全部空间都尚未分配给任何逻辑卷。
  • Allocated PE:已经分配给逻辑卷的物理区数量为0,即尚未在物理卷上创建任何逻辑卷。
  • PV UUID:物理卷的唯一标识符。

2.成功创建了物理卷后,需要使用“vgcreate my_disk /dev/sdb”命令再创建一个卷组VG。然后使用“vgdisplay”查看验证是否创建成功。

  • VG Name:卷组的名称为my_disk。
  • Format:卷组使用的格式为lvm2,代表LVM的第二版本。
  • Metadata Areas:卷组中的元数据区域数量为1,即指定了一个物理卷。
  • Metadata Sequence No:元数据序列号为1,用于跟踪元数据的更改。
  • VG Access:卷组以读写方式访问。
  • VG Status:卷组状态可调整大小(resizable),表示卷组中的逻辑卷大小可以调整。
  • MAX LV:卷组最大逻辑卷数量为0。
  • Cur LV:当前卷组中的逻辑卷数量为0。
  • Open LV:当前处于打开状态的逻辑卷数量为0。
  • Max PV:卷组中最大物理卷数量为0。
  • Cur PV:当前物理卷数量为1。
  • Act PV:当前活跃的物理卷数量为1。
  • VG Size:卷组的总大小为不到5.00 GiB。
  • PE Size:物理区PE的大小为4.00 MiB。这是卷组中逻辑和物理卷的分配单位。
  • Total PE:卷组中的总物理区数量为1279。
  • Alloc PE / Size:已分配给逻辑卷的物理区数量为0,对应的大小为0。
  • Free PE / Size:可用的物理区数量为1279,对应的大小为不到5.00 GiB。
  • VG UUID:卷组的唯一标识符。

3.成功创建卷组后,需要把物理卷PV分配到卷组VG中,也就是创建逻辑卷LV,使用“lvcreate -L 4G -n my_home my_disk”命令,在卷组my_disk中创建一个逻辑卷my_home大小为 4GB。此时使用命令“lvdisplay”查看验证逻辑卷是否创建成功。

  • LV Path:逻辑卷的路径为/dev/my_disk/my_home。
  • LV Name:逻辑卷的名称为my_home。
  • VG Name:逻辑卷所属的卷组名称为my_disk。
  • LV UUID:逻辑卷的唯一标识符。
  • LV Write Access:逻辑卷的读写权限为读写(read/write)。
  • LV Creation host, time:逻辑卷的创建主机,创建时间。
  • LV Status:逻辑卷的状态为可用(available)。
  • open:逻辑卷当前打开的文件描述符数量为0。
  • LV Size:逻辑卷的大小为4.00 GiB。
  • Current LE:逻辑卷当前的逻辑区(Logical Extent)数量为1024。
  • Segments:逻辑卷的段数量为1。
  • Allocation:逻辑卷的分配策略为继承(inherit)。
  • Read ahead sectors:逻辑卷当前的预读扇区数为8192。
  • Block device:逻辑卷的块设备名称为253:0。

根据输出,逻辑卷my_home的状态为可用,大小为4.00 GiB,在/dev/my_disk/my_home路径上可以访问。

4.上述完成,LVM分区已经创建好,接下来就是对该分区进行格式化,使用“mkfs.ext4 /dev/my_disk/my_home”命令赋予它文件系统。

5.最后一步,我们需要给刚刚新建的逻辑分区创建一个挂载点,也就是新建一个文件夹。

挂载是在操作系统层面上进行的,它创建了一个链接,使得文件系统中的数据可以通过指定的挂载点在操作系统中访问。一旦文件系统被成功挂载,用户可以在挂载点下访问和操作文件。其实挂载就是一种链接,它是操作系统与存储设备的接口,我们通过挂载点去访问存储设备。

此时可以看到文件与分区已经挂载完成,不过这里要注意:通过命令行的方式挂载分区,等到虚拟机重启的时候就会消失,如果要永久挂载需要到/etc/fstab 进行设置。

LVM 扩充、缩减

LVM是动态分配存储空间的技术,我们可以随时为该逻辑卷增加或减少空间,这种操作不限于是同一块磁盘,也可以是其他磁盘,这也极大的方便我们随时更改空间。

我们再增加一块5G的新硬盘。

使用“vgextend my_disk /dev/sdc”加入卷组,然后“vgdisplay”查看是否扩充成功。

最后使用命令“lvextend -L +5.9G -r /dev/my_disk/my_home”给逻辑卷扩充空间,第一块硬盘剩下的1G和第二块硬盘5G(有些文件的占用,总共5.99G)。

如果要缩减逻辑卷空间使用命令“lvreduce -L -5G -r /dev/my_disk/my_home”。通过“df -h”查看空间调整情况。

相关推荐

最全的MySQL总结,助你向阿里“开炮”(面试题+笔记+思维图)

前言作为一名编程人员,对MySQL一定不会陌生,尤其是互联网行业,对MySQL的使用是比较多的。对于求职者来说,MySQL又是面试中一定会问到的重点,很多人拥有大厂梦,却因为MySQL败下阵来。实际上...

Redis数据库从入门到精通(redis数据库设计)

目录一、常见的非关系型数据库NOSQL分类二、了解Redis三、Redis的单节点安装教程四、Redis的常用命令1、Help帮助命令2、SET命令3、过期命令4、查找键命令5、操作键命令6、GET命...

netcore 急速接入第三方登录,不看后悔

新年新气象,趁着新年的喜庆,肝了十来天,终于发了第一版,希望大家喜欢。如果有不喜欢看文字的童鞋,可以直接看下面的地址体验一下:https://oauthlogin.net/前言此次带来得这个小项目是...

精选 30 个 C++ 面试题(含解析)(c++面试题和答案汇总)

大家好,我是柠檬哥,专注编程知识分享。欢迎关注@程序员柠檬橙,编程路上不迷路,私信发送以下关键字获取编程资源:发送1024打包下载10个G编程资源学习资料发送001获取阿里大神LeetCode...

Oracle 12c系列(一)|多租户容器数据库

作者杨禹航出品沃趣技术Oracle12.1发布至今已有多年,但国内Oracle12C的用户并不多,随着12.2在去年的发布,选择安装Oracle12c的客户量明显增加,在接下来的几年中,Or...

flutter系列之:UI layout简介(flutter-ui-nice)

简介对于一个前端框架来说,除了各个组件之外,最重要的就是将这些组件进行连接的布局了。布局的英文名叫做layout,就是用来描述如何将组件进行摆放的一个约束。在flutter中,基本上所有的对象都是wi...

Flutter 分页功能表格控件(flutter 列表)

老孟导读:前2天有读者问到是否有带分页功能的表格控件,今天分页功能的表格控件详细解析来来。PaginatedDataTablePaginatedDataTable是一个带分页功能的DataTable,...

Flutter | 使用BottomNavigationBar快速构建底部导航

平时我们在使用app时经常会看到底部导航栏,而在flutter中它的实现也较为简单.需要用到的组件:BottomNavigationBar导航栏的主体BottomNavigationBarI...

Android中的数据库和本地存储在Flutter中是怎样实现的

如何使用SharedPreferences?在Android中,你可以使用SharedPreferencesAPI来存储少量的键值对。在Flutter中,使用Shared_Pref...

Flet,一个Flutter应用的实用Python库!

▼Flet:用Python轻松构建跨平台应用!在纷繁复杂的Python框架中,Flet宛如一缕清风,为开发者带来极致的跨平台应用开发体验。它用最简单的Python代码,帮你实现移动端、桌面端...

flutter系列之:做一个图像滤镜(flutter photo)

简介很多时候,我们需要一些特效功能,比如给图片做个滤镜什么的,如果是h5页面,那么我们可以很容易的通过css滤镜来实现这个功能。那么如果在flutter中,如果要实现这样的滤镜功能应该怎么处理呢?一起...

flutter软件开发笔记20-flutter web开发

flutterweb开发优势比较多,采用统一的语言,就能开发不同类型的软件,在web开发中,特别是后台式软件中,相比传统的html5开发,更高效,有点像c++编程的方式,把web设计出来了。一...

Flutter实战-请求封装(五)之设置抓包Proxy

用了两年的flutter,有了一些心得,不虚头巴脑,只求实战有用,以供学习或使用flutter的小伙伴参考,学习尚浅,如有不正确的地方还望各路大神指正,以免误人子弟,在此拜谢~(原创不易,转发请标注来...

为什么不在 Flutter 中使用全局变量来管理状态

我相信没有人用全局变量来管理Flutter应用程序的状态。毫无疑问,我们的Flutter应用程序需要状态管理包或Flutter的基本小部件(例如InheritedWidget或St...

Flutter 攻略(Dart基本数据类型,变量 整理 2)

代码运行从main方法开始voidmain(){print("hellodart");}变量与常量var声明变量未初始化变量为nullvarc;//未初始化print(c)...