深入解析Linux逻辑卷管理器(LVM)

news2024/11/16 19:53:12

🐇明明跟你说过:个人主页

🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅

🔖行路有良友,便是天堂🔖

目录

一、前言

1、Linux的起源与发展

2、什么是逻辑卷管理器(LVM)

二、LVM基础概念 

1、物理卷(Physical Volume, PV) 

2、卷组(Volume Group, VG)

3、逻辑卷(Logical Volume, LV) 

4、LVM与其他存储技术的比较 

三、LVM实践 

1、环境准备

2、创建PV

3、创建VG

4、创建LV

5、格式化LV 

6、挂载使用LV


一、前言

1、Linux的起源与发展


1991年,芬兰赫尔辛基大学的学生林纳斯·托瓦兹(Linus Torvalds)开始编写一个新的操作系统内核,这个内核最初被称为“Freax”。他的初衷只是想学习操作系统内核的开发,并为自己的个人计算机编写一个操作系统。然而,当他将这个内核发布在Internet上并开放源代码后,全球各地的程序员开始参与到这个项目中来,共同完善这个内核。最终,这个内核被命名为Linux,这个名字是由Linus Torvalds的名字和Unix操作系统的名字组合而成的。

Linux从一开始就坚持源代码的公开和免费使用,任何人都可以对其进行修改和分发。这种开放性和自由性吸引了大量的开发者和用户,使得Linux逐渐成长并成熟起来。如今,Linux已经发展成为一个性能稳定、功能强大的多用户网络操作系统,支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。同时,Linux也有上百种不同的发行版,如基于社区开发的Debian、ArchLinux,以及基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。

2、什么是逻辑卷管理器(LVM)

逻辑卷管理器(Logical Volume Manager,简称LVM)是一种磁盘管理方法,它通过将多个物理卷(Physical Volume,PV)抽象成一个卷组(Volume Group,VG),并在卷组的基础上进一步划分逻辑卷(Logical Volume,LV),从而提供更高的磁盘管理灵活性。

 

LVM是一个虚拟设备驱动,它在内核中的块设备和物理设备之间添加了一个新的抽象层次。这个抽象层次允许用户将几块磁盘(物理卷)组合起来形成一个存储池或卷组,并从卷组中划分出不同大小的逻辑卷来创建新的逻辑设备。这样,底层的原始磁盘就不再由内核直接控制,而是由LVM层来控制。

LVM具有许多优点,例如:

  • 灵活性:LVM允许逻辑卷跨越多个物理卷,并且可以在任何时候任意调整大小。这意味着用户可以根据需要轻松地扩展或缩小逻辑卷,而无需担心物理磁盘的大小限制。
  • 隐藏与硬件相关的存储设置:LVM隐藏了与硬件相关的存储设置,使用户可以在不停止应用或卸载文件系统的情况下调整卷大小或进行数据迁移。这有助于减少操作成本并提高系统的可用性。
  • 提高磁盘管理效率:通过LVM,用户可以更方便地管理磁盘空间,例如重新设定文件系统的大小或在多个物理设备间重新组织文件系统。这有助于提高磁盘的利用率和管理的效率。

 

总之,逻辑卷管理器(LVM)是一种强大的磁盘管理工具,它通过将多个物理卷组合成一个卷组并划分逻辑卷来提供更高的磁盘管理灵活性和效率。

二、LVM基础概念 

1、物理卷(Physical Volume, PV) 


物理卷(Physical Volume, PV)是逻辑卷管理器(LVM)中的基本组成单位之一。物理卷是指实际的物理存储设备,如硬盘、固态硬盘等。在使用LVM之前,管理员需要将这些物理存储设备初始化为物理卷,并将它们添加到逻辑卷组(Volume Group, VG)中。

物理卷通常对应于硬盘的一个分区,但也可以是整个硬盘。一旦一个物理存储设备被初始化为物理卷,它就被LVM管理,管理员可以使用LVM命令来查看、添加、删除和调整物理卷的属性。

通过使用物理卷,LVM允许管理员在多个物理存储设备之间创建灵活的存储布局,以满足不同的存储需求,并且可以方便地进行管理和调整。

2、卷组(Volume Group, VG)

卷组(Volume Group, VG)是逻辑卷管理器(LVM)中的一个重要概念,用于管理物理卷(Physical Volumes, PV)的集合。在LVM中,多个物理卷可以组合成一个卷组,形成一个逻辑的存储池。卷组提供了一个抽象层,使管理员可以在逻辑上管理一组物理卷,而不需要关心具体的物理存储设备。

管理员可以向卷组中添加或删除物理卷,从而扩展或缩减存储空间。卷组还可以被进一步分割成逻辑卷(Logical Volumes, LV),并且可以为这些逻辑卷分配存储空间。

卷组的创建和管理是LVM中的一个关键任务,它使管理员能够更灵活地管理存储空间,并且可以在运行时动态地调整存储分配,而无需关闭系统或重新分区硬盘。

  

3、逻辑卷(Logical Volume, LV) 

逻辑卷(Logical Volume, LV)是逻辑卷管理器(LVM)中的另一个关键概念,它是从一个或多个卷组(Volume Group, VG)中划分出的逻辑存储空间单元。

在LVM中,管理员可以从一个或多个卷组中划分逻辑卷,并且可以为每个逻辑卷指定容量、文件系统类型等属性。逻辑卷就像是一个虚拟的硬盘分区,它可以被格式化、挂载和管理,就像物理硬盘分区一样。

逻辑卷的好处在于它提供了更灵活的存储管理和分配方式。管理员可以在运行时动态调整逻辑卷的大小,而无需关闭系统或重新分区硬盘。此外,逻辑卷还支持高级功能,如快照(Snapshot)、扩展(Extend)、缩小(Reduce)等,使得存储管理更加方便和高效。

  

4、LVM与其他存储技术的比较 

优点:

  1. 灵活性: LVM允许管理员在运行时动态调整存储分配,而无需关闭系统或重新分区硬盘。这种灵活性使得管理员可以更好地应对变化的存储需求,而无需停机或导致服务中断。
  2. 易管理性: LVM提供了一个层级化的存储管理结构,管理员可以将物理卷组织成逻辑卷组,然后再划分逻辑卷。这种层级结构使得存储管理更加清晰和易于管理。
  3. 性能优势: LVM可以在多个物理存储设备之间平衡数据负载,从而提高存储性能。此外,LVM还支持高级功能,如快照(Snapshot)、扩展(Extend)等,这些功能可以提高系统的可用性和数据保护能力。
  4. 数据保护: LVM提供了快照(Snapshot)功能,可以创建数据的快照副本,以便进行备份或测试。这种功能可以保护数据免受意外删除或损坏的影响,并且可以减少备份和恢复操作的时间和成本。

 

缺点:

  1. 复杂性: 对于新手来说,LVM可能需要一定的学习曲线,特别是在配置和管理方面。相比之下,一些简单的存储技术(如传统分区)可能更容易上手。
  2. 性能损耗: 在某些情况下,LVM可能会引入一些性能损耗,特别是在使用快照等高级功能时。管理员需要权衡灵活性和性能之间的平衡。
  3. 依赖性: 使用LVM的系统需要具备LVM支持的文件系统,如ext4、XFS等。因此,如果系统不支持这些文件系统,则无法使用LVM。

三、LVM实践 

1、环境准备

  • 准备1台Linux服务器,
  • 为其准备5块硬盘,也可以是5个未挂载使用的逻辑分区

   

2、创建PV

[root@localhost ~]# pvcreate /dev/sdb /dev/sdc/ /dev/sdd /dev/sde /dev/sdf

查看PV

[root@localhost ~]# pvscan

更详细的查看

[root@localhost ~]# pvdisplay /dev/sdb

   

 

这段输出显示了将物理设备 /dev/sdb 初始化为一个新的物理卷(Physical Volume, PV)的信息。

  • PV Name: 物理卷的名称,这里是 /dev/sdb。
  • VG Name: 物理卷所属的卷组的名称。这里是空白的,表示该物理卷尚未加入任何卷组。
  • PV Size: 物理卷的总大小。这里是 1.00 GiB,表示这个物理卷的容量是 1.00 Gibibytes。
  • Allocatable: 表示是否可以分配空间。这里显示为 NO,表示该物理卷当前不可用于分配。
  • PE Size: 物理卷中物理扩展(Physical Extents)的大小。这里是 0,表示尚未定义。
  • Total PE: 物理卷中的总物理扩展数量。这里是 0,表示尚未分配物理扩展。
  • Free PE: 物理卷中的空闲物理扩展数量。这里是 0,表示没有可用的空间。
  • Allocated PE: 物理卷中已分配的物理扩展数量。这里是 0,表示没有分配任何空间。
  • PV UUID: 物理卷的唯一标识符。

这个输出表明 /dev/sdb 已被初始化为一个物理卷,但尚未加入任何卷组。

3、创建VG

[root@localhost ~]# vgcreate -s 16M vgtest /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf

查看VG

[root@localhost ~]# vgscan

更详细的查看

[root@localhost ~]# vgdisplay vgtest

   

  • VG Name: 卷组的名称,这里是 vgtest。
  • System ID: 系统标识符,这里为空白,表示未指定。
  • Format: 卷组的格式,这里是 lvm2,表示采用 LVM2 格式。
  • Metadata Areas: 元数据区域的数量,这里是 5,表示该卷组的元数据存储在 5 个物理卷中。
  • 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: 当前物理卷数目,这里是 5,表示该卷组包含 5 个物理卷。
  • Act PV: 活动物理卷数目,这里也是 5,表示所有的物理卷都是活动状态。
  • VG Size: 卷组的总大小,这里是 4.92 GiB,表示卷组中所有物理卷的总容量。
  • PE Size: 物理扩展的大小,这里是 16.00 MiB,表示每个物理扩展的大小。
  • Total PE: 卷组中的总物理扩展数量,这里是 315。
  • Alloc PE / Size: 已分配的物理扩展数量和大小,这里是 0 / 0,表示没有分配任何空间。
  • Free PE / Size: 空闲的物理扩展数量和大小,这里是 315 / 4.92 GiB,表示卷组中尚未分配的空间。
  • VG UUID: 卷组的唯一标识符。 

4、创建LV

[root@localhost ~]# lvcreate -L 2G -n lvtest vgtest
  • -L 2G: 这个选项指定了要创建的逻辑卷的大小为 2GB。-L 表示指定逻辑卷的大小,2G 表示 2GB。
  • -n lvtest: 这个选项指定了要创建的逻辑卷的名称为 lvtest。
  • vgtest: 这是指定要创建逻辑卷的卷组的名称,即 lvtest 将被分配到名为 vgtest 的卷组中。 

 

查看LV

[root@localhost ~]# lvscan

更详细的查看

[root@localhost ~]# lvdisplay /dev/vgtest/lvtest

  

  • LV Path: 逻辑卷的路径,这里是 /dev/vgtest/lvtest,表示逻辑卷在文件系统中的路径。
  • LV Name: 逻辑卷的名称,这里是 lvtest。
  • VG Name: 逻辑卷所属的卷组的名称,这里是 vgtest。
  • LV UUID: 逻辑卷的唯一标识符。
  • LV Write Access: 逻辑卷的读写访问权限,这里是 read/write。
  • LV Creation host, time: 逻辑卷创建的主机名和时间。
  • LV Status: 逻辑卷的状态,这里是 available,表示逻辑卷可用。
  • # open: 逻辑卷当前打开的数量,这里是 0。
  • LV Size: 逻辑卷的大小,这里是 2.00 GiB。
  • Current LE: 当前的逻辑扩展(Logical Extents)数量,这里是 128。
  • Segments: 逻辑卷的段数,这里是 3,表示逻辑卷由 3 个段组成。
  • Allocation: 逻辑卷的分配方式,这里是 inherit,表示继承自卷组的分配方式。
  • Read ahead sectors: 预读取的扇区数,这里是 auto,表示自动设置。
  • - currently set to: 当前的预读取扇区数,这里是 8192。
  • Block device: 块设备的标识符,这里是 253:3,表示块设备的主设备号和次设备号。 

5、格式化LV 

[root@localhost ~]# mkfs.xfs /dev/vgtest/lvtest

 

6、挂载使用LV

[root@localhost ~]# mount /dev/vgtest/lvtest /lvmtest/

查看挂载状态

[root@localhost ~]# df -h

 💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Linux的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1677211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

考研数学|李林《880》PK李永乐《660》,你用对了吗?

建议先在强化之前做660,然后在强化的时候再做880。 660整体难度属于基础阶段到强化阶段。而且是选填部分的题目,所以还是要做一些其他题 然后说一下推荐的习题册:基础不好先做1800、强化之前660,强化可选880/1000题。但是传统习题…

ABAP ALSM_EXCEL_TO_INTERNAL_TABLE 导入Excel的几个问题

1、没有办法多页签 2、单元格50个字符限制,每个单元格仅读取50个字符 3、Excel单元格总不能有不可见字符换 eg 回车,换行 # 等否则读取的结果会加上引号

【HarmonyOS】Stage 模型 - 应用配置文件

如图所示: Stage 模型应用配置文件主要有两类: 全局配置文件。放在 AppScope 目录下,app.json5。用来配置应用全局的信息。模块配置文件,放在每个模块里,module.json5。用来配置模块的信息。 一、全局配置文件 示…

1709 ssm互联网消费信贷系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java ssm互联网消费信贷系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源 代码和数据库,系统主要…

AI图书推荐:ChatGPT等生成式AI在高等教育中的应用

自2022年11月以来,ChatGPT及其在高等教育各个层面的影响已成为所有教育对话的核心内容。Chan和Colloton所著的书籍是首批全面探讨ChatGPT与生成式人工智能(GenAI)在高等教育中应用及影响的作品之一。 该书深入研究了针对专业环境定制的AI素养…

单片机开发板上外设资源讲解

单片机开发电路板上简单外设 开发板上各基础外设LED灯按键:数码管介绍液晶屏矩阵键盘扫描的概念LED点阵屏实时时钟蜂鸣器存储器 温度传感器&单总线 开发板上各基础外设 LED灯 中文名:发光二极管 外文名:Light Emitting Diode 简称&…

21、G1分代回收究竟如何让传统方法黯然失色?

21.1、前文回顾 在上一篇文章中,我们详细解析了G1垃圾回收器的设计思想。其核心理念在于将内存分割为众多小的Region,并针对新生代和老年代各自分配一部分Region。在垃圾回收过程中,G1会优先挑选那些能实现最短停顿时间以及最多回收对象的Region,以尽可能确保达到预设的垃…

vsCode 设置上下级文件夹目录分离展示?

默认情况下,vsCode目录文件夹会使用/合并展示在一行,这样视觉上看着并不直观,设置目录文件分离展示方法如下: 1、点击左下角设置图标,点击setting; 2、搜索栏输入compact; 3、取消勾选第一个选…

每日5题Day1 - LeetCode 1-5

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:1. 两数之和 - 力扣(LeetCode) class Solution {public int[] twoSum(int[] nums, int target) {//返回值为Int[]数组,所以先初…

pytorch 2.0 多线程并行,导致GPU利用100%,卡住

背景: 程序中有pytorch模型两个,yolov5,crnn。 之前无论是pth格式,还是TRT格式,并行的都没有问题。 最近发现,多线程ThreadPoolExecutor(max_workers2)调用的时候,即单个进程内处理一张图像&a…

Electron+Vue+pyinstaller服务打包

electron环境安装略 1. electron的入口文件配置test.js, 需要在package.json 配置文件中指定main: src/test.js const { app, BrowserWindow } require(electron)const createWindow () > {const win new BrowserWindow({width: 800,height: 600})// win.loadFile(inde…

【现代C++】三路比较运算符

C20引入了三路比较运算符&#xff08;也称为太空船运算符&#xff0c;<>&#xff09;&#xff0c;它允许同时比较两个值&#xff0c;并返回它们的相对顺序。这个运算符简化了需要定义多个比较运算符&#xff08;如、!、<、<、>、>&#xff09;的类的代码&…

如何在 Windows 11/10 中恢复已删除的分区

在将重要数据存储在计算机上之前&#xff0c;许多用户会创建分区以更好地组织和管理他们的文件。此分区可以在内部硬盘驱动器或外部存储设备上创建。但是&#xff0c;有时可能会意外删除分区。如果发生这种情况&#xff0c;您可能想知道是否可以在不丢失任何信息的情况下恢复已…

elasticsearch(下载安装、基本操作、查询、聚合、SpringData-Elasticsearch)

文章目录 1. 了解搜索技术1.1. 什么是搜索1.2. 新业务需求1.3. 搜索引擎1.4. 倒排索引(Inverted index)1.5. 认识lucene1.6. 什么是全文检索 2.下载安装2.1. elastic2.2 下载2.2.1 elasticsearch2.2.2 kibana地址2.2.3 ik中文分词器地址 2.3 安装elasticsearch2.3.1 安装elasti…

移动端自动化测试工具 Appium 之持续集成

文章目录 一、背景二、前置条件三、代码部分1、pom.xml文件配置2、main入口代码 四、Jenkins 部分1、下载Jenkins2、安装插件3、job配置4、选择构建 五、工程目录六、报告示例七、总结 一、背景 持续集成是老生话谈的事情&#xff0c;用的好不好&#xff0c;看自己公司与使用场…

【3dmax笔记】022:文件合并、导入、导出

文章目录 一、合并二、导入三、导出四、注意事项一、合并 只能合并 max 文件(高版本能够合并低版本模型,低版本不能合并高版本的模型)。点击【文件】→【导入】→【合并】: 选择要合并的文件,后缀名为3dmax默认的格式,max文件。 二、导入 点击【文件】→【导入】→【导…

Python轻量级Web框架Flask(14)—— 自己做Flask项目总结

0、前言&#xff1a; 本文意在记录自己在做毕业Flask项目开发时遇到的一些问题&#xff0c;并将问题解决方案记录下来&#xff0c;可做日后查询本文也会记录自己做FLask项目时实现的一些功能&#xff0c;作为开发工作的进程记录注意&#xff1a;用Flask开发的前提是已经设计好…

202009青少年软件编程(Python)等级考试试卷(三级)

第 1 题 【单选题】 通过算式123122021120可将二进制1101 转为十进制,下列进制转换结果正确的是?( ) A :0b10转为十进制,结果是2 B :0d10转为十进制,结果是8 C :0x10转为十进制,结果是10 D :0o10转为十进制,结果是16 正确答案:A 试题解析: 第 2 题 【单选题】 语句flo…

svn如何远程访问?

svn&#xff08;Subversion&#xff09;是一种版本控制系统&#xff0c;广泛应用于软件开发领域。它能够追踪文件和目录的变化&#xff0c;记录每个版本的修改内容&#xff0c;并允许多人协同开发。svn的远程访问功能允许开发人员可以在不同的地点访问和管理代码&#xff0c;提…

ES6之正则扩展

正则表达式扩展 u修饰符&#xff08;Unicode模式&#xff09;y修饰符&#xff08;Sticky或粘连模式&#xff09;s修饰符&#xff08;dotAll模式&#xff09;Unicode属性转义正则实例的flags属性字符串方法与正则表达式的整合 javascript的常用的正则表达式 验证数字邮箱验证手机…