LVM原理及实现过程
这里引用鸟哥说明
LVM 的重点在於『可以弹性的调整 filesystem 的容量!』而并非在於效能与数据保全上面。 需要文件的读写效能或者是数据的可靠性,请参考前面的 RAID 小节。 LVM 可以整合多个实体 partition 在一起, 让这些 partitions 看起来就像是一个磁碟一样!而且,还可以在未来新增或移除其他的实体 partition 到这个 LVM 管理的磁碟当中。 如此一来,整个磁碟空间的使用上,实在是相当的具有弹性啊! 既然 LVM 这么好用,那就让我们来瞧瞧这玩意吧!
什么是 LVM: PV, PE, VG, LV 的意义
LVM 的全名是 Logical Volume Manager,中文可以翻译作逻辑卷轴管理员。之所以称为『卷轴』可能是因为可以将 filesystem 像卷轴一样伸长或缩短之故吧!LVM 的作法是将几个实体的 partitions (或 disk) 透过软件组合成为一块看起来是独立的大磁碟 (VG) ,然后将这块大磁碟再经过分割成为可使用分割槽 (LV), 最终就能够挂载使用了。但是为什么这样的系统可以进行 filesystem 的扩充或缩小呢?其实与一个称为 PE 的项目有关! 底下我们就得要针对这几个项目来好好聊聊!
Physical Volume, PV, 实体卷轴
我们实际的 partition 需要调整系统识别码 (system ID) 成为 8e (LVM 的识别码),然后再经过 pvcreate 的命令将他转成 LVM 最底层的实体卷轴 (PV) ,之后才能够将这些 PV 加以利用! 调整 system ID 的方是就是透过 fdisk 啦!
Volume Group, VG, 卷轴群组
所谓的 LVM 大磁碟就是将许多 PV 整合成这个 VG 的东西就是啦!所以 VG 就是 LVM 组合起来的大磁碟!这么想就好了。 那么这个大磁碟最大可以到多少容量呢?这与底下要说明的 PE 有关喔~因为每个 VG 最多仅能包含 65534 个 PE 而已。 如果使用 LVM 默认的参数,则一个 VG 最大可达 256GB 的容量啊!(参考底下的 PE 说明)
Physical Extend, PE, 实体延伸区块
LVM 默认使用 4MB 的 PE 区块,而 LVM 的 VG 最多仅能含有 65534 个 PE ,因此默认的 LVM VG 会有 4M*65534/(1024M/G)=256G。 这个 PE 很有趣喔!他是整个 LVM 最小的储存区块,也就是说,其实我们的文件数据都是藉由写入 PE 来处理的。 简单的说,这个 PE 就有点像文件系统里面的 block 大小啦。 这样说应该就比较好理解了吧?所以调整 PE 会影响到 VG 的最大容量喔!
- Logical Volume, LV, 逻辑卷轴
最终的 VG 还会被切成 LV,这个 LV 就是最后可以被格式化使用的类似分割槽的咚咚了!那么 LV 是否可以随意指定大小呢? 当然不可以!既然 PE 是整个 LVM 的最小储存单位,那么 LV 的大小就与在此 LV 内的 PE 总数有关。 为了方便使用者利用 LVM 来管理其系统,因此 LV 的装置档名通常指定为『 /dev/vgname/lvname 』的样式!
此外,我们刚刚有谈到 LVM 可弹性的变更 filesystem 的容量,那是如何办到的?其实他就是透过『交换 PE 』来进行数据转换, 将原本 LV 内的 PE 移转到其他装置中以降低 LV 容量,或将其他装置的 PE 加到此 LV 中以加大容量! VG、LV 与 PE 的关系有点像下图:
图 3.1.1、PE 与 VG 的相关性图示
如上图所示,VG 内的 PE 会分给虚线部分的 LV,如果未来这个 VG 要扩充的话,加上其他的 PV 即可。 而最重要的 LV 如果要扩充的话,也是透过加入 VG 内没有使用到的 PE 来扩充的!
- 实作流程
透过 PV, VG, LV 的规划之后,再利用 mkfs 就可以将你的 LV 格式化成为可以利用的文件系统了!而且这个文件系统的容量在未来还能够进行扩充或减少, 而且里面的数据还不会被影响!实在是很『福气啦!』那实作方面要如何进行呢?很简单呢! 整个流程由基础到最终的结果可以这样看:
图 3.1.2、 LVM 各组件的实现流程图示
如此一来,我们就可以利用 LV 这个玩意儿来进行系统的挂载了。不过,你应该要觉得奇怪的是, 那么我的数据写入这个 LV 时,到底他是怎么写入硬盘当中的? 呵呵!好问题~其实,依据写入机制的不同,而有两种方式:
- 线性模式 (linear):假如我将 /dev/hda1, /dev/hdb1 这两个 partition 加入到 VG 当中,并且整个 VG 只有一个 LV 时,那么所谓的线性模式就是:当 /dev/hda1 的容量用完之后,/dev/hdb1 的硬盘才会被使用到, 这也是我们所建议的模式。
- 交错模式 (triped):那什么是交错模式?很简单啊,就是我将一笔数据拆成两部分,分别写入 /dev/hda1 与 /dev/hdb1 的意思,感觉上有点像 RAID 0 啦!如此一来,一份数据用两颗硬盘来写入,理论上,读写的效能会比较好。
基本上,LVM 最主要的用处是在实现一个可以弹性调整容量的文件系统上, 而不是在创建一个效能为主的磁碟上
目前使用的lvm版本为2比lvm1增加了在线修改容量
lvm2(rhel4以后)
实现逻辑过程
线性模式(linear):
假如将 /dev/sdb1、/dev/sdb2 这两个分区加入到 VG 中,并且 VG 只有一个 LV。那么,线性模式就是,当 /dev/sdb1 的容量用完之后,/dev/sdb2 的硬盘才会使用。
交错模式(triped):
交错的意思是将一份数据拆成两部分,分别写入 /dev/sdb1 和 /dev/sdb2 。如此一来,一份数据写入两个磁盘。理论上,读写性能会较好。
通常,LVM 最主要的用处就是产生一个大磁盘,而不是在建立性能好的磁盘。所以,我们使用的是 LVM 可以管理整个分区大小的灵活性,而不是着眼在性能上。
因此,LVM 默认的读写模式是线性模式。
如果使用交错模式,要注意,当任何一个分区“归天”时,所有的数据都会“损坏”。所以,不是很合适使用这种模式。
如果要强调性能与备份,那么就直接使用 RAID 即可,不需要使用 LVM。
fdisk -l看到的sectors和cylinders也是逻辑的值,在LBA模式下,设置的柱面、磁头、扇区等参数并不是实际硬盘的物理参数
硬盘容量=磁头数×柱面数×扇区数×512字节






一、 LVM测试过程
1.将新增加硬盘划分4个分区,每个分区1G


这里我选择的是扩展分区

这里我用的扩展分区,可以看到是4之前是为主分区固定的
这里需要将分区类型转换成8E,其他分区按照以下同样分

注意保存不然白做了,

查看分区表设定

将物理卷转换为lvm卷

pvscan

pvdisplay可以看到的uuid

关于PV命令
pvcreate:将物理分区制作成 物理卷 PV
pvscan:搜索当前系统里所有的具有 PV 属性的磁盘
pvdisplay:显示当前系统上的 PV 状态
pvremove:将 PV 属性删除,让其不具有 PV 属性,成为一般的分区
创建卷组 VG

显示当前系统里指定的 VG 或所有 VG 的信息

搜索当前系统里有多少个卷组 VG 存在

也可以查看特定的VG 
将某一个特定的物理卷加入到VG里面,刚刚没有划分的1个G加入到里面
之前我已经fdisk分区好了


可以看到已经加入到VG里面了
如果需要移除可以直接pvremove删除物理分区如 pvremove /dev/sdb9
关于VG下命令
vgcreate:建立 VG 。它的参数比较多,一会儿详细介绍
vgscan:搜索当前系统里有多少个卷组 VG 存在
vgdisplay:显示当前系统里指定的 VG 或所有 VG 的信息
vgextend:在卷组 VG 中增加额外的物理卷 PV
vgreduce:在卷组 VG 中删除 物理卷 PV
vgchange:设置 VG 是否启动(active)
vgremove:删除一个卷组 VG 本身
如果需要删除VG直接vgremove
创建LV分区

查询

格式化LV分区

分区挂载

扩展lv分区,可以在线扩展,不需要umount分区

减少分区大小,要注意一定卸载分区

检查分区文件系统正确性

这里大小很重要,不然会造成分区错误


挂载后查看

自动挂载分区

lvm 命令
pvcreate:将物理分区制作成 物理卷 PV
pvscan:搜索当前系统里所有的具有 PV 属性的磁盘
pvdisplay:显示当前系统上的 PV 状态
pvremove:将 PV 属性删除,让其不具有 PV 属性,成为一般的分区
lvcreate:用来建立 LV
lvscan:查询系统上的 LV
lvdisplay:显示系统上的 LV 状态
lvextend:在 LV 里增加容量
lvreduce:在 LV 里减少容量
lvremove:删除一个 LV 本身
lvresize:对 LV 进行容量大小的调整
LVM快照功能


备注:和创建逻辑卷差不多,只是加了参数 -s,快照会占用一定的空间
移除快照

快照也可以挂载跟普通分区挂载一样的
LVM分区迁移,当硬盘出现问题,可以实现迁移
首先在对应分区创建文件

添加一块硬盘,并转换为lvm卷


将新建的pv卷加入到vgtest01中

我们用lvdisplay -m查看lv对应的物理分区


我们迁移物理/dev/sdb5的数据

查询已经迁移过来了

lvm整个硬盘迁移
注意之前将所有挂载目录挂载掉
vgchange -a n vgtest01
使用vgchange 将卷组修改为非有效(inactive)
vgexport vgtest01
将硬盘安装到目标计算机
pvscan 扫描所有的pv
vgimport vgtest01 导入vg
vgchange -a y vgtest01 #将卷组修改为有效(active)配置
mount 挂载
df -h检验是否正常
LVM原理及实现过程的更多相关文章
- LVM原理与实现
一.什么是LVM 不管是使用传统的MBR分区方式或者是GPT的分区方式,在最后数据量逐渐变大的过程中都会出现空间不足的情况,但是若是使用将此分区的数据全部迁移至一个更大空间的磁盘上的迁移时间也是不可想 ...
- Linux LVM逻辑卷配置过程详解(创建,增加,减少,删除,卸载)
Linux LVM逻辑卷配置过程详解 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据, ...
- DNS原理及其解析过程 精彩剖析
本文章转自下面:http://369369.blog.51cto.com/319630/812889 DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址 ...
- DNS原理及其解析过程【精彩剖析】(转)
2012-03-21 17:23:10 标签:dig wireshark bind nslookup dns 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否 ...
- Mysql中主从复制的原理、配置过程以及实际案例
Mysql中主从复制的原理.配置过程以及实际案例1.什么是主从复制?原理:主从分离,什么意思呢?我们不妨画个图看看.如图1所示: 2.准备工作:预备两台服务器,我这里使用虚拟机安装了两个Centos6 ...
- 独家分析:安卓“Janus”漏洞的产生原理及利用过程
近日,Google在12月发布的安卓系统安全公告中披露了一个名为"Janus"安卓漏洞(漏洞编号:CVE-2017-13156).该漏洞可以让攻击者绕过安卓系统的signature ...
- (转)DNS原理及其解析过程
DNS原理及其解析过程原文:http://blog.51cto.com/369369/812889 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能 ...
- 转 DNS原理及其解析过程【精彩剖析】
DNS原理及其解析过程[精彩剖析] http://369369.blog.51cto.com/319630/812889/ DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于T ...
- DNS原理及其解析过程【精彩剖析】
DNS原理及其解析过程[精彩剖析] 2012-03-21 17:23:10 标签:dig wireshark bind nslookup dns 原创作品,允许转载,转载时请务必以超链接形式标明文章 ...
随机推荐
- iOS iPad开发之UIPopoverController的使用
1. 什么是UIPopoverController? 是iPad开发中常见的一种控制器(在iphone上不允许使用) 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewCon ...
- Linux 编译 websocket++
下载boost 库wget -O boost_last.zip http://downloads.sourceforge.net/project/boost/boost/1.58.0/boost_1_ ...
- Android通过HttpURLConnection链接到网络,并获取网络数据
1.判断网络是否连接 private void networkIsconnected(String str){ ConnectivityManager connMgr = (ConnectivityM ...
- SQL Server2012关于表内事项出现次数降序排列(存储过程)
USE [growup] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[S_GetRanking ...
- Scala深入浅出实战经典---001-Scala开发环境搭建和HelloWorld解析
001-Scala开发环境搭建和HelloWorld解析 Scala 函数式编程和面向对象结合的语言 函数式编程擅长数值计算 面向对象擅长大型工程和项目的组织以及团队的分工协作 Scala会是下一个伟 ...
- candence 知识积累2
1 Allegro Symbol的类型以及作用: (1)Package Symbol : PCB里的封装符号,元器件的footprint,用来做元器件的封装,后缀(.psm),主要在电器层Etch ( ...
- SQLite简单使用说明
System.Data.SQLite.dll下载地址 http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 选择. ...
- 如何利用Cloudera Manager来手动安装parcel包
1.问题的描述: 当你利用Cloudera Manager部署了CDH的集群后,也许随着你的业务需求,你需要对你的就去哪做一些优化,或者扩展之类的,这个时候你可能需要下载安装一些组件.例如,我最近在阅 ...
- 如何把TOMCAT 添加到服务中自动启动
1.配置系统参数: JAVA_HOME:C:\Program Files\Java\jdk1.8.0_51 //本机Jdk的安装路径,已配置相关Java应用的无需再配置. CATALINA_HOM ...
- 腾讯优测-优社区干货精选 | 那些年,我们在Android机型适配上遇到的坑之Camera拍照时快门咔嚓声
文/腾讯优测研发工程师 吴宇焕 优测小优有话说: android机型适配的坑自然是不少,不想掉坑快来优测优社区~ 现在Android手机一般都会带有照相功能,有很多朋友就发现手机照相时快门声音很响,想 ...