十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
LVM是逻辑卷管理(Logical Volume Manager)的简称,他是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,和直接使用物理存储在管理上相比,提供了更好灵活性。
创新互联建站专注于企业营销型网站、网站重做改版、冷水滩网站定制设计、自适应品牌网站建设、成都h5网站建设、商城网站开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为冷水滩等各大城市提供网站开发制作服务。
LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样能减少操作成本.
LVM和直接使用物理存储相比,有以下好处:
1. 灵活的容量.当使用逻辑卷时,文件系统能扩展到多个磁盘上,你能聚合多个磁盘或磁盘分区成单一的逻辑卷.
2.可伸缩的存储池.你能使用简单的命令来扩大或缩小逻辑卷大小,不用重新格式化或分区磁盘设备.
3.在线的数据再分配.你能在线移动数据,数据能在磁盘在线的情况下重新分配.比如,你能在线更换可热插拔的磁盘.
4. 方便的设备命名逻辑卷能按你觉得方便的方式来起所有名称.
5.磁盘条块化.你能生成一个逻辑盘,他的数据能被条块化存储在2个或更多的磁盘上.这样能明显提升数据吞吐量.
6.映像卷逻辑卷提供方便的方法来映像你的数据.
7.卷快照使用逻辑卷,你能获得设备快照用来一致性备份或测试数据更新效果而不影响真实数据.
逻辑卷管理器(英语:Logical Volume Manager,缩写为LVM),又译为逻辑卷宗管理器、逻辑扇区管理器、逻辑磁盘管理器,是Linux核心所提供的逻辑卷管理(Logical volume management)功能。它在硬盘的硬盘分区之上,又创建一个逻辑层,以方便系统管理硬盘分割系统。
最先由IBM开发,在AIX系统上实现,OS/2 操作系统与 HP-UX也支持这个功能。在1998年,Heinz Mauelshagen 根据在 HP-UX 上的逻辑卷管理器,写作出第一个 Linux 版本的逻辑卷管理器。
LVM基本术语:
我们可以通过LVM灵活便捷的管理系统中的磁盘,并且根据需求快速、无感得扩容目标磁盘,并且几乎不会影响性能。
创建lvm分区的方法其实非常的简单,主要分为以下几个步骤:
目前做LVM分区比较推荐的工具还是fdisk,不是说parted不能做,而是fdisk可能更加方便一点。流程如下:
在分区完成之后需要做的就是创建物理卷,直接将刚才创建的分区进行pvcreate:
在创建玩物理卷之后,需要对该磁盘进行虚拟卷的创建。需要注意的是一个虚拟卷可以由多个物理卷构成。例如:
该命令的意义就在于创建一个叫做nvme的虚拟卷,由 /dev/nvme0n1p1 、 /dev/nvme1n1p1 、 /dev/nvme2n1p1 三个做了pv的分区构成
到了这一步,基本上LVM的创建已经到了尾声了,最后一步就是从虚拟卷中创建一个逻辑卷。如下:
这条命令的意思为从虚拟卷nvme中创建一个2.91T的逻辑卷作为lvm分区并命名为data,如果想一次性全部用完所有的容量,也可以这样:
此时在linux的 /dev/ 文件夹下面我们可以看到有 /nvme/data 的文件结构。
在创建完lvm分区后,我们需要将分区挂在到系统中的路径中。假设需要挂载的路径是 /data 。
之后通过 blkid 命令获取这个新的lvm分区的UUID,然后更新到 /etc/fstab 中就可以了
上述的LVM实现过程可以直接通过shell脚本进行实现:
这是 Linux 中 LVM(逻辑卷管理)的完整初学者指南。
在本教程中,您将了解 LVM 的概念、它的组件以及为什么要使用它。
我不会仅限于理论上的解释,我还将展示在 Linux 中创建和管理 LVM 的动手示例。
简而言之,我将为您提供在现实世界中开始使用 LVM 所需的所有必要信息。
LVM 代表逻辑卷管理。这是管理存储系统的另一种方法,而不是传统的基于分区的方法。在 LVM 中,您无需创建分区,而是创建逻辑卷,然后您可以像挂载磁盘分区一样轻松地将这些卷挂载到文件系统中。
LVM 包含三个主要组件:
尽管该列表由三个部分组成,但其中只有两个是分区系统的直接对应部分,下表记录了这一点。
物理卷没有任何直接对应物,但我很快就会谈到这一点。
LVM 的主要优点是调整卷或卷组的大小非常容易。它抽象出了所有丑陋的部分(分区、原始磁盘),并为我们留下了一个中央存储池可供使用。
如果您曾经经历过分区大小调整的恐惧,那么您会想要使用 LVM。
这篇文章不仅仅是理论。在此过程中,我将展示实际的命令示例,学习某些东西的最佳方法是亲身实践。为此,我建议您使用虚拟机。
为了帮助你,我已经准备了一个简单的 Vagrantfile,你可以用它来用 VirtualBox 启动一个非常轻量级的虚拟机。此虚拟机具有三个额外的磁盘,您和我可以将它们用于下面的命令示例。
在文件系统的某处创建一个目录,并将以下内容保存在该文件中,名为Vagrantfile.
或者,如果您愿意,可以使用wget或curl从我的 gist 下载文件。
确保你安装了Vagrant和VirtualBox。
一旦 Vagrantfile 就位,将环境变量设置VAGRANT_EXPERIMENTAL为disks.
最后,使用以下命令启动虚拟机(确保您与 Vagrantfile 位于同一目录中):
机器运行后,您可以使用vagrant sshSSH 连接到它并运行本文中的示例命令。
完成后请记住vagrant destroy从与 Vagrantfile 相同的目录运行。
在您可以使用任何命令之前,您需要安装该lvm2软件包。这应该预装在大多数现代发行版中,尤其是基于 Ubuntu 的发行版中。但是,在继续之前,我不得不提到这一点。要安装lvm2,请查阅您的发行版的文档。
对于这个动手演练,我构建了一个具有 40G 根存储(不重要)和三个大小为 5G 的外部磁盘的虚拟机。这些磁盘的大小是任意的。
如您所见,我将使用的设备sdc是sdd和sde。
还记得我告诉过你 LVM 包含三个主要组件吗?
是时候一一见他们了。
关于 LVM,您首先需要了解的是物理卷。物理卷是用于实现抽象即逻辑卷的原材料或构建块。简单来说,物理卷是 LVM 系统的逻辑单元。
物理卷可以是任何东西,原始磁盘或磁盘分区。创建和初始化物理卷是一回事。两者都意味着您只是在为进一步的操作准备构建块(即分区、磁盘)。这将在瞬间变得更加清晰。
实用程序:pv所有管理物理卷的实用程序都以P hysical Volume的字母开头。例如pvcreate, pvchange,pvs等pvdisplay。
您可以使用原始未分区磁盘或分区本身来创建物理卷。
正如我之前提到的,我的虚拟机连接了三个外部驱动器,让我们从/dev/sdc.
我们使用pvcreate命令来创建物理卷。只需将设备名称传递给它即可。
你应该看到这样的东西:-
接下来我将/dev/sdd分成相等的部分。使用任何工具cfdisk,,,等parted,fdisk有很多工具可以完成这项工作。
您现在可以在一个步骤中从这两个分区中快速创建另外两个物理卷,同时将这两个设备传递给pvcreate。
看一看:-
您可以使用三个命令来获取可用物理卷的列表pvscan,pvs和pvdisplay。您通常不需要向这些命令传递任何内容。
pvscan:-
pvs:-
pvdisplay:-
正如您所看到的,除了列出物理卷之外,这些命令还为您提供了大量有关这些卷的其他信息。
pvremove您可以使用该命令删除物理卷。就像pvcreate,只需将设备(初始化为物理卷)传递给pvremove命令。
为了演示,我将从/dev/sdd2列表中删除。
输出应与此相同:-
现在列出物理卷sudo pvs
/dev/sdd2不再在这里。
卷组是物理卷的集合。它是 LVM 中的下一个抽象级别。卷组是结合了多个原始存储设备的存储容量的存储池。
实用程序:所有卷组实用程序名称都以 开头vg,代表卷组,例如、等。vgcreatevgsvgrename
卷组是使用该vgcreate命令创建的。的第一个参数vgcreate是您要为该卷组指定的名称,其余的是要支持存储池的物理卷的列表。
例子:-
列出卷组类似于列出物理卷,您可以使用具有不同详细级别的不同命令vgdisplay、vgscan和vgs。
我个人更喜欢vgs命令,sudo vgs
您可以使用以下命令列出连接到特定卷组的所有物理卷:-
例子:-
您还可以获得物理卷的计数。
例子:-
扩展卷组意味着向卷组添加额外的物理卷。为此,vgextend使用该命令。语法很简单:-
让我们将lvm_tutorial音量扩大/dev/sdd2.
专注于输出:-
在物理卷部分,我们最终将其/dev/sdd2作为物理卷删除,但必须将分区或原始磁盘初始化为物理卷,否则 LVM 将无法将其作为卷组的一部分进行管理。所以在将它添加到卷组之前vgextend做好准备。/dev/sdd2
现在列出附加到此卷组的物理卷,以确保安全。
输出:-
/dev/sdd2现在按预期在列表中。
就像扩展一个卷组意味着添加另一个物理卷一样,减少它意味着删除一个或多个物理卷。
我们使用vgreduce命令来执行此操作。一般语法如下:-
让我们删除物理卷/dev/sdc和/dev/sdd1.
例子:-
再次列出物理卷。
输出:-
那两个物理卷不见了。
现在,为了本文的其余部分,将这两个物理卷添加回来。
vgremove您可以使用该命令删除逻辑卷。
现在不要运行此命令,否则您必须重新创建卷组。如果您想对其进行测试,请在本文的最后运行它。
这是您将主要使用的内容。逻辑卷就像一个分区,但它不是位于原始磁盘之上,而是位于卷组之上。你可以,
在本节中,您将学习,
实用程序 :所有卷组实用程序名称都以 开头lv,代表逻辑卷。例如, ,等等, ,等等lvcreatelvslvreducevgcreatevgsvgrename
lvcreate使用该命令创建逻辑卷。常用的语法如下所示,
在虚拟机上运行以下命令:
示例输出:
正如我之前所说,您可以将文件系统放在逻辑卷上,也可以将其挂载到文件系统的任何位置。
/dev/ / 创建后,您可以在路径中找到逻辑卷。例如,在我们的例子中,音量将在 /dev/lvm_tutorial/lv1 .
现在您可以像使用任何分区一样使用它。用ext4格式化,
将它安装在当前目录结构中的某个位置,例如/mnt,
您可以使用命令扩展逻辑卷lvextend并使用命令减小其大小lvreduce。或者,您可以使用单个命令lvresize来完成这两项任务。
首先让我们看看卷组中是否还有剩余空间。
输出:-
根据输出,我还有一些空间,所以让我们将卷大小增加 2GB。
请记住,逻辑卷仍安装在/mnt.
使用以下命令调整卷大小:
一般语法是这样的:
后面的符号 + 或 --L取决于您是尝试增加音量还是分别减小音量。
卷大小增加后,文件系统也必须调整大小。对于 ext4,要使用的命令是resize2fs.
输出:
减少逻辑卷是一项稍微复杂的任务,我不会在本文中讨论这个问题。我将把这个卷的大小减少 1GB。
lvremove您可以使用该命令删除逻辑卷。命令语法如下:-
在虚拟机上运行此命令:-
输出:-
在逻辑卷、物理卷和卷组上还有许多其他操作可行,但不可能将所有这些都写到一篇文章中。
我/dev/sde在虚拟机中为您多留了一个磁盘,使用它,练习本文中的一些命令,创建一个新的卷组,扩展一个现有的卷组,只是练习。
我希望这篇文章对你有所帮助,如果你想在以后看到更多关于这方面的内容,请在下面的评论部分告诉我。
LVM(Logical Volume Manager)卷组管理器,通过对底层物理磁盘的封装,可以将多块物理磁盘组合成逻辑资源池,提供给上层应用使用(如文件系统). LVM的好处是,可以跨物理硬盘为文件系统提供容量,并且可以动态进行分区容量的调整,而不会损坏原有的文件系统.
物理磁盘 :物理存储介质,可以是整块物理存储或一个分区.
物理卷PV(physical volume) :LVM要使用物理磁盘,在物理磁盘的头部写入lvm标签头,就创建了一个PV,PV是组成VG的基本单元.
卷组VG(Volume Group) :VG相当于非LVM系统中的物理硬盘,一个卷组VG由一个或多个PV组成,形成一个存储资源池.
逻辑卷LV(logical volume) :LV相当于非LVM系统中的硬盘分区,LV建立在卷组VG之上,文件系统建立在LV之上.
物理块PE(physical Extent) :创建LV时可以分配的最小存储单元,大小可以指定,默认为4MB
如上是从物理磁盘到lvm逻辑卷的创建过程及映射关系,lv01、lv02被创建后,通过device-mapper映射为逻辑块设备(块设备路径/dev/vg01/lv01、/dev/vg01/lv02),供文件系统使用,通过mkfs.ext4 /dev/vg01/lv02可创建ext4文件系统.
元数据主要是两部分,PV header + metadata,位置一般是在PV的0~2048 sector中,从2048 sector开始是数据区域.
通过pvcreate创建pv时,会将pv header写入物理磁盘,位置一般是在磁盘的第二个sector(512B/sector),lvm扫描磁盘时,通过pv header来识别PV.
pv header主要信息包括,pv uuid、元数据位置和metadata位置.
pv header实例:
metadata记录的是vg和lv的配置信息,以ASCII码的方式写入metadata区域;vg和lv的每次配置变更,都会以追加的方式写入metadata区域,并打上时间戳,该区域写满后,新的变更记录会覆盖最早的一次记录. 进行vgscan时,猜测应该是通过读取最新一次的配置记录,进行激活.
vg配置信息,主要是包含的pv信息.
lv配置信息,主要是lv的起始位置和PE大小.
实例:
pvcreate /dev/vdb1
pvcreate /dev/vdb2
pvcreate /dev/vdb3
vgcreate /dev/vdb1 /dev/vdb2 /dev/vdb3
vgcreate wan /dev/vdb1 /dev/vdb2 /dev/vdb3
lvcreate -L 300M -n lv01 wan
将PV的前2048个sector通过dd拷贝出来,用cat查看如下.
假设我们有一块磁盘 /dev/sdb1 作为应用数据盘使用,以此为例创建lvm分区
先创建物理卷PV,命令: pvcreate /dev/sdb1
创建卷组VG,卷组命名为kylin,命令:vgcreate kylin /dev/sdb1
在VG中创建逻辑分区LV,命令:lvcreate -L 30G -n test kylin
创建逻辑分区后,进行格式化,然后便可以挂载使用.
mkfs.ext4 /dev/kylin/test
mount /dev/kylin/test /data
假设我们在上述基础上,又获得一块磁盘/dev/sdc1进行扩容,将磁盘容量增加到LV分区/dev/kylin/test中,具体操作如下.
先创建物理卷PV,命令: pvcreate /dev/sdc1
将/dev/sdc1添加进VG kylin,命令:vgextend kylin /dev/sdc1
增加LV分区容量,命令:lvextend -L +30G /dev/kylin/test
lvm卷组配置备份
lvm的配置信息默认在/etc/lvm/backup、/etc/lvm/archive/两个目录存在备份,当lvm元数据损坏,lvm卷组读取异常时,可通过备份文件进行恢复.
/etc/lvm/backup: 保留了当前配置的备份
/etc/lvm/archive/:保留了每次配置更新前的备份
实例演示
逻辑卷/dev/wan/lv01
在/dev/wan/lv01上创建文件系统
挂载并创建文件
覆盖/dev/vdb1、/dev/vdb2的lvm元数据,并重启系统,vg已不能识别
通过pvcreate命令修复pv header 和metadata数据.
激活逻辑卷
挂载/dev/wan/lv01成功,说明成功修复
在学习Linux知识的过程中,大家都会接触到很多专业术语,让人琢磨不透,完全不知道是什么意思,比如:LVM。那么Linux系统中lvm是什么?LVM中文意思为逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制,接下来我们来看看详细的内容介绍。
Linux系统中lvm是什么?
LVM,全称Logical Volume
Manager,即逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在磁盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组,形成一个存储池。管理员可以在卷组上随意创建逻辑卷组,并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
一般来说,物理磁盘或分区之间是分隔的,数据无法跨盘或分区,而各磁盘或分区的大小固定,重新调整比较麻烦。LVM可以将这些底层的物理磁盘或分区整合起来,抽象成容量资源池,以划分成逻辑卷的方式供上层使用,其最主要的功能即是可以在无需关机无需重新格式化的情况下弹性调整逻辑卷的大小。
LVM的写入模式
LVM有两种写入模式:线性模式和条带模式
线性模式即写完一个设备后再写另一个设备;
条带模式就有点类似于RAID0,即数据是被分散写入到LVM各成员设备上的。
因为条带模式的数据不具有安全性,且LVM并不强调读写性能,故LVM默认为线性模式,这样即使一个设备坏了,其它设备上的数据还在。