可能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
  1. # pvcreate /dev/sdc
  2. Physical volume "/dev/sdc" successfully created.
  • 创建vg
  1. # vgcreate data /dev/sdc
  2. Volume group "data" successfully created
  • 创建thin pool
  1. # lvcreate -l +100%free --thinpool data_pool data
  2. Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
  3. Logical volume "data_pool" created.
  • 创建精简卷thin volume
  1. # lvcreate -V 5G --thin -n thin_lv_data01 data/data_pool
  2. Logical volume "thin_lv_data01" created.
  3. # lvcreate -V 5G --thin -n thin_lv_data02 data/data_pool
  4. 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).
  5. WARNING: You have not turned on protection against thin pools running out of space.
  6. WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  7. Logical volume "thin_lv_data02" created.
  • 创建完成查看效果
  1. # lvs
  2. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  3. data_pool data twi-aotz-- 9.97g 0.00 0.68
  4. thin_lv_data01 data Vwi-a-tz-- 5.00g data_pool 0.00
  5. thin_lv_data02 data Vwi-a-tz-- 5.00g data_pool 0.00
  6. root rhel -wi-ao---- 149.50g
  7. 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 "设置:

  1. thin_pool_autoextend_threshold = 70
  2. thin_pool_autoextend_percent = 20

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

手动扩容

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

  1. # pvs
  2. /dev/sdc data lvm2 a-- <15.00g 5.00g
  3. #vgs
  4. VG #PV #LV #SN Attr VSize VFree
  5. data 1 3 0 wz--n- <15.00g 5.00g
  6. # lvs
  7. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  8. data_pool data twi-aotz-- 9.97g 0.00 0.68
  9. thin_lv_data01 data Vwi-a-tz-- 5.00g data_pool 0.00
  10. thin_lv_data02 data Vwi-a-tz-- 5.00g data_pool 0.00
  11. root rhel -wi-ao---- 149.50g
  12. swap00 swapvg -wi-ao---- <8.00g
  13. # lvextend -L +2G data/data_pool(实验环境,手动扩容thin pool)
  14. Size of logical volume data/data_pool_tdata changed from 9.97 GiB (2553 extents) to 11.97 GiB (3065 extents).
  15. Logical volume data/data_pool_tdata successfully resized.
  16. # lvextend -L +2G data/thin_lv_data01(手动扩容thin volume)
  17. 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).
  18. WARNING: You have not turned on protection against thin pools running out of space.
  19. WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  20. Size of logical volume data/thin_lv_data01 changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents).
  21. Logical volume data/thin_lv_data01 successfully resized.

以上内容整理自网络:

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

  1. LVM基础详细说明及动态扩容lvm逻辑卷的操作记录

    LVM概念:---------------------------------------------------------------------------------------------- ...

  2. Creating LVM Logical Volumes

    LVM-Logical Volume Manager逻辑卷管理的一些基本概念: 用途: 在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区.当系统添加了新的磁盘,通 ...

  3. LVM Linear vs Striped Logical Volumes

    转自:https://sysadmincasts.com/episodes/27-lvm-linear-vs-striped-logical-volumes About Episode - Durat ...

  4. CentOS下LVM逻辑卷管理技术解释

    1.LVM逻辑卷管理技术产生的背景 企业日益变化的存储需要使得传统的磁盘分区存储显得不够灵活 2.磁盘分区存储 对于这样的三个物理分区的话,迟早有一天会被数据填满,因为它是死的,无法进行缩放. 假设下 ...

  5. LVM逻辑卷管理器

    LVM概述 通过使用Linux的逻辑卷管理器(Logical Volume Manager, LVM),用户可以在系统运行时动态调整文件系统的大小,把数据从一块硬盘重定位到另一块硬盘,也可以提高I/O ...

  6. LINUX——LVM逻辑卷管理

    LVM: logical volumes manager LVM逻辑卷部署 物理卷—>卷组—>逻辑卷 第一步:关机添加磁盘:两个磁盘可以构成一个磁盘组. 第二步:查看磁盘 # ls /de ...

  7. LVM逻辑卷的创建及使用

    在上一篇随笔里面 LVM逻辑卷基本概念及LVM的工作原理,详细的讲解了Linux的动态磁盘管理LVM逻辑卷的基本概念以及LVM的工作原理,包括LVM中最重要的四个基本点(PE.PV.VG以及LV),这 ...

  8. LVM逻辑卷基本概念及LVM的工作原理

    这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!! 一.传统的磁盘管理 其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是 ...

  9. Linux磁盘管理:LVM逻辑卷的创建及使用

    一.创建LVM逻辑卷 事先添加了三块虚拟物理磁盘/dev/sdb 1G, /dev/sdc 2G, /dev/sdd 3G 使用fdisk –l命令查看: [root@localhost ~]# fd ...

  10. LVM备份(1)-创建LVM逻辑卷

    LV(Logical Volume) - 逻辑卷 VG(Volume Group) - 卷组 PV(Physical Volume) - 物理卷 1.查看分区信息:fdisk -l 可看到磁盘大小为1 ...

随机推荐

  1. [转帖]Dockerfile中CMD和ENTRYPOINT命令详解

    https://www.jb51.net/article/136264.htm   Dockerfile中的ENTRYPOINT指令和CMD指令都可以设置容器启动时要执行的命令,但用途是有略微不同的. ...

  2. [转帖]谨慎调整内核参数:vm.min_free_kbytes

    https://www.cnblogs.com/muahao/p/8082997.html 内核参数:内存相关 内存管理从三个层次管理内存,分别是node, zone ,page; 64位的x86物理 ...

  3. [转帖]Jmeter之界面语言设置

    https://developer.aliyun.com/article/1173114#:~:text=%E6%B0%B8%E4%B9%85%E6%80%A7%E8%AE%BE%E7%BD%AE%E ...

  4. [转帖] 在Linux上查看活跃线程数与连接数

    https://www.cnblogs.com/codelogs/p/17178675.html   原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明. 简介# 现 ...

  5. [转帖]关于kafka压力测试(使用官方自带脚本测试)

    文章目录 kafka官方自带压测脚本文件 Producer生产者环境测试 测试命令 返回测试结果 Consumer消费者环境测试 测试命令 测试结果说明 提升kafka的吞吐量 可通过以下的方式来提升 ...

  6. 【转帖】FIO磁盘性能测试工具

    https://www.jianshu.com/p/70b8c7d5d217 FIO工具介绍 FIO 工具是一款用于测试硬件存储性能的辅助工具,兼具灵活性.可靠性从而从众多性能测试工具中脱颖而出.磁盘 ...

  7. [转帖]NOHZ = ON如何影响Linux内核中的do_timer()?

    https://www.jb51.cc/faq/897483.html 如何解决NOHZ = ON如何影响Linux内核中的do_timer()?? 首先,让我们了解什么是tickless kerne ...

  8. 没有虚拟DOM版本的vue(Vue Vapor)

    前言 随着Svelte和SolidJS的流行,无虚拟DOM模式逐渐开始火了起来.vue也推出了无虚拟DOM模式的版本,就是我们今天要讲的Vue Vapor. 什么是Vue Vapor Vue Vapo ...

  9. React类组件中事件绑定this指向的三种方式

    有状态组件和无状态组件 函数组件又叫做无状态组件,类组件又叫做有状态组件. 状态又叫做数据 函数组件没有自己的状态,只负责静态页面的展示. 我们可以理解为纯ui展示.() 类组件有自己的状态,扶着更新 ...

  10. git提交出现running pre-commit hook: lint-staged

    现象 今天提交代码的时候出现了 > running pre-commit hook: lint-staged Stashing changes... [started] Stashing cha ...