LVM系统逻辑卷

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/sdb1VG Name               PV Size               5.00 GiBAllocatable           NOPE Size               0   Total PE              0Free PE               0Allocated PE          0PV 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/sdb2Volume group "vg01" successfully created
[root@zfl ~]# vgsVG     #PV #LV #SN Attr   VSize   VFreecentos   1   2   0 wz--n- <49.00g    0 vg01     2   0   0 wz--n-   9.99g 9.99g
[root@zfl ~]# 
[root@zfl ~]# pvsPV         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               vg01System ID             Format                lvm2Metadata Areas        2Metadata Sequence No  1VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                2Act PV                2VG Size               9.99 GiBPE Size               4.00 MiBTotal PE              2558Alloc PE / Size       0 / 0   Free  PE / Size       2558 / 9.99 GiBVG 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 vg01Logical volume "lv01" created.
[root@zfl ~]# 
[root@zfl ~]# lvs   查看逻辑卷信息LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot 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   VFreecentos   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/lv01Size 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 ~]# vgsVG     #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/sdb4Physical volume "/dev/sdb3" successfully created.Physical volume "/dev/sdb4" successfully created.
[root@zfl ~]# 
[root@zfl ~]# vgextend vg01 /dev/sdb3Volume group "vg01" successfully extended
[root@zfl ~]# vgs vg01VG   #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.rhkb.cn/news/222535.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Debian在升级过程中报错

当我们在升级的过程中出现如下报错信息 报错信息如下所示&#xff1a; The following signatures couldnt be verified because the public key is not available: NO_PUBKEY ED444FF07D8D0BF6 W: GPG error: http://mirrors.jevincanders.net/kali kali-rolling InRelease: …

操作系统 day15(信号量)

信号量机制 之前学习了这些解决进程互斥的方案 *但它们都无法实现“让权等待”&#xff0c;于是Dijkstra提出了一种卓有成效的实现进程互斥、同步的方法----信号量机制 总结&#xff1a;一个信号量对应一种资源。信号量的值这种资源的剩余数量&#xff08;信号量的值如果小于…

Vue3选项式API和组合式API详解

前言 相信学习Vue3的人中大多数都是之前使用Vue2开发的&#xff0c;当拿到一个Vue3项目时就接触到了组合式api&#xff0c;但对于组合式api不了解的人第一眼看上去会觉得一头雾水。&#xff1a;“什么玩意&#xff0c;乱七八糟的&#xff0c;选项式api多好&#xff0c;方法变量…

NiNNet

目录 一、网络介绍 1、全连接层存在的问题 2、NiN的解决方案(NiN块) 3、NiN架构 4、总结 二、代码实现 1、定义NiN卷积块 2、NiN模型 3、训练模型 一、网络介绍 NiN&#xff08;Network in Network&#xff09;是一种用于图像识别任务的卷积神经网络模型。它由谷歌研究…

AI绘画中CLIP文本-图像预训练模型

介绍 OpenAI 在 2021 年提出了 CLIP&#xff08;Contrastive Language–Image Pretraining&#xff09;算法&#xff0c;这是一个先进的机器学习模型&#xff0c;旨在理解和解释图像和文本之间的关系。CLIP 的核心思想是通过大规模的图像和文本对进行训练&#xff0c;学习图像…

2023.12.19 关于 Redis 通用全局命令

目录 引言 Redis 全局命令 SET & GET KEYS EXISTS DEL EXPIRE TTL TYPE redis 引入定时器高效处理过期 key 基于优先级队列方式 基于时间轮方式 引言 Redis 是根据键值对的方式存储数据的必须要进入 redis-cli 客户端程序 才能输入 redis 命令 Redis 全局命令 R…

C# SQLite基础工具类

目录 1、安装System.Data.SQLite工具包 2、创建数据库 3、数据库的连接与断开 4、执行一条SQL语句 5、批量执行sql语句 6、返回首行首列值 7、执行sql语句返回datatable 1、安装System.Data.SQLite工具包 2、创建数据库 /// <summary> /// 数据库路径 …

C++的泛型编程—模板

目录 一.什么是泛型编程&#xff1f; ​编辑 ​编辑 二.函数模板 函数模板的实例化 当不同类型形参传参时的处理 使用多个模板参数 三.模板参数的匹配原则 四.类模板 1.定义对象时要显式实例化 2.类模板不支持声明与定义分离 3.非类型模板参数 4.模板的特化 函数模板…

事件和事件源

事件监听 在JS当中写事件监听是这个函数&#xff0c;写了这个函数&#xff0c;前面是DOM对象&#xff0c;当由DOM树和CSSOM树形成的渲染树也有这个监听&#xff0c;这个函数可以添加到DOM树&#xff0c;最后渲染树也有。渲染树会渲染标签当标签发生该事件就会执行这个函数。这个…

conda环境下执行conda命令提示无法识别解决方案

1 问题描述 win10环境命令行执行conda命令&#xff0c;报命令无法识别&#xff0c;错误信息如下&#xff1a; PS D:\code\cv> conda activate pt conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&a…

Transformer引领AI领域:从模型到平台,全方位探索与实践

编辑推荐 在不到4 年的时间里&#xff0c;Transformer 模型以其强大的性能和创新的思想&#xff0c;迅速在NLP 社区崭露头角&#xff0c;打破了过去30 年的记录。BERT、T5 和GPT 等模型现在已成为计算机视觉、语音识别、翻译、蛋白质测序、编码等各个领域中新应用的基础构件。…

pnpm :无法加载文件 D:\nodejs\node_global\pnpm.ps1,因为在此系统上禁止运行脚本

目录 一、问题描述 二、原因分析 三、解决问题 一、问题描述 pnpm : 无法加载文件 D:\learningsoftware\nodejs\node_global\pnpm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID1351 70 中的 a…

5G+云渲染技术:将如何快速推进XR和元宇宙?

XR&#xff08;扩展现实&#xff09;领域正在以惊人的速度增长。目前&#xff0c;到 2024 年&#xff0c;一些专家表示这个行业的价值将达到 3000 亿美元。 这个行业发展如此迅速的部分原因是 XR 将在商业环境中的带来巨大利益。近年来&#xff0c;很多企业遇到了将增强现实和…

spring MVC概述和土门案例(无配置文件开发)

SpringMVC 1&#xff0c;SpringMVC概述2&#xff0c;SpringMVC入门案例2.1 需求分析2.2 案例制作步骤1:创建Maven项目步骤2:补全目录结构步骤3:导入jar包步骤4:创建配置类步骤5:创建Controller类步骤6:使用配置类替换web.xml步骤7:配置Tomcat环境步骤8:启动运行项目步骤9:浏览器…

vue 简单实现购物车:商品基础信息最终的 html 文件 + 商品计数器的组件处理,实现了购物车;

购物车实现过程&#xff1a; Ⅰ、商品购物车作业需求&#xff1a;1、商品购物车页面示例&#xff1a;2、具体需求&#xff1a; Ⅱ、html 文件的构建&#xff1a;商品购物车.html Ⅲ、组件文件的构建&#xff1a;商品购物车1.js Ⅳ、小结&#xff1a; Ⅰ、商品购物车作业需求&am…

【HarmonyOS开发】ArkTs关系型和非关系型数据库的存储封装

前面使用了首选项的存储方式&#xff0c;因此将其他的两种存储方式&#xff08;键值型数据库和关系型数据库&#xff09;也学习一下&#xff0c;简单记录一下&#xff0c;并进行封装&#xff0c;方便后续使用。 1、效果预览 2、使用条件 2.1 键值型数据库 键值型数据库实现数据…

Modbus-TCP数据帧

Modbus-TCP基于4种报文类型 MODBUS 请求是客户机在网络上发送用来启动事务处理的报文MODBUS 指示是服务端接收的请求报文MODBUS 响应是服务器发送的响应信息MODBUS 证实是在客户端接收的响应信息 Modbus-TCP报文: 报文头MBAP MBAP为报文头&#xff0c;长度为7字节&#xff0c…

CentOS操作学习(二)

上一篇学习了CentOS的常用指令CentOS指令学习-CSDN博客 现在我们接着学习 一、Vi编辑器 这是CentOS中自带的编辑器 三种模式 进入编辑模式后 i&#xff1a;在光标所在字符前开始插入a&#xff1a;在光标所在字符串后开始插入o&#xff1a;在光标所在行的下面另起一新行插入…

【排序算法】C语言实现选择排序与冒泡排序

文章目录 &#x1f680;前言&#x1f680;冒泡排序✈️冒泡排序的逻辑✈️冒泡排序coding &#x1f680;选择排序✈️选择排序的逻辑✈️选择排序coding &#x1f680;前言 这里是阿辉算法与数据结构专栏的第一篇文章&#xff0c;咱们就从排序算法开始讲起&#xff0c;排序算法…

freeswitch on debian docker

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 因为centos系统期限的原因&#xff0c;尝试在debian的docker上使用fs。 环境 docker engine&#xff1a;Version 24.0.6 debian docker&#xff1a;bullseye 11.8 freeswitch&#xff1a;v1.10.7 Debian准备 目前…