关于线性与条带化下LVM增加磁盘数据分布的讨论

关于线性与条带化下LVM增加磁盘数据分布的讨论

  • 一、环境介绍
  • 二、线性模式
    • 逻辑卷创建
    • 逻辑卷删除
  • 三、条带化
    • 逻辑卷创建
    • 逻辑卷删除

LVM有两种模式:

  • 线性模式:先写满组成线性逻辑卷的第一个物理卷,再向第2个物理卷中写入数据,以此类推;
  • 条带化:写入数据时按照固定大小交错地将数据写入组成逻辑卷的多个物理卷中(类似于RAID 0)。

那么新增磁盘后,对某一LVM进行增扩容,扩容的部分在不同的模式下会怎么分布到不同磁盘上的呢?

一、环境介绍

本次使用三块磁盘sdc sdd sdg进行试验,其大小如图:
在这里插入图片描述
创建三个物理卷:

pvcreate /dev/sdc
pvcreate /dev/sdd
pvcreate /dev/sdg

然后创建一个卷组database

vgcreate database /dev/sdd

完成之后如下:
在这里插入图片描述

二、线性模式

逻辑卷创建

将三个物理卷sdc sdd sdg加入到卷组database

vgextend database /dev/sdc /dev/sdg

在这里插入图片描述
根据线性模式的定义,只有用完一个物理卷,才会用下一个。首先,先添加一个200G的逻辑卷lv1

lvcreate -n lv1 -L 200G database

在这里插入图片描述
在这里插入图片描述

此时发现,该逻辑卷被全部分配到了物理卷sdd上,下面,我们申请一个10G的逻辑卷lv2
在这里插入图片描述

在这里插入图片描述
与预想的一致,由于sdd还没用完,且剩余的空间大于新申请的逻辑卷大小,因此lv2也在sdd上。
下面,我们创建一个50G的逻辑卷lv3,查看它会被直接分配给新的物理卷,还是会一部分被分配给sddsdd空间占满,剩下的部分分配到新的物理卷。创建lv3后结果如下:
在这里插入图片描述
在这里插入图片描述
结果发现,线性化模式的LVM在申请逻辑卷的时候并不会为了利用零散的空间而拆分一个逻辑卷到不同的物理卷上。此时我们不免想到,如果申请的空间大于一个物理卷的上限呢?
因此,我们再申请一个250G的逻辑卷lv4,除了验证上述问题外,还验证了超出物理卷上限的部分若可以被某一物理卷的剩余部分容纳,此时它会如何选择sdcsdg的剩余空间都小于250G,且不够的空间都可以被sdd容纳。添加lv4后结果如下:
在这里插入图片描述
在这里插入图片描述
结果还是还是比较符合逻辑的,lv4中的248G被分配给了sdcsdc被占满后,剩余的2G被分配给了sdd会优先使用未被分配的小空间
然后我们删除lv4,申请一个大小为240G的逻辑卷lv5,此时lv5可以被sdc容纳,也可以占满sdg后占用一部分sdd剩余的小空间。

lvremove /dev/database/lv4

删除lv4后:
在这里插入图片描述

在这里插入图片描述
新建lv5后:
在这里插入图片描述
在这里插入图片描述
lv5被完整地分配给了sdc。因此,LVM比起利用零散的小空间,更倾向于不对完整的逻辑卷做拆分
在这里,我就不尝试更极端的情况了,结论为:

  • 若新建逻辑卷lv能完整地被某个物理卷pv的小空间容纳,那么逻辑卷lv会被分配给物理卷pv
  • 若新建逻辑卷lv不能完整地被每个物理卷的剩余空间容纳,那么逻辑卷lv会被拆分分配给不同的物理卷,并优先使用未被分配的小空间(不一定,看条带化部分)。

总结来说,线性模式下的LVM认为将逻辑卷拆分到不同的物理卷上是最不合适的,所以如果能将一个逻辑卷放到一个物理卷上,就这么做,如果放不下就拆分,分开的部分尽量使用未被分配的小空间(不一定,看条带化部分)

逻辑卷删除

逻辑卷删除的逻辑应该类似于创建,因此我这里只做一个尝试,即某一逻辑卷删除后是否会对不合理拆分的剩余逻辑卷做重分配(感觉不太可能,开销比较大,不光涉及到数据的迁移,还涉及逻辑块到物理块的重映射)。
我们构造如下的分布:
在这里插入图片描述
在这里插入图片描述
lv1被分配给sdd,大小为200G;lv2被分配给sdc,大小为200G;lv3大小为250G,被拆分给了sdgsdd。然后,我们删除lv2,此时sdc可以完整容纳lv3,看看是否重分配。删除lv2后:
在这里插入图片描述
在这里插入图片描述
与预期一致,不会进行重分配。

三、条带化

逻辑卷创建

我们重置环境,并只将sdg移出卷组database
然后创建条带数2,交替存储的块大小8MB(一个物理卷每存8MB换一个物理卷),逻辑块总数为51200(200GB)的逻辑卷striped_lv1

vgreduce database /dev/sdg

#选项i 表示数据交错保存在两个物理卷上
#选项I(大写字母i)表示指定逻辑卷的块大小(MB),本例中为4MB
#选项l(小写字母L)表示逻辑块数量(对应vgdisplay中物理块大小,大小为4MB),本例中表示块数量为51200个(200G)
lvcreate -i 2 -I 8 -l 51200 -n striped_lv1 database

卷组剩余块数和物理块大小可以通过vgdisplay命令查看

在这里插入图片描述
添加后:
在这里插入图片描述
在这里插入图片描述
200G的空间被平均分配到了sdcsdd上(每个100G),符合我们对条带化的认识。
此时sdc还剩198Gsdd还剩132G,我们新建一个300G的逻辑卷striped_lv2,按常理说,sdcsdd都应该分配150G,但sdd空间不够,看看会发生什么。创建striped_lv2后:
在这里插入图片描述
操作失败,还需要8764个块,每个块4MB,所以还需要大约34.23G这里我没有想明白,按理说sdd还剩132.8G,应该只差17.1G左右,然而还需34.23G,正好是其一半,原因?
然后我们将物理卷sdg加入database组。
在这里插入图片描述
在这里插入图片描述
此时之前的分配并没有发生变化。
然后添加一个条带化到三个物理卷,大小为450G的逻辑卷striped_lv3。创建striped_lv3后:
在这里插入图片描述
同样执行失败,因为按理说每个物理卷都会被分配150G,但sdd不够,差17G,但信息中说差13146个块,每个块4MB,所以缺51.3G,正好是sdd差值的三倍(条带化的物理卷的数量),这里暂时没有想通,同上。
这里我不再尝试3物理卷条带化成功的例子了,再创建条带数2,大小200G的逻辑卷striped_lv2。创建后:
在这里插入图片描述
在这里插入图片描述
200G的空间又被平均分配到了sdcsdd上(每个100G)。我们删除striped_lv2,再创建条带数2,大小300G的逻辑卷striped_lv3。创建后:
在这里插入图片描述
在这里插入图片描述
由于sdd空间不足,300G的空间被平均分配到了sdcsdg上(每个150G)。
我们创建条带数2,大小60G的逻辑卷striped_lv4。创建后:
在这里插入图片描述
在这里插入图片描述
60G的空间被平均分配到了sdcsdd上(每个30G)。但分配前sdgsdd空间少,striped_lv4也仍被分配到了sdd上,所以条带化的LVM也并没有倾向于使用未分配小空间的特性。所以线性模式也不一定有,可能是物理卷分配顺序的原因体现地像有这个特性。

逻辑卷删除

由于条带化模式下的逻辑卷不存在拆分,所以也不可能存在重分配问题,没什么要测的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/6116.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

必看>>>>Linux数据库被其他服务器远程访问(修改权限、开设端口)

目录 一:修改权限 1.1 进入Linux数据库 1.2 修改数据库的远程连接权限 1.2.1 数据库远程权限修改命令 1.2.2 数据库远程权限查看命名 1.3 给Linux机添加端口 1.4 远程数据库连接 注意mysql中的中英文输入 一:修改权限 1.1 进入Linux数据库 文章…

【职场热点】软件测试岗位,真正达到月收入1万以上的有多少

在某一线城市相亲角,有位阿姨自称孩子是程序员、36岁、月入3万8,并直言“月入1万如讨饭”,引来大量互联网人自嘲式认领“乞丐”身份。今年2月,“月收入一万”的鄙视链压力给到了二线城市,有位入行2年的软件测试员发帖称…

1-python基础

1.字面量 被写在代码中固定的值 2.注释 # 单行注释""" 多行注释1:三对双引号 """ 多行注释2:三对单引号 3.变量与输出 age10 # 变量赋值 print("我今年",age,"岁") (1)pri…

Java数据类型与变量

1.字面常量 public class Demo{ public static void main(String[] args){ System.Out.println("hello world!"); System.Out.println(300); System.Out.println(3.1415926); System.Out.println(T); System.Out.println(true); System.Out.println(false); } 其中…

【CocosCreator入门】CocosCreator组件 | ParticleSystem (粒子)组件

Cocos Creator 是一款流行的游戏开发引擎,具有丰富的组件和工具,其中ParticleSystem组件是一个用于创建粒子效果的工具,可用于实现火花、爆炸、雪花等效果。 目录 一、组件属性 二、组件使用 三、效果演示 四、性能优化 一、组件属性 属性…

迅为3A5000_7A2000工控主板,龙芯自主指令集架构全国产工业级板卡性能

迅为iTOP-3A5000开发板核心板底板方式,底板资料开源,提供底板的原理图和PCB工程文件,可以根据需求定制属于自己的开发板。 核心板也支持工业级核心板定制开发。 根据二进制翻译功能使用,可流畅运行WIN和Android系统APP。 支持Loo…

renderdoc resource manager说明

*写在前面 只针对renderdoc opengl es 场景进行说明, vukan的没有,不过其实应该也差不多啦,若有必要后面再考虑补上。本文使用 文字图代码 的方式叙述,若只想了解原理过程,可忽略代码部分, 由于renderdoc代…

文章生成器-免费的文章生成器

随着信息爆炸的时代,自媒体人员不仅需要创造性的策略,还需要快速产生具有高质量文章的能力,这样才能快速响应趋势并保持优势。文章生成器,一款基于人工智能和自然语言处理技术的文本生成软件,可在没有任何人工干预的情…

企业搭建帮助中心的额方式有哪些?

帮助中心对于企业价值的重要性在于提高客户满意度和忠诚度,增强企业品牌形象,促进业务增长和提高利润率。通过提供详细的帮助文档和客户支持,企业可以向客户传达其专业知识和技能,并帮助客户更好地使用其产品或服务。这将提高客户…

C++(Qt)软件调试---使用任务管理器导出Dump(6)

C(Qt)软件调试—使用任务管理器导出Dump(6) 文章目录C(Qt)软件调试---使用任务管理器导出Dump(6)1、前言2、软件下载3、使用三款软件导出Dump4、软件下载地址更多精彩内容👉个人内容分类汇总 👈&#x1f44…

『.NET Tools』在.NET中实现汉字转拼音,只要一个方法就够了!

📣读完这篇文章里你能收获到 傻瓜式扩展方法直接使用可实现汉字转拼音及汉字转拼音首字母功能感谢点赞收藏,避免下次找不到~ 文章目录一、代码引用Step 1 : 安装包,通过Nuget安装包Step 2 : 代码通过扩展方法/帮助类实现实现汉字转拼音实现汉…

谷粒商城-redis分布式锁系列

1.压力测试出的内存泄漏及解决(可跳过) 使用jmeter对查询产品分类列表接口进行压力测试,出现了堆外内存溢出异常。 我们设置的虚拟机堆内存100m,并不是堆外内存100m 产生堆外内存溢出:OutOfDirectMemoryError 原因是…

2023.4.3

ctrlf:全局替换 alt鼠标左键:整列编辑 ctrlaltl:格式化 AJAX 简介 概念:AJAX:异步(客户端不用等待服务端的反应)的Javascript和XML AJAX的作用: 与服务器进行数据交互:通过AJA…

Adaptive AUTOSAR——Execution Management(VRTE 3.0 R21-11)

ChatGPT回答: Adaptive AUTOSAR Execution Management 模块是用于管理软件执行的模块,其主要功能包括: 任务调度:支持对任务进行调度和执行,以实现系统中各个功能的协调运行;软件组件管理:支持对…

python 读取xml从入门到精通

XML (Extensible Markup Language),可扩展标记语言,是一种被广泛应用于网络上的文件格式。在互联网上,网页里的信息都以 XML格式存储,例如 HTML、 CSV、 JSON等。随着电子商务的发展,人们需要在…

【面试】Java异常面试题

文章目录Java异常架构与异常关键字Java异常简介Java异常架构1. Throwable2. Error(错误)3. Exception(异常)4. 受检异常与非受检异常Java异常关键字Java异常处理声明异常抛出异常捕获异常如何选择异常类型常见异常处理方式直接抛出…

35岁,失业6个月终于接到降薪offer:有面就面,薪酬不限,随机应变说瞎话,对奇葩面试官保持礼貌克制,为拿offer什么都能忍...

被裁后为了生存,人需要做出什么改变?一位35岁网友在失业6个月后终于拿到offer,虽然降薪到四年前的水平,但能继续养家糊口,楼主已经很满意了,并分享了自己的个人经验:1.挖掘历史项目经验&#xf…

为什么ClassPathResource可以读取到流?- 第465篇

历史文章(文章累计460) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 S…

68-信号量

文章目录信号量一.什么是信号量二.信号量的接口三.信号量的使用1.思路2.代码3.编译及结果四.ipcs命令信号量 信号量就是控制某个进程能够对某个资源进行访问;保证同一时刻只能由一个进程对 某个资源进程访问; 打印机 一.什么是信号量 信号量是一个特殊的变量,一…

全网最详细的UI自动化测试元素定位方法总结

目录 前言 元素定位概述 常用的元素定位器 元素定位方法 元素定位技巧 总结 前言 UI自动化测试是软件测试中的一个重要环节,它可以通过模拟用户的实际操作,自动化执行UI界面上的测试用例,以提高测试效率和准确性。元素定位是UI自动化测…