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/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了  

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

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

相关文章

伦敦金交易内地与香港有何区别

伦敦金交易是国际银行间市场层面的现货黄黄金交易&#xff0c;亚洲市场的交易中心在中国香港&#xff0c;现在不管是香港本地还是内地的投资者&#xff0c;都可以在网上开户&#xff0c;通过香港的平台参与伦敦金交易&#xff0c;所得到的服务是同等的、公平的、与国际市场接轨…

【小黑嵌入式系统第十一课】μC/OS-III程序设计基础(一)——任务设计、任务管理(创建基本状态内部任务)、任务调度、系统函数

上一课&#xff1a; 【小黑嵌入式系统第十课】μC/OS-III概况——实时操作系统的特点、基本概念&#xff08;内核&任务&中断&#xff09;、与硬件的关系&实现 文章目录 一、任务设计1.1 任务概述1.2 任务的类型1.2.1 单次执行类任务&#xff08;运行至完成型&#…

Py之tensorflow-addons:tensorflow-addons的简介、安装、使用方法之详细攻略

Py之tensorflow-addons&#xff1a;tensorflow-addons的简介、安装、使用方法之详细攻略 目录 tensorflow-addons的简介 tensorflow-addons的安装 tensorflow-addons的使用方法 1、使用 TensorFlow Addons 中的功能&#xff1a; tensorflow-addons的简介 TensorFlow Addon…

Istio 社区周报(第一期):2023.12.11 - 12.17

欢迎来到 Istio 社区周报 Istio 社区朋友们&#xff0c;你们好&#xff01; 我很高兴呈现第一期 Istio 社区周报。作为 Istio 社区的一员&#xff0c;每周我将为您带来 Istio 的最新发展、有见地的社区讨论、专业提示和重要安全新闻内容。 祝你阅读愉快&#xff0c;并在下一期中…

【RK3288 Android6 T8, 突然无声音问题排查】

【RK3288 Android6 T8&#xff0c; 突然无声音问题排查】 问题背景: T8 android6 6.0.10在测试过程中突然出现弹窗音量进度条&#xff0c;然后小铃铛图标被禁用&#xff0c;意为静音&#xff0c;退出app后&#xff0c;打开设置的音量设置&#xff0c;发现notification的音量被…

IEEE TASLP | 联合语音识别与口音识别的解耦交互多任务学习网络

尽管联合语音识别&#xff08;ASR&#xff09;和口音识别&#xff08;AR&#xff09;训练已被证明对处理多口音场景有效&#xff0c;但当前的多任务ASR-AR方法忽视了任务之间的粒度差异。细粒度单元&#xff08;如音素、声韵母&#xff09;可用于捕获与发音相关的口音特征&…

手写单链表(指针)(next域)附图

目录 创建文件&#xff1a; 具体实现&#xff1a; 首先是头插。 注意&#xff1a;一定要注意&#xff1a;再定义tmp时&#xff0c;要给它赋一个初始值&#xff08;推荐使用 new list_next) 接着是尾插&#xff1a; 随后是中间插&#xff1a; 然后是最简单的改值&#xf…

人工智能边缘计算:连接智能的边界

导言 人工智能边缘计算是将智能计算推向数据源头的重要发展方向&#xff0c;本文将深入探讨边缘计算与人工智能的交融&#xff0c;以及在未来数字化社会中的前景。 1. 边缘计算的基础 分布式计算&#xff1a; 边缘计算通过将计算任务推送至数据产生的地方&#xff0c…

IspSrv-互联网访问检测器

2023年全国网络系统管理赛项真题 模块B-Windows解析 题目 为了模拟Internet访问测试,请搭建网卡互联网检测服务。使用ispsrv.chinaskills.global站点模拟互联网检测服务器配置检测文件内容为internet。允许互联网区域客户端访问AppSrv上的HTTP资源。答题步骤 可以在注册表中找…

轻量级web开发框架Flask本地部署及无公网ip远程访问界面

文章目录 前言1. 安装部署Flask2. 安装Cpolar内网穿透3. 配置Flask的web界面公网访问地址4. 公网远程访问Flask的web界面 前言 本篇文章讲解如何在本地安装Flask&#xff0c;以及如何将其web界面发布到公网上并进行远程访问。 Flask是目前十分流行的web框架&#xff0c;采用P…

阿里云经济型、通用算力型、计算型、通用型、内存型云服务器最新活动报价

阿里云作为国内领先的云计算服务提供商&#xff0c;提供了多种规格的云服务器供用户选择。为了满足不同用户的需求&#xff0c;阿里云推出了经济型、通用算力型、计算型、通用型和内存型等不同类型的云服务器。下面将详细介绍这些云服务器的最新活动报价。 一、阿里云特惠云服…

Apache Pulsar 技术系列 - PulsarClient 实现解析

导语 Apache Pulsar 是一个多租户、高性能的服务间消息传输解决方案&#xff0c;支持多租户、低延时、读写分离、跨地域复制&#xff08;GEO replication&#xff09;、快速扩容、灵活容错等特性。同时为了达到高性能&#xff0c;低延时、高可用&#xff0c;Pulsar 在客户端也…

STM32F4的DHT11初始化与实例分析

STM32—— DHT11 本文主要涉及STM32F4 的DHT11的使用以及相关时序的介绍&#xff0c;最后有工程下载地址。 文章目录 STM32—— DHT11一、 DHT11的介绍1.1 DHT11的经典电路 二、DHT11的通信2.1 DHT11的传输数据格式2.2 DHT11 通信分步解析 三、 DHT11 代码3.1 引脚图3.2 电路图…

Springboot数据加密篇

一、密码加密 1.1Hash算法(MD5/SHA-512等) 哈希算法&#xff0c;又称摘要算法&#xff08;Digest&#xff09;&#xff0c;是一种将任意长度的输入通过散列函数变换成固定长度的输出的单向密码体制。这种映射的规则就是哈希算法&#xff0c;而通过原始数据映射之后得到的二进制…

PMP项目管理 - 整合管理

系列文章目录 系统架构设计 PMP项目管理 - 质量管理 PMP项目管理 - 采购管理 PMP项目管理 - 资源管理 PMP项目管理 - 风险管理 PMP项目管理 - 沟通管理 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everything is for the future of dream…

Amazon Toolkit — CodeWhisperer 使用

tFragment--> 官网&#xff1a;https://aws.amazon.com/cn/codewhisperer/?trkcndc-detail 最近学习了亚马逊云科技的 代码工具&#xff0c;感慨颇多。下面是安装 和使用的分享。 CodeWhisperer&#xff0c;亚马逊推出的实时 AI 编程助手&#xff0c;是一项基于机器学习…

C语言struct,union内存对齐

测试环境&#xff1a; #include<stdio.h> int main(){//1字节对齐struct XXX{unsigned char ch;unsigned int in;unsigned short si;}__attribute__((packed));struct XXX xxx;printf("%zd\n",sizeof(xxx));//7#pragma pack(1)struct YYY{unsigned char ch;u…

文心一言 VS 讯飞星火 VS chatgpt (161)-- 算法导论13.1 1题

一、用go语言&#xff0c;按照图 13-1(a)的方式&#xff0c;画出在关键字集合(1&#xff0c;2&#xff0c;…&#xff0c;15)上高度为 3 的完全二叉搜索树。以三种不同方式向图中加入 NIL 叶结点并对各结点着色&#xff0c;使所得的红黑树的黑高分别为2、3和4。 文心一言&…

Eigen库之Quaterniond

Eigen::Quaterniond 是 Eigen C++ 库中用于表示四元数的类,四元数在计算机图形学、机器人学等领域中广泛用于表示旋转操作。 四元数是一种数学结构,通常用于表示和计算三维空间中的旋转。一个四元数由一个实部和三个虚部组成,可以写成如下形式: 主要性质和运算: 以下是如何…

R语言【cli】——cli_warn可以更便捷的在控制台输出警告信息

Package cli version 3.6.2 cli_warn(message, ..., .envir parent.frame()) 参数【message】&#xff1a;它是通过调用 cli_bullets() 进行格式化的。进一步地&#xff0c;还需要调用 inline-makeup&#xff08;内联标记&#xff09;。 参数【...】&#xff1a;传递给 rlan…