LVM系统逻辑卷

news2025/2/4 22:05:34

1.lvm的来源

我们在工作中经常遇到服务器存储数据的分区磁盘空间不够的情况,尤其是当我们的业务是视频的时候,大批量用户上传和下载视频,磁盘空间需要不停的调整。如果我们作为运维每天的工作就是加硬盘是不是有点扯,而且换硬盘的速度也太慢了。

1.1 lvm工作原理

LVM是通过底层的物理硬盘封装起来,然后以逻辑卷的方式呈现给上层应用的。

LVM 优势: 可以很方便的扩展自己的空间

分区是在一个硬盘上的连续空间,RAID具有容错功能,不过我们设想一个场景:如果一个分区sdb有100GB,当空间不够的时候,分区就毫无用武之地了。
如果我们新添加一块硬盘,如图:
image.png
新加进来的/dev/sdb1是一个独立的文件系统,无法和sda2合并。 那我们一般需要把sda2的大部分数据,转移到sdb1,然后在运行,当数据量特别大的时候,导数据的时间也会很长,而且即使我们把数据导到了sdb1有时候也会遇到问题。
LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越磁盘,当服务器添加了新的磁盘后,管理员不必将原有的文件移动到新的磁盘上,而是通过LVM可以直接扩展文件系统跨越磁盘。
我们可以理解为: LVM是将一个或者多个硬盘的分区在逻辑上整合成一个大的硬盘来使用,当硬盘的空间不够使用的时候,可以将其他硬盘的分区加入其中,这样实现磁盘空间的动态管理。
注意: 逻辑卷的大小是可以动态调整的,而且不会丢失数据, 新加入的硬盘也不会改变上层的逻辑卷。

2.LVM的常用术语

2.1 LVM常见术语

  • The physical media (物理存储介质) : LVM 存储的介质可以是磁盘分区,也可以是整个磁盘,RAID阵列或者SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用
  • 物理卷 pv : PV就是LVM的基本存储逻辑块,但和基本的物理存储介质(比如分区,磁盘)相比,PV有与LVM相关的管理参数
  • 卷组 VG: 一个LVM卷组由一个或者多个物理卷(PV)组成
  • 逻辑卷 LV: LV建立在VG之上,可以在LV上建立文件系统。
  • PE: PV物理卷中可以分配的最小存储单元,PE大小是可以指定的,默认为4MB
  • LE: LV逻辑卷中可以分配的最小存储单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应
  • image.png

物理卷可以是分区可以是磁盘

2.2 常见存储单元总结

备注: 最小存储单元总结

名称最小存储单元
硬盘扇区(512字节)
文件系统block(4k)
raidchunk(512K)
LVMPE(4M)

2.3 LVM元素构成图

image.png

3.LVM优点

  1. 使用卷组,可以让多个硬盘空间组合成一个大的硬盘
  2. 使用逻辑卷,可以跨多个硬盘空间的分区,sdb sdc sdf
  3. 使用逻辑卷的时候,可以自由的调节它的大小
  4. 可以在线对LV,VG,进行创建和删除,调整大小等操作
  5. 允许创建快照,可以用来保存文件系统的备份。

4.逻辑卷管理

image.png
image.png

4.1 创建LVM的基本步骤

物理磁盘被格式化为PV,(空间被划分为一个个的PE) #PV包含PE
不同的PV加入到同一个VG中,(不同PV的PE全部进入到了VG的PE池内) #VG包含PV
在VG中创建LV逻辑卷,基于PE创建,(组成LV的PE可能来自不同的物理磁盘) #LV基于PE创建
LV直接可以格式化后挂载使用 #格式化挂载使用
LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

4.2 LVM常用命令

image.png
查看相关的命令:
image.png

5.创建使用LVM逻辑卷

5.1 创建pv

5.1.1 添加了一块磁盘sdb

本次实验实现四个分区 这四个分区就是pv(物理卷)
image.png

5.1.2 分区

本次实验实现四个分区 这四个分区就是pv(物理卷)

root@zfl ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x6a964dd2 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G 
分区 1 已设置为 Linux 类型,大小设为 5 GiB




   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    20973567     5242880   83  Linux
/dev/sdb3        20973568    31459327     5242880   83  Linux
/dev/sdb4        31459328    41943039     5241856   83  Linux


[root@zfl ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0   44G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    5G  0 part 
├─sdb2            8:18   0    5G  0 part 
├─sdb3            8:19   0    5G  0 part 
└─sdb4            8:20   0    5G  0 part 
sr0              11:0    1  4.3G  0 rom  /mnt/cdrom


5.1.3 把分区sdb1,2,3,4创建为pv

[root@zfl ~]# pvcreate /dev/sdb{1,2,3,4}
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.
  Physical volume "/dev/sdb4" successfully created.


5.1.4 查看物理卷信息

[root@zfl ~]# pvdisplay /dev/sdb1
  "/dev/sdb1" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               vVkGXM-CvrA-s7U2-Rdvl-dxhq-RH0s-kyz32P
   
[root@zfl ~]# 

5.2 创建卷组

语法: vgcreate vg名字 pv的名字 可以跟多个pv

5.2.1 实现把/dev/sdb1 /dev/sdb2组成卷组

[root@zfl ~]#  vgcreate vg01 /dev/sdb1  /dev/sdb2
  Volume group "vg01" successfully created
[root@zfl ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <49.00g    0 
  vg01     2   0   0 wz--n-   9.99g 9.99g
[root@zfl ~]# 

[root@zfl ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <49.00g     0 
  /dev/sdb1  vg01   lvm2 a--   <5.00g <5.00g
  /dev/sdb2  vg01   lvm2 a--   <5.00g <5.00g
  /dev/sdb3         lvm2 ---    5.00g  5.00g
  /dev/sdb4         lvm2 ---   <5.00g <5.00g

[root@zfl ~]# vgdisplay vg01
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               9.99 GiB
  PE Size               4.00 MiB
  Total PE              2558
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2558 / 9.99 GiB
  VG UUID               yYwZYo-i4g4-4QHb-SzIt-Sa6S-85N4-AiyoW5

5.3 创建LV(逻辑卷)

lvcreate -n 指定新逻辑卷的名称 -L指定lv大小的SIZE(M,G) (-l:小l 指定LE的数量) vgname

[root@zfl ~]# lvcreate -n lv01 -L 8G vg01
  Logical volume "lv01" created.
[root@zfl ~]# 

[root@zfl ~]# lvs   查看逻辑卷信息
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <44.00g                                                    
  swap centos -wi-ao----   5.00g                                                    
  lv01 vg01   -wi-a-----   8.00g                                                    

[root@zfl ~]# vgs   查看卷组信息
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <49.00g    0 
  vg01     2   1   0 wz--n-   9.99g 1.99g


5.4 逻辑卷的使用

5.4.1 格式化逻辑卷

在卷组下的逻辑卷

[root@zfl ~]# ls /dev/vg01/lv01 
/dev/vg01/lv01
[root@zfl ~]# 

[root@zfl ~]# mkfs.xfs /dev/vg01/lv01  格式化为XFS系统
meta-data=/dev/vg01/lv01         isize=512    agcount=4, agsize=524288 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2097152, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@zfl ~]# 

[root@zfl ~]# blkid /dev/vg01/lv01 
/dev/vg01/lv01: UUID="b5376889-fdec-4131-a5c4-44d94ac8002b" TYPE="xfs" 
[root@zfl ~]# 

5.4.2 挂载

[root@zfl ~]# mkdir /lv01     #创建挂载目录
[root@zfl ~]# 

[root@zfl ~]# mount /dev/vg01/lv01 /lv01

[root@zfl ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   44G  8.1G   36G   19% /
devtmpfs                 2.5G     0  2.5G    0% /dev
tmpfs                    2.5G     0  2.5G    0% /dev/shm
tmpfs                    2.5G   12M  2.5G    1% /run
tmpfs                    2.5G     0  2.5G    0% /sys/fs/cgroup
/dev/sr0                 4.3G  4.3G     0  100% /mnt/cdrom
/dev/sda1               1014M  147M  868M   15% /boot
tmpfs                    506M     0  506M    0% /run/user/0
/dev/mapper/vg01-lv01    8.0G   33M  8.0G    1% /lv01

[root@zfl ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        44G  8.1G   36G   19% /
devtmpfs                devtmpfs  2.5G     0  2.5G    0% /dev
tmpfs                   tmpfs     2.5G     0  2.5G    0% /dev/shm
tmpfs                   tmpfs     2.5G   12M  2.5G    1% /run
tmpfs                   tmpfs     2.5G     0  2.5G    0% /sys/fs/cgroup
/dev/sr0                iso9660   4.3G  4.3G     0  100% /mnt/cdrom
/dev/sda1               xfs      1014M  147M  868M   15% /boot
tmpfs                   tmpfs     506M     0  506M    0% /run/user/0
/dev/mapper/vg01-lv01   xfs       8.0G   33M  8.0G    1% /lv01

5.5 lv 扩容

扩容前确认下是否有可扩容空间,空间是从VG创建的。
任何逻辑卷的容量扩大都是先要扩充卷组容量

扩容命令是: extend vgextend lvgextend

5.5.1 扩容逻辑卷


因为VG01 还有1.9G空间

[root@zfl ~]# lvextend -L +1G /dev/vg01/lv01
  Size of logical volume vg01/lv01 changed from 8.00 GiB (2048 extents) to 9.00 GiB (2304 extents).
  Logical volume vg01/lv01 successfully resized.

使lv01逻辑卷变为9g

[root@zfl ~]# df -Th /lv01
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs   8.0G   33M  8.0G    1% /lv01
[root@zfl ~]# 

但是这会还是8g

5.5.2 更新/刷新文件系统大小

扩容后应该通知内核,否则看到的还是原来的旧大小
刷新文件系统容量
image.png

[root@zfl ~]# xfs_growfs /dev/vg01/lv01
meta-data=/dev/mapper/vg01-lv01  isize=512    agcount=4, agsize=524288 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2097152, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2097152 to 2359296


[root@zfl ~]# df -Th /lv01
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs   9.0G   33M  9.0G    1% /lv01
[root@zfl ~]# 

5.6 VG扩容

[root@zfl ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree   
  centos   1   2   0 wz--n- <49.00g       0 
  vg01     2   1   0 wz--n-   9.99g 1016.00m
[root@zfl ~]# 

[root@zfl ~]# pvcreate /dev/sdb3 /dev/sdb4
  Physical volume "/dev/sdb3" successfully created.
  Physical volume "/dev/sdb4" successfully created.
[root@zfl ~]# 

[root@zfl ~]# vgextend vg01 /dev/sdb3
  Volume group "vg01" successfully extended
[root@zfl ~]# vgs vg01
  VG   #PV #LV #SN Attr   VSize   VFree 
  vg01   3   1   0 wz--n- <14.99g <5.99g
[root@zfl ~]# 
我们可以看到之前的vg01从10个g变成15个g了  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

signaltap立即触发的错误解决方法

signaltap点下run analysis后没有等到触发条件满足就触发了&#xff0c;原因是触发方式设置错误&#xff0c;应修改触发方式&#xff1a; 将Trigger flow control 从State-based 改为Sequential。

Java学习系列(七)

1.Java多态 多态是同一个行为具有多个不同表现形式或形态的能力&#xff0c; 多态就是同一个接口&#xff0c;使用不同的实例而执行不同操作。 多态的优点 1. 消除类型之间的耦合关系2. 可替换性3. 可扩充性4. 接口性5. 灵活性6. 简化性 多态存在的三个必要条件 继承重写…

鸿蒙原生应用/元服务开发-Stage模型能力接口(九)下

ohos.app.ability.UIAbility (UIAbility)Caller 通用组件Caller通信客户端调用接口, 用来向通用组件服务端发送约定数据。 Caller.call call(method: string, data: rpc.Parcelable): Promise<void>; 向通用组件服务端发送约定序列化数据。 系统能力&#xff1a;Syste…

XML简介 (EXtensible Markup Language)

XML简介 (EXtensible Markup Language) 可扩展标记语言 特点 XML与操作系统、编程语言的开发平台无关实现不同系统之间的数据交换 作用 数据交互配置应用程序和网站Ajax基石 XML标签 XML文档内容由一系列标签元素组成 <元素名 属性名"属性值">元素内容&l…

关于时区处理策略

前端会通过 App-Id 请求头附带 客户端时区 信息 前端传入的如果是 字符串&#xff0c;会自动根据 请求的客户端时区 解析为对应的 日期 如果前端传入的是时间戳&#xff0c;则无需额外解析转换 如果是 商户后台、管理后台 都统一基于 商户所在国家的时区&#xff08;总台目前…

<九>JavaScript中函数,函数的定义方式,形参、实参和返回值

JavaScript中的函数&#xff0c;也是一个对象&#xff0c;函数对象有所有普通对象有的性质。还可以在这个对象中封装一些功能&#xff0c;保存一些代码&#xff0c;在需要的时候调用这些代码&#xff0c;用typeof查看时&#xff0c;会返回类型&#xff1a;function。 定义函数…

线程学习(2)

&#x1f495;"i need your breath"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;线程学习(2) 前情回顾&#xff1a; 在上一篇博客中介绍到了进程与线程的区别&#xff0c;以及初步了解如何在Java实现多线程编程&#xff0c;通过内置的Thread类来…

eNSP错误40,原因三:windows10自带虚拟化软件Hyper-V

问题描述 Hyper-V软件与VirtualBox不兼容&#xff0c;一旦开启Hyper-V的话eNSP的路由器就会无法开启&#xff0c;显示ERROR 40 原理 大家注意看hypervisor的两种类型&#xff1a; 左边的是开启hypervisor的Type-1&#xff0c;hypervisor在启用的时候&#xff0c;宿主机也相…

SQL指南:掌握日期函数来查询和管理数据

文章目录 1. 引言2. 建立数据库表2.1 建表语句2.2 数据插入 查询案例3.1 查询当前日期的订单3.2 查询过去一周内的订单3.3 查询明天的日期3.4 查询今年的订单3.5 查询特定月份的订单 总结 1. 引言 在数据库管理中&#xff0c;处理日期和时间是一项基本但重要的任务。本指南将通…

Android笔记(十九):JetPack DataStore 之 Preferences DataStore

Jetpack DataStore 是一种数据存储解决方案&#xff0c;主要适用于小型数据的处理。它可以通过协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。DataStore有两种实现方式&#xff08;1&#xff09;Preferences DataStor…

如何搭建Web自动化测试框架?

在程序员的世界中&#xff0c;一切重复性的工作&#xff0c;都应该通过程序自动执行。「自动化测试」就是一个最好的例子。 随着互联网应用开发周期越来越短&#xff0c;迭代速度越来越快&#xff0c;只会点点点&#xff0c;不懂开发的手工测试&#xff0c;已经无法满足如今的…

Enge问题解决教程

目录 解决问题的一般步骤&#xff1a; 针对"Enge问题"的具体建议&#xff1a; 以下是一些普遍适用的解决问题的方法&#xff1a; 以下是一些更深入的Enge浏览器问题和解决办法&#xff1a; 浏览器性能问题&#xff1a; 浏览器插件与网站冲突&#xff1a; 浏览…

R语言中使用ggplot2绘制散点图箱线图,附加显著性检验

散点图可以直观反映数据的分布&#xff0c;箱线图可以展示均值等关键统计量&#xff0c;二者结合能够清晰呈现数据蕴含的信息。 本篇笔记主要内容&#xff1a;介绍R语言中绘制箱线图和散点图的方法&#xff0c;以及二者结合展示教程&#xff0c;添加差异比较显著性分析&#xf…

Android13 Wifi启动流程分析

Android13 Wifi启动流程分析 文章目录 Android13 Wifi启动流程分析一、正常开关wifi 启动流程1、WifiManager2、WifiServiceImpl3、ActiveModeWarden4、ConcreteClientModeManager5、WifiNative6、WifiVendorHal7、HalDeviceManager8、wifi.cpp 二、重启设备时自动开启wifi流程…

云原生之深入解析基于FunctionGraph在Serverless领域的FinOps的探索和实践

一、背景 Serverless 精确到毫秒级的按用付费模式使得用户不再需要为资源的空闲时间付费。然而&#xff0c;对于给定的某个应用函数&#xff0c;由于影响其计费成本的因素并不唯一&#xff0c;使得用户对函数运行期间的总计费进行精确的事先估计变成了一项困难的工作。以传统云…

亚马逊推出 Graviton4:具有 536.7 GBps 内存带宽的 96 核 ARM CPU

如今&#xff0c;许多云服务提供商都设计自己的芯片&#xff0c;但亚马逊网络服务 (AWS) 开始领先于竞争对手&#xff0c;目前其子公司 Annapurna Labs 开发的处理器可以与 AMD 和英特尔的处理器竞争。本周&#xff0c;AWS 推出了 Graviton4 SoC&#xff0c;这是一款基于 ARM 的…

斩获冠亚军!开源检索引擎Puck闪耀NeurIPS‘2023

近日&#xff0c;备受全球瞩目的国际向量检索大赛 Big-ANN in NeurIPS’23 的排行榜正式公布。百度搜索内容技术团队&#xff0c;以其自研 ANN 检索算法 PUCK 的出色性能表现&#xff0c;成功斩获Streaming Search赛道冠军与Filtered Search赛道亚军。 NeurIPS&#xff08;Con…

Spring项目启动,运行停留在标题处

详情&#xff1a; 原因&#xff1a; yml文件存在问题&#xff0c;比如&#xff1a;在切换生产环境和开发环境的配置文件时&#xff0c;yml名称写错&#xff0c;如下&#xff0c;图&#xff0c;此处多写了一个p。 解决办法&#xff1a; 修改为正确的配置文件&#xff0c;即可。

27、ResNet50处理STEW数据集,用于情感三分类+全备的代码

1、数据介绍 IEEE-Datasets-STEW:SIMULTANEOUS TASK EEG WORKLOAD DATASET &#xff1a; 该数据集由48名受试者的原始EEG数据组成&#xff0c;他们参加了利用SIMKAP多任务测试进行的多任务工作负荷实验。受试者在休息时的大脑活动也在测试前被记录下来&#xff0c;也包括在其…

Java 中的内部类的定义

目录 一、成员内部类 二、静态内部类 三、局部内部类 四、匿名内部类 一、成员内部类 public class InnerClass {String name;private Integer age;static String hobby;/*** 成员内部类* 1、成员内部类中只能定义非静态属性和方法* 2、成员内部类中可以访问外部类的成员&a…