LVM知识梳理
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知识梳理的更多相关文章
- MySQL 基础知识梳理
MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- solr DIH 知识梳理
solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...
- Anliven - 基础知识梳理汇总 - 软件测试
基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...
- [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型
引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...
随机推荐
- Redis高可用方案-哨兵与集群
Redis高可用方案 一.名词解释 二.主从复制 Redis主从复制模式可以将主节点的数据同步给从节点,从而保障当主节点不可达的情况下,从节点可以作为 后备顶上来,并且可以保障数据尽量不丢失(主从 ...
- 三分钟带你入门GitHub
一,首先,我们来说一下什么是GitHub GitHub是一个基于git打造的开源社区 ,同时也是一个大型同性交友平台 ,作为一个专业的程序员,你非常有必要知道并使用GitHub:作为一个国际化社区,所 ...
- .NET编程周记第3期-2020年1月19日
整理了2020年1月19日这周阅读的几篇有趣的和.NET开发相关的文章.在这里和大家分享. 0x00 Introducing Nullable Reference Types in C# 如标题所示, ...
- Nginx配置文件模板
主配置文件nginx.conf user nginx; #设置nginx服务的系统使用用户 worker_processes 1; #工作进程数(和cpu核心数保持一致) error_log /var ...
- 新上手jupyterlab安装及问题解决
最近jupyter notebook又出了一个新玩法:jupyterlab但是很多小伙伴和我一样,在安装的时候出现了很多问题,于是乎我总结了一下,希望给大家带来帮助 首先,最好保持你的浏览器是最新的版 ...
- (分块)GukiZ and GukiZiana CodeForces - 551E
题意: 给你一段序列,并且有两种操作 操作①:将序列中从l-r每个元素加上x 操作②:在序列中找到ai=aj=y,j-i的最大值,如果找不到则输出-1 思路: 直接分块暴力即可 对于区间加,普通标记加 ...
- Sublime Text 3 部分安装过程记录
概览: Sublime Text 3下载网址 Package Control的安装 Install Package报错(There are no packages availabel for inst ...
- robotframework,移动端(小程序)自动化,通过屏幕坐标点击对应按钮的方法
使用场景: 下图通过常规方法是定位不到“红色”这个按钮的 我们把鼠标放置上去,下图右侧会显示该点的坐标地址 然后使用click a point指令定位 click a point 64 743 dur ...
- Miniio对象储存服务器安装教程
#创建minio专用文件目录 mkdir -p /app/minio/data mkdir -p /app/minio/config chmod -R 777 /app/minio/data chmo ...
- 宝塔面板管理阿里云服务器FTP不能用
# 宝塔面板管理阿里云,ftp不能用 解决方法 搜ftp点击设置 然后Ctrl+F搜索ForcePassiveIP 注意2在默认情况下是带#号的,去掉#号,后面的ip地址是阿里云的公网ip 重启,再次 ...