1 LVM介绍

  LVM即logical volume manager逻辑卷管理,其主要特点是:可以动态地扩大和缩小分区大小,但前提是分区的文件系统必须是LVM格式的,lvm的实现需要安装lvm2软件包,一般在安装centos系统都已经一起安装好.

[root@test ~]# rpm -qa lvm2
lvm2-2.02.180-8.el7.x86_64

  LVM优点是:可以实现逻辑卷的动态扩容或收缩;但缺点是:性能较差,因为是以软件方式实现的,丢失数据的风险比较大,数据丢失后恢复较为困难.

1.1 与LVM相关的及个术语

  LVM可以让磁盘分区实现扩容和缩小,但前提是,该分区必须是lvm格式的.磁盘使用MBR分区表格式,lvm的标识符是8e;使用gpt分区表格式,则其lvm标识符是8300.

  与LVM相关的几个术语,分别是:

  名称    说明
  PV (物理卷Physical Volume)

底层物理磁盘分区(分区但未格式化)的磁盘标识符必须为8e或8300,

使用pvcreate命令将其创建为PV,才可以被LVM使用.

  VG (卷组Volume Group)  使用vgcreate命令将多个PV组合创建为VG.

  PE (物理存储单元,实际数据存储

  单元Physical Extend)

 PE是VG中的物理存储单元,存储的是实际的数据.
  LV (逻辑卷Logical Volume)

LV是通过VG划分得到的其中一个分区,VG中以PE为单元,指定划分多少个

PE给LV,然后LV再进行格式化创建文件系统来使用.

  LE (逻辑存储单元Logical Extent)

LE是LV中逻辑存储单元,其大小与PE一样,从VG中划分LV,实质是将VG中的

一部分(或全部)PE分配给LV.

  LVM实现动态扩容就是往LV中添加空闲未被使用的PE;而实现动态收缩则是将LV中空闲的PE抽出(收缩有丢失数据的危险).

  LVM的实现依赖于内核中的dm(device mapper设备映射)模块,dm模块可以将一个或者多个底层的设备组织成为一个逻辑设备.

###VG及LV的路径定义(下面#代表数字)
/dev/dm-#
###有2个符号链接文件分别指向
[root@localhost ~]# ll /dev/mapper/ #<==创建了VG和LV后,此目录下有软链接
总用量 0
lrwxrwxrwx 1 root root 7 12月 15 16:58 centos-root -> ../dm-0
lrwxrwxrwx 1 root root 7 12月 15 16:58 centos-swap -> ../dm-1
###VG与LV软链接文件名称(以下2个都是软链接,VG与LV名称是创建时自定义的名称)
/dev/mapper/VG_NAME-LV_NAME
/dev/VG_NAME/LV_NAME

1.3 图解LVM的实现

1.4 LVM的数据写入机制

  因为LV是通过VG划分的,LV中的PE可能来自多个PE,在向LV存储数据时,有2种主要的存储机制,分别是:

  1) 线性模式(linear):现写完同一个PV中的PE,再写来自下一个PV中的PE,默认就是此种模式.

  2) 条带模式(striped):将数据拆分为多份,再往该LV对应的多个PV上存储,此种模式读写性能较好.但不建议使用此模式,因为扩容和收缩容量时较为麻烦.

  LVM的主要作用是实现逻辑卷的弹性扩展,不追求性能,追求性能就使用raid.

2 管理LVM的相关命令

2.1 管理LVM上的PV

  PV管理涉及到的命令:

命令 说明
pvcreate 创建pv
pvdisplay

列出pv详细信息(PV name/size及所属的VG等)

次此命令有一个重要的参数 -m ,可以查看该PV中

PE的使用分布,只有知道PE的分布,才能使用pvmove

在不同的PV之间进行PE数据的移动

pvcan 扫描并显示所有pv
pvmove 移动pv中的数据,通常用于收缩LVM磁盘
pvremove 移除pv
pvs 简要显示pv信息

2.2 管理LVM上的VG

  管理VG的相关命令有:

命令 说明
vgcreate

创建VG,其常用选项是 -s ,指定PE的大小,不

指定就默认PE的大小是 4M

vgscan 扫描并列出所有VG
vgdisplay 显示VG的详细信息
vgremove 移除/删除VG
vgreduce

从VG中移除PV(注意:先做pvmove操作,先移动

有数据的PE至其他空闲PV上的PE)

vgextend 将PV添加到VG(扩容VG)
vgchange

修改VG的属性信息(如VG的激活状态,VG的激活

状态会影响LV的使用)

2.3 管理LVM上的LV

  在VG的基础上就可以对VG进行分区,创建LV,管理LV的相关命令有:

命令 说明
lvcreate

创建LV,主要选项有:

lvcreate {-L size(M/G) | -l PEnum} -n lv_name vg_name

lvscan 扫描并列出所有的lv
lvdisplay 显示lv详细信息
lvremove 移除/删除lv
lvreduce 收缩lv容量
lvextend 扩容lv容量
lvresize 改变lv容量(lvredunce及lvextend可以使用lvresize命令统一实现)

2.4 格式化创建文件系统

  在LV基础上,就可以对LV进行格式化创建文件系统,挂载使用了.

LVM知识梳理的更多相关文章

  1. MySQL 基础知识梳理

    MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...

  2. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  3. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  4. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  5. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  6. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

  7. solr DIH 知识梳理

    solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...

  8. Anliven - 基础知识梳理汇总 - 软件测试

    基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...

  9. [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型

    引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...

随机推荐

  1. DbCommand :执行超时已过期。完成操作之前已超时或服务器未响应。

    问题:“Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应.”的解决方法 在一个链接数据库的时候,老是出现超时的错误:执行超时已过期.完成操作之前已超时或服务器未响应. 就是给这个链接 ...

  2. TCP/IP协议与HTTP协议(二)

    TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据. 1.TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过 ...

  3. Scrapy信号量

    1.类 from scrapy import signals class MySingle(object): def __init__(self): pass @classmethod def fro ...

  4. 影响K8S Pod分配和调度策略的两大关键特性

    在Kubernetes中有一个最复杂的调度器可以处理pod的分配策略.基于在pod规范中所提及的资源需求,Kubernetes调度器会自动选择最合适的节点来运行pod. 但在许多实际场景下,我们必须干 ...

  5. 代码审计之CVE-2017-6920 Drupal远程代码执行漏洞学习

     1.背景介绍: CVE-2017-6920是Drupal Core的YAML解析器处理不当所导致的一个远程代码执行漏洞,影响8.x的Drupal Core. Drupal介绍:Drupal 是一个由 ...

  6. 第二阶段冲刺个人任务——two

    今日任务: 优化作业查询结果,按学号排列. 昨日成果: 修改注册界面.

  7. Ubuntu16手动安装OpenStack——nova篇。。转

    前言: 本文转自https://www.voidking.com/dev-ubuntu16-manual-openstack-nova/ ,过程非常的详细,作者也说本实验最终失败,因为课程要求我们只要 ...

  8. Ogre源码学习-Image和Texture

    以下文字来自源码注释: Image类:保存未压缩的图片数据,是唯一一个可以加载纹理的类.Image对象调用Codec对象来为图片数据解码. 通常,当在图片被加载前需要对它进行额外的处理,或者你想把它复 ...

  9. Python脚本通过ftp协议移植文件

    需求 项目需要定时移植多个客户服务器的文件到公司服务器上,确保文件定时同步和生成监控日志 机制原理 1.客户和公司服务器同时安装vpn,绕过复杂的网关,linux下使用的OpenVPN 2.服务器定时 ...

  10. sas9.2 windows7系统 10年11月后 建立永久数据集时,提示:“用户没有与逻辑库相应的授权级别

    先把你这个逻辑库删掉,在桌面创立空的新文件夹,然后用这个新文件夹在sas里新建逻辑库,名字照旧,再把你要的数据放进空文件夹就好了