详解Linux LVM逻辑卷配置过程(创建,增加,减少,删除,卸载)

Linux LVM逻辑卷配置过程详解

许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要。

LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能基于LVM创建,必须独立出来。

一.LVM原理

要想理解好LVM的原理,我们必须首先要掌握4个基本的逻辑卷概念。

①PE  (Physical Extend)  物理拓展

②PV  (Physical Volume)  物理卷

③VG  (Volume Group)  卷组

④LV  (Logical Volume)  逻辑卷

我们知道在使用LVM对磁盘进行动态管理以后,我们是以逻辑卷的方式呈现给上层的服务的。所以我们所有的操作目的,其实就是去创建一个LV(Logical Volume),逻辑卷就是用来取代我们之前的分区,我们通过对逻辑卷进行格式化,然后进行挂载操作就可以使用了。那么LVM的工作原理是什么呢?所谓无图无真相,咱们下面通过图来对逻辑卷的原理进行解释!!

1.将我们的物理硬盘格式化成PV(Physical Volume)

我们看到,这里有两块硬盘,一块是sda,另一块是sdb,在LVM磁盘管理里,我首先要将这两块硬盘格式化为我们的PV(Physical Volume),也就是我们的物理卷,其实格式化物理卷的过程中LVM是将底层的硬盘划分为了一个一个的PE(Physical Extend),我们的LVM磁盘管理中PE的默认大小是4M大小,其实PE就是我们逻辑卷管理的最基本单位。比如说我有一个400M的硬盘,那么在将其格式化成PV的时候,其实际就是将这块物理硬盘划分成了100个的PE,因为PE默认的大小就是4M。这个就是我们的第一步操作。

2.创建一个VG(Volume Group)

在将硬盘格式化成PV以后,我们第二步操作就是创建一个卷组,也就是VG(Volume Group),卷组在这里我们可以将其抽象化成一个空间池,VG的作用就是用来装PE的,我们可以把一个或者多个PV加到VG当中,因为在第一步操作时就已经将该硬盘划分成了多个PE,所以将多个PV加到VG里面后,VG里面就存放了许许多多来自不同PV中的PE,我们通过上面的图片就可以看到,我们格式化了两块硬盘,每个硬盘分别格式化成了3个PE,然后将两块硬盘的PE都加到了我们的VG当中,那么我们的VG当中就包含了6个PE,这6个PE就是两个硬盘的PE之和。通常创建一个卷组的时候我们会为其取一个名字,也就是该VG的名字。

3.基于VG创建我们最后要使用的LV(Logical Volume)

【注意】PV以及VG创建好以后我们是不能够直接使用的,因为PV、VG是我们逻辑卷底层的东西,我们其实最后使用的是在VG基础上创建的LV(Logical Volume),所以第三步操作就是基于VG来创建我们最终要使用的LV。

当我们创建好我们的VG以后,这个时候我们创建LV其实就是从VG中拿出我们指定数量的PE,还是拿上图来说,我们看到我们此时的VG里面已经拥有了6个PE,这时候我们创建了我们的第一个逻辑卷,它的大小是4个PE的大小,也就是16M(因为一个PE的默认大小是4M),而这4个PE有三个是来自于第一块硬盘,而另外一个PE则是来自第二块硬盘。当我们创建第二个逻辑卷时,它的大小就最多只有两个PE的大小了,因为其中的4个PE已经分配给了我们的第一个逻辑卷。

所以创建逻辑卷其实就是我们从VG中拿出我们指定数量的PE,VG中的PE可以来自不同的PV,我们可以创建的逻辑卷的大小取决于VG当中PE存在的数量,并且我们创建的逻辑卷其大小一定是PE的整数倍(即逻辑卷的大小一定要是4M的整数倍)。

4.将我们创建好的LV进行文件系统的格式化,然后挂载使用

在创建好LV以后,这个时候我们就能够对其进行文件系统的格式化了,我们最终使用的就是我们刚创建好的LV,其就相当于传统的文件管理的分区,我们首先要对其进行文件系统的格式化操作,然后通过mount命令对其进行挂载,这个时候我们就能够像使用平常的分区一样来使用我们的逻辑卷了。

我们在创建好LV以后,我们会在 /dev 目录下看到我们的LV信息,例如/dev/vgname/lvname, 我们每创建一个VG,其会在/dev目录下创建一个以该VG名字命名的文件夹,在该VG的基础上创建好LV以后,我们会在这个VG目录下多出一个以LV名字命名的逻辑卷。

下面我们来对整个LVM的工作原理进行一个总结:

(1)物理磁盘被格式化为PV,空间被划分为一个个的PE

(2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内

(3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘

(4)LV直接可以格式化后挂载使用

(5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

我们看到,我们这里如果要对LV进行扩充,直接加进来一块sdc硬盘,然后将其格式化成PE,然后将该PV加入到了VG当中,这个时候我们就可以通过增加LV中PE的数量来动态的对LV进行扩充了,只要我们的LV的大小不要超过我们VG空余空间的大小就行!

二、创建LVM逻辑卷

熟悉了LVM的工作原理,首先是要将我们的物理硬盘格式化成PV,然后将多个PV加入到创建好的VG中,最后通过VG创建我们的LV。

三、拉伸一个逻辑卷

我们知道相比于传统磁盘管理方式的各种问题,使用LVM逻辑卷来管理我们的磁盘,我们可以对其进行动态的管理。在传统的磁盘管理方式中,我们如果出现分区大小不足的情况下,我们此时只能通过加入一块物理硬盘,然后对其进行分区,因为加入的硬盘作为独立的文件系统存在,所以对原有分区并没有影响,如果此时我们需要扩大分区,就只能先将之前的分区先卸载掉,然后将所有的信息转移到新的分区下,最后再将新的分区挂载上去,如果是在生产环境下,这样是不可想象的,正因为如此,我们才出现了LVM的磁盘管理方式,可以动态的对我们的磁盘进行管理。

我们首先来看下动态拉伸一个逻辑卷的示意图:

我们从上图可以看到,我们在对逻辑卷进行拉伸时,其实际就是向逻辑卷中增加PE的数量,而PE的数量是由VG中剩余PE的数量所决定的。

【注意:】逻辑卷的拉伸操作可以在线进行,不需要卸载掉我们的逻辑卷

这样的好处就是当我们的逻辑卷的大小不够用时,我们不需要对其进行卸载,就可以动态的增加我们的逻辑卷的大小,并不会对我们的系统产生任何影响。例如如果我们的服务器上运行着一个重要的服务或者数据库,并要求我们7*24小时不间断保持在线,那么这样的动态增加逻辑卷的大小就非常的有必要了。

接下来我们来看看拉伸逻辑卷的步骤:

因为我们的逻辑卷的拉伸操作是可以在线进行的,所以这里我们先将逻辑卷挂载上,并在使用情况下动态的拉伸我们的逻辑卷

四.实验环境:

首先从空的硬盘sdb上创建两个分区sdb1 1G,sdb2 2G. 为接下来做LVM做准备.

为了后期便于维护管理,记得给分区加上标示,这样即使你不在的情况下,别人看到标示了就不会轻易动这块区域了. LVM的标识是8e,设置完成后记得按w保存

1、创建逻辑卷

将新创建的两个分区/dev/sdb1 /dev/sdb2转化成物理卷,主要是添加LVM属性信息并划分PE存储单元.

创建卷组 vgdata ,并将刚才创建好的两个物理卷加入该卷组.可以看出默认PE大小为4MB,PE是卷组的最小存储单元.可以通过 –s参数修改大小。

从物理卷vgdata上面分割500M给新的逻辑卷lvdata1.

使用mkfs.ext4命令在逻辑卷lvdata1上创建ext4文件系统.

将创建好的文件系统/data1挂载到/data1上.(创建好之后,会在/dev/mapper/生成一个软连接名字为”卷组-逻辑卷”)

便于以后服务器重启自动挂载,需要将创建好的文件系统挂载信息添加到/etc/fstab里面.UUID可以通过 blkid命令查询.

为了查看/etc/fstab是否设置正确,可以先卸载逻辑卷data1,然后使用mount –a 使内核重新读取/etc/fstab,看是否能够自动挂载.

2、逻辑卷lvdata1不够用了,如何扩展。

给逻辑卷增加空间并不会影响以前空间的使用,所以无需卸载文件系统,直接通过命令lvextend –L +500M /dev/vgdata/lvdata1或者lvextend –l 2.5G /dev/vgdata/lvdata1 给lvdata1增加500M空间(lvdata1目前是2G空间)设置完成之后,记得使用resize2fs命令来同步文件系统。

3、当卷组不够用的情况下,如何扩大卷组

重新从第二块硬盘上创建一个分区sdb3,具体操作步骤省略。并将创建好的分区加入到已经存在的卷组vgdata中。通过pvs命令查看是否成功。

4、当硬盘空间不够用的情况下,如果减少逻辑卷的空间释放给其他逻辑卷使用。

减少逻辑卷空间,步骤如下

1、 先卸载逻辑卷data1

2、 然后通过e2fsck命令检测逻辑卷上空余的空间。

3、 使用resize2fs将文件系统减少到700M。

4、 再使用lvreduce命令将逻辑卷减少到700M。

注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,哪数据就出问题了。

完成之后,就可以通过mount命令挂载重新使用了。

5、如果某一块磁盘或者分区故障了如何将数据快速转移到相同的卷组其他的空间去。

1、通过pvmove命令转移空间数据

2、通过vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去。

3、通过pvremove命令将即将坏的磁盘或者分区从系统中删除掉。

4、手工拆除硬盘或者通过一些工具修复分区。

6、删除整个逻辑卷

1、先通过umount命令卸载掉逻辑卷lvdata1

2、修改/etc/fstab里面逻辑卷的挂载信息,否则系统有可能启动不起来。

3、通过lvremove 删除逻辑卷lvdata1

4、通过vgremove 删除卷组vgdata

5、通过pvremove 将物理卷转化成普通分区。

删除完了,别忘了修改分区的id标识。修改成普通Linux分区即可。

总结:LVM逻辑卷是Linux里面一个很棒的空间使用机制,因为分区在没有格式化的情况下是没有办法加大或者放小的。通过LVM可以将你的磁盘空间做到灵活自如。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Linux中对lvm逻辑卷分区大小的调整教程(针对xfs与ext4不同文件系统)

    前言 当我们在安装系统的时候,由于没有合理分配分区空间,在后续维护过程中,发现有些分区空间不够使用,而有的分区空间却有很多剩余空间.如果这些分区在装系统的时候使用了lvm(前提是这些分区要是lvm逻辑卷分区),那么就可以轻松进行扩容或缩容!不同文件系统类型所对应的创建.检查.调整命令不同,下面就针对xfs和ext2/3/4文件系统的lvm分区空间的扩容和缩容的操作做一记录: -------------------------------------------------------------

  • 详解Linux LVM逻辑卷配置过程(创建,增加,减少,删除,卸载)

    Linux LVM逻辑卷配置过程详解 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要. LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上.文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性.RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能基于LVM创建,必须独立出

  • 详解VSCode下C++环境配置过程

    安装软件以及插件不赘述.需要的朋友可以参考下面这个链接! https://www.jb51.net/article/185987.htm 下面记录一下C++环境配置文件的配置. 在代码的目录下的.vscode文件夹下创建launch.json.tasks.json launch.json { // 使用 IntelliSense 了解相关属性. // 悬停以查看现有属性的描述. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830

  • 详解用Spring Boot零配置快速创建web项目

    一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. 本文是一个springboot入门级的helloworld程序. 二.maven安装与配置 下载地址:http://maven.apache

  • 详解mysql8.018在linux上安装与配置过程

    windows下安装介绍:去看看–>mysql8.018在windows下安装介绍 Linux平台: 以下操作以mysql 8.0.18,系统为Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-142-generic x86_64)为例: A. 自动安装 sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install libmysqlclient-dev B.

  • 详解Linux 主机网络接入配置

    详解Linux 主机网络接入配置 前言: 网络配置是我们在安装好操作系统之后,需要解决的第一步.现时代没有接入网络的主机已然等同于一堆废铁.在网络配置的过程中,通常我们需要配置本机IP地址,缺省网关,DNS,主机名等等.本文主要描述在Linux环境下,主要以传统命令行方式讲解如何将主机接入网络.对于网路配置的新命令如ip,nmcli等等在以后的文章中描述. 一.网络配置概述 主机接入互联网前提:遵循TCP/IP协议栈 配置主机接入TCP/IP网络需要配置的内容:   IP/Netmask   路

  • 详解Linux下的sudo及其配置文件/etc/sudoers的详细配置

    详解Linux下的sudo及其配置文件/etc/sudoers的详细配置 1.sudo介绍 sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等.这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性.Sudo不是对shell的一个代替,它是面向每个命令的. 它的特性主要有这样几点: § sudo能够限制用户只在某台主机上运行某些命令. § sudo提供了丰富的日志,详细地记录了每个用

  • 详解Linux中查看jdk安装目录、Linux卸载jdk、rpm命令、rm命令参数

    一.查看jdk安装目录 [root@node001 ~]# whereis java java: /usr/bin/java /usr/local/java #java执行路径 [root@node001 ~]# which java /usr/bin/java #查看JDK安装路径 [root@node001 ~]# echo $JAVA_HOME /usr/local/java/jdk1.7.0_80 [root@node001 ~]# echo $PATH /usr/local/sbin:

  • 详解linux SSH登录流程

    本文给大家详细介绍了ssh 密钥登录远程服务器流程和注意事项,以下是详细内容: 密钥登录比密码登录安全,主要是因为他使用了非对称加密,登录过程中需要用到密钥对.整个登录流程如下: 远程服务器持有公钥,当有用户进行登录,服务器就会随机生成一串字符串,然后发送给正在进行登录的用户. 用户收到远程服务器发来的字符串,使用与远程服务器公钥配对的私钥对字符串进行加密,再发送给远程服务器. 服务器使用公钥对用户发来的加密字符串进行解密,得到的解密字符串如果与第一步中发送给客户端的随机字符串一样,那么判断为登

  • 详解linux驱动编写(入门)

    在我离职之前,工作内容几乎不涉及到驱动方面的知识.我所要做的内容就是把客户对设备的请求拆分成一个一个的接口,调用驱动的设置进行配置就可以了.当然,至于驱动下面是怎么实现那就要根据具体情况而定了.比如说,有的驱动是芯片厂商直接写好的,假设芯片厂商提供了对应平台的sdk函数,那么驱动的工作就是对这些sdk函数进行封装就可以了,另外一种就是自己编写具体平台的驱动接口了.比如说,现在你需要编写串口.i2c.i2s.FLASH.网卡.LCD.触摸屏.USB驱动了.这个时候,你手里面除了一堆芯片手册,啥也没

随机推荐