LVM精简卷(Thinly-Provisioned Logical Volumes)

2023-11-13

可能LVM大家都比较熟悉,那么精简卷又是干什么的呢?相比于普通LVM有什么优势,又会带来哪些新的问题?带着这些我们来一探究竟:

工作原理

在创建Thin“瘦”卷时,预分配一个虚拟的逻辑卷容量大小,而只是在实际写入数据时才分配物理空间给这个卷。这样我们可以轻易的创建出总逻辑容量超出物理磁盘空间的多个“精简卷”,而无须为将来可能达到的数据量提前“买单”。在应用产生的数据确实需要增加驱动器时,我们也可以灵活地在线调整卷的大小。

带来的问题:

当每个卷已使用的容量总和超过阵列的物理容量时,将无法再写入数据,并导致应用出错。
于是设置空间预警的功能就相当重要,比如在物理空间占用达到85%时向管理员发出通知,
或者设定自动增长策略,当达到指定阀值,比如85%时,卷自动增长10G。

Thin provisioned

Thin Provisioned的最大特点在于可以对存储资源进行按需动态分配,即对存储进行了虚拟化管理。
例如,某位用户向服务器管理员请求分配10TB的资源。虽然可能确实需要10TB的物理存储容量,但根据当前使用情况,分配2TB就已足够。
因此,系统管理员准备2TB的物理存储,并给服务器分配10TB的虚拟卷。服务器即可基于仅占虚拟卷容量1/5的现有物理磁盘池开始运行。
这样的“始于小”方案能够实现更高效地利用存储容量。

  • 组成

在标准的逻辑卷中磁盘空间在创建时就会占用卷组的空间,但是在瘦(thin)卷中只有在写入时才会占用存储池"thin pool LV"中的空间。
一个 thin逻辑卷创建前必须创建 thin pool LV,一个 thin pool LV由两部分组成:
一个大的data LV(数据卷)用来储存数据块,和一个metadate LV(元数据卷)。metadata中记录了thin卷中每个块数据的所属关系。
(说简单点就是metadata中储存索引,data中储存真实数据,当你访问数据时,先通过索引再访问数据,因为你每次首先访问的不是真实数据,
所有就像C语言中链表一样,理论上储存的数据可以无限大,并且动态可调)。

术语介绍

ThinDataLV:thin数据卷。从卷组中创建的一个比较大的卷,在thin池中来储存thin卷的数据块。
ThinMetaLV: thin 元数据卷。从卷组中创建的一个比较小的卷,在thin池来储存块数据的映射关系。
ThinPoolLV :thin池卷,精简池。 由 ThinDataLV 和 ThinMetaLV组成,包括ThinLVs 和 SnapLV。
ThinLV:thin LV 精简卷。由 ThinPoolLV创建(刚开始创建时为空,不实际占有空间)。

创建thin pool

在测试的服务器上新增了一块10G的磁盘,将这个磁盘创建为一个thinpool和2个5G的逻辑卷。它看起来应该这样做。

  • 创建pv
# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
  • 创建vg
# vgcreate data /dev/sdc
Volume group "data" successfully created
  • 创建thin pool
# lvcreate -l +100%free --thinpool data_pool data
Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
Logical volume "data_pool" created.
  • 创建精简卷thin volume
# lvcreate -V 5G --thin -n thin_lv_data01 data/data_pool
Logical volume "thin_lv_data01" created.
# lvcreate -V 5G --thin -n thin_lv_data02 data/data_pool
WARNING: Sum of all thin volume sizes (10.00 GiB) exceeds the size of thin pool data/data_pool and the size of whole volume group (<10.00 GiB).
WARNING: You have not turned on protection against thin pools running out of space.
WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
Logical volume "thin_lv_data02" created.
  • 创建完成查看效果
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data_pool data twi-aotz-- 9.97g 0.00 0.68
thin_lv_data01 data Vwi-a-tz-- 5.00g data_pool 0.00
thin_lv_data02 data Vwi-a-tz-- 5.00g data_pool 0.00
root rhel -wi-ao---- 149.50g
swap00 swapvg -wi-ao---- <8.00g

thin pool自动扩容

1.查看配置文件/etc/lvm/lvm.conf,默认情况下,自动扩展名设置为100

thin_pool_autoextend_threshold /etc/lvm/lvm.conf

#Configuration option activation/thin_pool_autoextend_threshold.

#thin_pool_autoextend_threshold = 70

thin_pool_autoextend_threshold = 100

#设置为100将禁用自动扩展,默认设置表明该功能已被禁用。activation /
thin_pool_autoextend_threshold表明当精简池的使用率超过此百分比时会自动扩展。

2.启用自动扩展,请同时更改"
thin_pool_autoextend_percent “和” thin_pool_autoextend_threshold "设置:

thin_pool_autoextend_threshold = 70
thin_pool_autoextend_percent = 20

这意味着,只要池使用率超过70%,它就会再扩展20%。

手动扩容

将pv扩容5G,扩容完如下:

# pvs
/dev/sdc data lvm2 a-- <15.00g 5.00g
#vgs
VG #PV #LV #SN Attr VSize VFree
data 1 3 0 wz--n- <15.00g 5.00g
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data_pool data twi-aotz-- 9.97g 0.00 0.68
thin_lv_data01 data Vwi-a-tz-- 5.00g data_pool 0.00
thin_lv_data02 data Vwi-a-tz-- 5.00g data_pool 0.00
root rhel -wi-ao---- 149.50g
swap00 swapvg -wi-ao---- <8.00g
# lvextend -L +2G data/data_pool(实验环境,手动扩容thin pool)
Size of logical volume data/data_pool_tdata changed from 9.97 GiB (2553 extents) to 11.97 GiB (3065 extents).
Logical volume data/data_pool_tdata successfully resized.
# lvextend -L +2G data/thin_lv_data01(手动扩容thin volume)
WARNING: Sum of all thin volume sizes (12.00 GiB) exceeds the size of thin pool data/data_pool and the amount of free space in volume group (3.00 GiB).
WARNING: You have not turned on protection against thin pools running out of space.
WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
Size of logical volume data/thin_lv_data01 changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents).
Logical volume data/thin_lv_data01 successfully resized.

以上内容整理自网络:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LVM精简卷(Thinly-Provisioned Logical Volumes) 的相关文章

随机推荐

  • mysql用事务实现更新数据

    前言 在手动批量更新正式环境数据库时 建议使用事物进行更新 避免更错数据 造成不必要的麻烦 现表中有三条数据 使用事物批量将name字段为mgx phone字段为17837107346 所有数据中的address字段更新成河北唐山 开始事物
  • moco接口框架介绍

    moco接口框架介绍 Moco 是一个搭建模拟服务器的工具 其支持 API 和独立运行两种方式 前者通常是在 junit testng等测试框架中使用 后者则是通过运行一个 jar 包开启服务 在maven中央仓库中 moco有三个版本 分
  • <Linux开发>系统移植 -之- linux内核移植过程详细记录(第二部分完结)

    Linux开发 系统移植 之 linux内核移植过程详细记录 第二部分完结 前面 第一部分讲解了 NXP官方原厂的Linux直接编译下载到开发板的操作过程 及测试效果 以及过程中设计使用的一些辅助工具 从第一部分 可以熟悉整个Linux编译
  • JSON 语法规则详解

    JSON 的语法规则十分简单 无论用何种方法总结都只有数条而已 它参考了 C 语言家族的一些习惯 学习起来并不会感到陌生 回顾JSON 的五点语法 1 数组 Array 用方括号 表示 2 对象 Object 用大括号 表示 3 名称 值对
  • 抽象方法与抽象类

    没有方法体的方法就是抽象方法 如果一个类中有抽象方法则这个类就是抽象类 public abstract class Abs public abstract void shoot 抽象方法 public abstract void eat p
  • Scrapy 爬虫笔记

    目录 概述 开始 启动项目 爬虫初始化 处理响应 回调函数的参数 图片下载 未完待续 相关资源 概述 本文记录了个人使用 Scrapy 爬取某网站产品信息 包含图片下载 的整个过程 也可以作为一篇 Scrapy 实战教学博客 首先从 All
  • 网络安全-自学笔记

    目录 相关网站推荐 WEB 应用 安全 学习路线 推荐 书籍 网站 在线靶场 基础 XSS攻击 CSRF漏洞 劫持攻击 点击劫持 SSRF漏洞 文件包含漏洞 文件上传漏洞 XXE漏洞 WebShell 解析安全 RCE漏洞 SQL注入漏洞
  • 网络爬虫是什么?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 互联网诞生之初 是为了让人们更容易的分享数据 交流通讯 互联网是桥梁 连接了世界各地的人们 网站的点击 浏览都是人为的 与你聊天的也是活生生的人 然而 随着技术的发展 人们
  • Java 实现区块链

    Java 是一种流行的面向对象的编程语言 它可以用来实现区块链 在实现区块链时 通常需要考虑以下几个方面 区块的数据结构 区块通常包含一些数据 如交易信息 以及一些元数据 如区块的哈希值和时间戳 你可以使用 Java 中的数据结构 如类 对
  • 【C++】STL —— list的基本使用

    目录 一 list容器的简介 二 list容器常用的接口 1 list初始化操作 1 构造函数 编辑 2 析构函数 3 赋值重载函数 2 list容量相关的函数 3 list的迭代器 4 list的增删查改 一 list容器的简介 1 li
  • 使用STM32CubeMX和STM32CubeIDE的常见问题和注意事项

    STM32CubeMX和STM32CubeIDE是ST公司的STM32Cube生态系统中最重要和最常用的2个软件 使用这2个免费软件可以高效地进行STM32系统的开发 CubeMX用于对一个STM32器件进行可视化的配置 然后生成CubeI
  • git 解决冲突之 theirs & ours

    git merge 从feature分支合并到master分支 git checkout master git merge feature Auto merging Document CONFLICT content Merge confl
  • echarts--3D效果柱状图

    echarts二维柱状图做3D效果 先看下效果 废话不多说 直接上代码 div class box echart div initBarEchart 柱状图 let option bar this setOption let array n
  • 【sqli-labs】 less37 POST- Bypass MYSQL_real_escape_string (POST型绕过MYSQL_real_escape_string的注入)...

    POST版本的less36 uname 1 passwd 1 df or 1 转载于 https www cnblogs com omnis p 8384536 html
  • Qt

    Qt QListView QListWidget QTableView QTableWidget的使用示例及区别 目录 Qt QListView QListWidget QTableView QTableWidget的使用示例及区别 1 简
  • 想入门网络安全?先来看看网络安全行业人才需求!

    如果你是一个想要入门网络安全行业的小白 如果你是网络安全专业在读的大学生 如果你是正在找工作的新手 那么这篇文章你一定要仔细看 毕竟知己知彼百战百胜 知道行业的人才需求才能更好得发挥自己的优势 当你打开BOSS直聘 拉钩等招聘网站 在首页的
  • 快手分享链接,实战解析无水印视频源码

    这个是我发现的源码解析 快手 package blog rs1314 cn test import java io IOException import java io InputStream import java net URLDeco
  • Numpy在三维矩阵的max()、argmax()上的操作

    1 Numpy中对于3维数组的表达形式不同于RGB图片在通道上的堆叠形式 0 设一个矩阵尺寸为 h w c 1 Numpy 会将该矩阵的后两维看成一个二维矩阵 h则代表w c大小的矩阵的个数 整体矩阵是w c矩阵在h维度上的堆叠 2 图像上
  • 日常笔记day2

    Python在3 5版本中引入了关于协程的语法糖async和await 普通的函数通过类型判断可以验证函数的类型 直接调用异步函数不会返回结果 而是返回一个coroutine对象 协程需要通过其他方式来驱动 因此可以使用这个协程对象的sen
  • LVM精简卷(Thinly-Provisioned Logical Volumes)

    可能LVM大家都比较熟悉 那么精简卷又是干什么的呢 相比于普通LVM有什么优势 又会带来哪些新的问题 带着这些我们来一探究竟 工作原理 在创建Thin 瘦 卷时 预分配一个虚拟的逻辑卷容量大小 而只是在实际写入数据时才分配物理空间给这个卷