LVM详解

petmaster出品 必是精品

一、概述

LVM全称为Logical Volume Manager,即逻辑卷管理器。LVM可以弹性的调整文件系统的容量,可以将多个物理分区整合在一起,并且根据需要划分空间或动态的修改文件系统空间。

LVM有两个版本: lvm,lvm2

二、LVM的相关概念

1、物理卷(PV)

物理卷是LVM的最底层的元素,组成LVM的物理分区就是PV。

2、卷组(VG)

将各个独立的PV组合起来,所形成的一个存储空间称为VG;VG的大小就是整个LVM的空间大小。

3、逻辑卷(LV)

最终可以被用户格式化、挂载、存储数据的操作对象就是LV;LV与分区相类似,只不过LV可以理加灵活的调整容量。

4、物理扩展块(PE)

PE类似与分区中block的概念,也就是LVM的最小存储单位,默认大小为4M;可以通过调整PE块的数量来定义LV的容量。

5、快照(snapshot)

快照用于保存原卷上有变化的数据。快照刚刚被创建时其内容与原卷是一模一样的,只有在原卷中的数据发生变化时,快照才会将被改动的数据的原数据保存起来。

三、LVM实际操作

1、创建PV

首先创建分区,分区的类型要更改为8e。

上图中将4个分区创建为4个PV;可以使用以下命令来进行PV的查看:

2、创建VG

上图中使用了两个PV来创建了一个VG,其中"testvg"为VG的名称;下面来查看一下VG的详细信息

在创建VG时,也可以指定PE的大小,如下图所示:

3、创建LV

查看可用VG信息:

由上图可以看出,刚刚创建了个两个VG,容量分别为5G和2G,下面我们就在两个VG上分别创建lv;

参数说明:

-L:指定逻辑卷的容量;

-n:指定逻辑卷的名称;

-l:指定逻辑卷占用的PE数量;

创建一个LV,使用PE的数量定义LV的容量:

由于在创建VG时定义了每个PE的容量为16M,所以创建的LV的容量为16M*40=640M。

4、挂载LV

在对LV进行格式化、挂载之前先说明一下lv的访问路径问题。

可以使用两种路径来访问lv:

a、/dev/VG_NAME/LV_NAME

如:/dev/testvg/tlv

b、/dev/mapper/VG_NAME-LV_NAME

如:/dev/mapper/testvg_tlv

以上两路径均为符号链接,指向的文件为/dev/dm-#,如下图所示:

5、扩展逻辑卷

步骤:

1)先确定扩展的目标大小,并确保对应的卷组中有足够的空间;

2)扩展物理边界,使用lvextend命令;

3)扩展逻辑边界,使用resize2fs命令。

演示:

将逻辑卷tlv扩展到1G:

参数说明:

-L [+] #:指定扩展的容量;如果带+号,表示扩展的容量是在原来的基础上加上#的容量;不带+号,表示扩展容量到#。

-l [+] #:指定扩展的容量;如果带+号,表示扩展的容量是在原来的基础上加上#个PE的容量;不带+号,表示扩展到#个PE的容量。

扩展文件系统的容量到1G:

上面的实例中是在VG中还有剩余空间的情况进行的LV扩展,那么如果VG空间已经全部用完,这时再想增加扩展逻辑卷应该将新的PV加入到VG中以获得更多的空间。

上图中如果testvg已经没有剩余空间了,这时可以使用vgextend命令来扩展VG。

这样就可以对LV进行扩展了。

6、缩减逻辑卷:

步骤:

1)先确定缩减后的目标大小,并确保目标逻辑卷中有足够的空间可用;

2)卸载逻辑卷,并要执行强制检测,使用e2fsck -f命令;

3)缩减逻辑边界,使用resize2fs命令;

4)缩减物理边界,使用lvreduce命令。

演示:

将逻辑卷tlv空间缩减到1G。

注意:在扩展、缩减逻辑卷时除了使用上面用到的lvextend和lvreduce外,还可以使用lvresize命令,这几个命令的用法类似,就不再进行演示了,更多的使用方法可自行查看man手册。

7、卷的移除

1)移除逻辑卷

2)移除卷组

3)移除物理卷

上面的实例中我们将拥有3个PV的VG整个移除,如果我们只想移除VG中的个别PV可以进行如下操作:

再来看一种情况,如下图,卷组test1vg中拥有一个逻辑卷t1lv,现在要求在不对t1lv进行任何操作的情况下移动物理卷/dev/sdd1。

我们先来直接移除/dev/sdd1:

结果提示此PV正在使用,来看一下PV的信息:

由于/dev/sdd1有被占用的PE,如果想要移除此PV,需要先将PE块的移动到其它的PV上:

再来移除/dev/sdd1:

命令总结:

PV:

pvcreate,pvs,pvdisplay,pvremove,pvmove,pvscan

VG:

vgcreate,vgs,vgdisplay,vgremove,vgscan,vgextend,vgreduce

LG:

lvcreate,lvs,lvdisplay,lvremove,lvextend,lvreduce,lvresize,lvscan

LVM的命令比较简单,具体的参数也就没有做太多的说明。

四、创建快照卷

创建快照与创建逻辑卷类似,使用-s选项,后面指明是对哪个逻辑卷操作即可。

结果中两个卷是一模一样的,再看一下快照卷的使用情况:

下面对原卷进行一些操作:

快照卷已经自动将原卷中改动的数据备份了,如需恢复只需将快照卷的内容复制也来即可。

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2015-04-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python3

tkinter打包成exe程序

python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速

32220
来自专栏阿杜的世界

【译】Linux概念架构的理解摘要一、Linux内核在整个计算机系统中的位置二、内核的作用三、Linux内核的整体架构四、高度模块化设计的系统,利于分工合作。五、系统中的数据结构六、子系统架构七、结论

声明:本文翻译自Conceptual Architecture of the Linux Kernel

12640
来自专栏Python研发

五分钟学会centos配置gitlab

修改gitlab配置文件,访问IP:端口,   如果不修改默认80端口,进入文件之后,找到

14530
来自专栏吴柯的运维笔记

Nginx服务器常见问题如何优化?

Nginx常见问题处理 -要求- 对Nginx服务器进行适当优化,以提升服务器的处理性能: 1.不显示Nginx软件版本号 2.如果客户端访问服务器提示“T...

39660
来自专栏美团技术团队

【美团技术团队博客】Linux资源管理之cgroups简介

引子 cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,可以对 cpu,内存等资源实现精细化的控制,目前越来越火的轻量级...

47360
来自专栏Python中文社区

Nginx+uwsgi部署Django应用

本文目的:在centos7.x服务器上利用nginx和uwsgi部署Django应用

38140
来自专栏Thinks

带你零基础入门express

作为一篇新手入门,这篇文章没有太多的技巧和花式,只是从零开始带你学习和掌握express的开发应用,比较适合于完全没有使用过express的新手,以及其他非前端...

2.4K570
来自专栏北京马哥教育

6 个 Linux 运维典型问题,大牛的分析解决思路在这里

292110
来自专栏行者常至

(Java)请求方式之GET、POST 浅析

·不同的请求方式不仅仅在数据传输时会有所不同,在表单提交及服务器端处理时也会采用不同的方式。而区分不同种类的请求方式也会使得浏览器采用不同的缓存方式处理后续请求...

15520
来自专栏云计算教程系列

如何在CentOS 7上安装和配置scponly

scponly是匿名FTP的安全替代品。它使管理员能够设置具有受限远程文件访问权限且无法访问交互式shell的安全用户帐户。

18000

扫码关注云+社区

领取腾讯云代金券