LVM核心概念

1. LVM简介

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

优点:

  • 可以灵活分配和管理磁盘空间

  • 可以对分区进行动态的扩容

  • 可以增加新的磁盘到lvm中

2. LVM核心概念

LVM概念图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • PV(Physical Volume)物理卷 磁盘分区后(还未格式化为文件系统)使用 pvcreate 命令可以将硬盘分区创建为 pv,此分区的 systemID 为8e,即为 LVM 格式的系统标识符。
  • VG(Volume Group)卷组 将多个 PV 组合起来,使用 vgcreate 命令创建成卷组。卷组包含了多个 PV,相当于重新整合了多个分区后得到的硬盘。虽然 VG 整合了多个 PV,但是创建 VG 时会将所有空间根据指定 PE 大小划分为多个 PE,在 LVM 模式下的存储都是以 PE 为单元,类似于文件系统的 Block。
  • PE(Physical Extend)物理存储单元 PE 是 VG 中的存储单元。实际存储的数据都是在 PE 存储。
  • LV(Logical Volume)逻辑卷 如果说VG是整合分区为硬盘,那么 LV 就是把这个硬盘重新的分区,只不过该分区是通过 VG 来划分的。VG 中有很多 PE 单元,可以指定将多少 PE 划分给一个 LV,也可以直接指定大小来划分。划分 LV 后就相当于划分了分区,只需要对 LV 进行格式化即可变成普通的文件系统。
  • LE(Logical extent)逻辑存储单元 LE 则是逻辑存储单元,即 LV 中的逻辑存储单元,和 PE 的大小一样。从 VG 中划分 LV,实际上是从 VG 中划分 VG 中的 PE,只不过划分 LV 后它不在称为 PE,而是 LE。

3. LVM原理

LVM 之所以能够伸缩容量,实现的方法就是讲 LV 里空闲的 PE 移出,或向 LV 中添加空闲的 PE。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4. 格式化为LVM盘

4.1. fdisk格式化2T以下磁盘

# 使用fdisk进行盘的格式化
fdisk /dev/vdb

# 以下是交互输出结果
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xadfbfcb4.

Command (m for help): n # 新建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p  # 待定主分区
Partition number (1-4, default 1): 1 # 序号
First sector (2048-1048575999, default 2048): # 直接回车
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1048575999, default 1048575999): # 直接回车
Using default value 1048575999
Partition 1 of type Linux and of size 500 GiB is set

Command (m for help): p # 确认分区情况

Disk /dev/vdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xadfbfcb4

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048  1048575999   524286976   83  Linux

Command (m for help): t # 选择系统id
Selected partition 1
Hex code (type L to list all codes): 8e # 8e指定的是使用LVM
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w # 保存
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

4.2. parted格式化2T以上磁盘

# parted /dev/sdk
GNU Parted 3.1
使用 /dev/sdk
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable
新的磁盘标签类型? gpt
(parted) p
Model: ATA ST4000NM0035-1V4 (scsi)
Disk /dev/sdk: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  标志

(parted) mkpart
分区名称?  []?
文件系统类型?  [ext2]?
起始点? 0g
结束点? 4000G
(parted) p
Model: ATA ST4000NM0035-1V4 (scsi)
Disk /dev/sdk: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  标志
 1      1049kB  4000GB  4000GB

(parted) toggle 1 lvm
(parted) p
Model: ATA ST4000NM0035-1V4 (scsi)
Disk /dev/sdk: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  标志
 1      1049kB  4000GB  4000GB                     lvm

(parted) quit
信息: You may need to update /etc/fstab.

5. LVM操作

# pvcreate如果提示命令不存在,则需要安装lvm2
yum install lvm2 -y

5.1. 创建物理卷(PV)

# pvcreate /dev/nvme1n1p1 /dev/nvme2n1p1
  Physical volume "/dev/nvme1n1p1" successfully created.
  Physical volume "/dev/nvme2n1p1" successfully created.

# 使用pvs或者 pvdisplay 查看结果
# pvs
  PV             VG Fmt  Attr PSize   PFree
  /dev/nvme1n1p1    lvm2 ---  931.51g 931.51g
  /dev/nvme2n1p1    lvm2 ---  931.51g 931.51g

5.2. 创建卷组(VG)

# vgcreate vgdata /dev/nvme1n1p1 /dev/nvme2n1p1
  Volume group "vgdata" successfully created

# 使用vgs 查看vg, vgdisplay的信息

# lsblk查看
# lsblk
NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
nvme0n1                                       259:0    0 931.5G  0 disk  /pcdn_data/storage1_ssd
nvme2n1                                       259:2    0 931.5G  0 disk
└─nvme2n1p1                                   259:5    0 931.5G  0 part
  └─vgdata-data                               251:2    0   1.8T  0 lvm   /vgdata
nvme1n1                                       259:1    0 931.5G  0 disk
└─nvme1n1p1                                   259:4    0 931.5G  0 part
  └─vgdata-data                               251:2    0   1.8T  0 lvm   /vgdata

5.3. 创建逻辑卷(LV)

# lvcreate -L 后面是大小, -n 后面是逻辑卷名称, vgdata对应上面的卷组
# lvcreate -L 1.8T -n data vgdata
  Rounding up size to full physical extent 1.80 TiB
  Logical volume "data" created.

# 使用lvdisplay 查看结果

5.4. 格式化文件系统及挂载

# 查看磁盘信息
# fdisk -l
磁盘 /dev/mapper/vgdata-data:1979.1 GB, 1979124285440 字节,3865477120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

# 格式化成xfs, /dev/vgdata/data为上面 LV Path
mkfs.xfs /dev/vgdata/data

# mount
mkdir -p /data
mount /dev/vgdata/data /data

5.5. LVM扩容

LVM最大的优势就是其可伸缩性,伸缩性有更加偏重与扩容。扩容的实质是将 VG 中的空闲 PE 添加到 LV 中,所以只要 VG 中有空闲的 PE,就可以进行扩容。即使没有空闲 PE,也可以添加PV,将PV加入到VG中增加空闲PE。

扩容的两个关键步骤:

(1)使用 lvextend 或 lvresize 添加更多的 PE 或容量到 LV

(2)使用 resize2fs命令(xfs 使用 xfs_growfs)将 LV 增加后的容量添加到对应的文件系统中(此过程是修改文件系统而非LVM内容)

6. LVM相关命令

6.1. 管理 PV

功能命令
创建 PVpvcreate
扫描并列出所有 PVpvscan
列出 PV 属性pvdisplay {name|size}
移除 PVpvremove
移动 PV 中的数据pvmove

6.2. 管理 VG

功能命令
创建 VGvgcreate
扫描并列出所有 VGvgscan
列出 VG 属性信息vgdisplay
移除(删除)VGvgremove
从 VG 中移除 PVvgreduce
将 PV 添加到 VG 中vgextend
修改 VG 属性vgchange

6.3. 管理 LV

功能命令
创建 LVlvcreate
扫描并列出所有 LVlvscan
列出 LV 属性信息lvdisplay
移除 LVlvremove
缩小 LV 容量lvreduce/lvresize
增大 LV 容量lvextend/lvresize
调整 LV 容量lvresize

lvcreate命令

一般用法:lvcreate [-L size(M/G) | -l PEnum] -n lv_name vg_name

选项:

-L:根据大小创建 LV,即分配多少空间给此 LV

-l:根据 PE 的数量来创建 LV,即分配多少个 PE 给此 LV

-n:指定 LV 名称

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

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

相关文章

postgresql命令行基本操作指令

文章目录 前言一、psql下载安装二、未配置环境变量连接方式1.可视化工具2. 命令行操作连接到postgreSQL 三、配置环境变量四、常用操作指令1. 连接数据库2. 查看数据库3. 创建数据库4. 切换数据库5. 创建数据库表结构6. 查看表结构7. 查看所有的表8. 插入数据9. 查看数据10. 更…

YOLOv8改进 | 主干网络 | C2f融合动态卷积模块ODConv

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40篇内容,内含各种Head检测头、损失函数Loss、…

Open3D 点云CPD算法配准(粗配准)

目录 一、概述 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2配准后点云 一、概述 在Open3D中,CPD(Coherent Point Drift,一致性点漂移)算法是一种经典的点云配准方法,适用于无序点云的非…

Top 5 免费 PDF 转 Word 转换工具

PDF 是可移植文档格式的缩写,是一种文件格式,用于独立于软件、硬件或操作系统可靠地呈现和交换文档。PDF 不是为编辑而设计的,因此如果您想更改某些内容,可能需要将 PDF 转换为 Word/Doc 转换器。 Top 5 免费 PDF 转 Word 转换工具…

OFDM关键技术——ICI消除技术

ICI消除算法可以分为以下几类: 1、OFDM符号长度和载波间隔的最优选择,较短的符号周期更有利于降低ICI 2、OFDM基信号的最佳选择,选择频域衰减更快的OFDM基带脉冲 3、自干扰消除技术,将信息调制到一组子载波上 4、频域均衡器&a…

电影交流平台小程序的设计

管理员账户功能包括:系统首页,个人中心,电影类型管理,留言反馈管理,电影中心管理,系统管理 微信端账号功能包括:系统首页,电影中心,留言反馈 开发系统:Window…

Rust Eq 和 PartialEq

Eq 和 PartialEq 在 Rust 中&#xff0c;想要重载操作符&#xff0c;你就需要实现对应的特征。 例如 <、<、> 和 > 需要实现 PartialOrd 特征: use std::fmt::Display;struct Pair<T> {x: T,y: T, }impl<T> Pair<T> {fn new(x: T, y: T) ->…

iptable精讲

SNAT策略 SNAT策略的典型应用环境 局域网主机共享单个公网IP地址接入Internet SNAT策略的原理 源地址转换&#xff0c;Source Network Address Translantion 修改数据包的源地址 部署SNAT策略 1.准备二台最小化虚拟机修改主机名 主机名&#xff1a;gw 主机名&#xff1…

WPF布局控件

目录 Grid StackPanel WrapPanel DockPanel UniformGrid Canvas&InkCanvas Canvas InkCanvas Border Grid 属性 ShowGridLines&#xff1a;显示边线 ColumnDefinitions 列集合 表示有几列下面就写几个ColumnDefinition Width 宽&#xff1a;如果写具体数字则表…

【面试题】IPS(入侵防御系统)和IDS(入侵检测系统)的区别

IPS&#xff08;入侵防御系统&#xff09;和IDS&#xff08;入侵检测系统&#xff09;在网络安全领域扮演着不同的角色&#xff0c;它们之间的主要区别可以归纳如下&#xff1a; 功能差异&#xff1a; IPS&#xff1a;这是一种主动防护设备&#xff0c;不仅具备检测攻击的能力&…

UNet进行病理图像分割

数据集链接&#xff1a;https://pan.baidu.com/s/1IBe_P0AyHgZC39NqzOxZhA?pwdnztc 提取码&#xff1a;nztc UNet模型 import torch import torch.nn as nnclass conv_block(nn.Module):def __init__(self, ch_in, ch_out):super(conv_block, self).__init__()self.conv nn…

JVM原理(十):JVM虚拟机调优分析与实战

1. 大内存硬件上的程序部署策略 这是笔者很久之前处理过的一个案例&#xff0c;但今天仍然具有代表性。一个15万PV/日左右的在线文档类型网站最近更换了硬件系统&#xff0c;服务器的硬件为四路志强处理器、16GB物理内存&#xff0c;操作系统为64位CentOS5.4&#xff0c;Resin…

Android Studio 解决AAPT: error: file failed to compile

1.找到项目下的build.gradle 2.在android语块中添加下面代码 aaptOptions.cruncherEnabled false aaptOptions.useNewCruncher false 12

Linux中的库

什么是库&#xff1f; 库是一组预先编译好的方法/函数的集合&#xff0c;其他程序想要使用源文件中的函数时&#xff0c;只需在编译可执行程序时&#xff0c;链接上该源文件生成的库文件即可。 库分为两类&#xff1a;静态库和动态库 在Linux系统中&#xff0c;以.a为后缀的…

力扣热100 哈希

哈希 1. 两数之和49.字母异位词分组128.最长连续序列 1. 两数之和 题目&#xff1a;给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案。…

【NOI-题解】1326. 需要安排几位师傅加工零件1228. 排队打水问题1229. 拦截导弹的系统数量求解

文章目录 一、前言二、问题问题&#xff1a;1326. 需要安排几位师傅加工零件问题&#xff1a;1228. 排队打水问题问题&#xff1a;1229. 拦截导弹的系统数量求解 三、感谢 一、前言 本章节主要对贪心问题进行讲解&#xff0c;包括《1326. 需要安排几位师傅加工零件》《1228. 排…

每天五分钟深度学习:解决for循环效率慢的关键在于向量化

本文重点 上一节课程中,我们学习了多样本的线性回归模型,但是我们的伪代码实现中使用了大量的for循环,这样代码的问题是效率很低。为了克服这一瓶颈,向量化技术应运而生,成为提升程序执行效率、加速数据处理速度的重要手段。 向量化技术概述 向量化(Vectorization)是…

目标检测算法讲解:从传统方法到深度学习,全面解析检测技术的演进与应用!

在计算机视觉领域&#xff0c;目标检测是一个基本且关键的任务&#xff0c;它不仅涉及图像中对象的识别&#xff0c;还包括确定这些对象的具体位置。这一任务通常通过算法来实现&#xff0c;这些算法能够识别出图像中的一个或多个目标&#xff0c;并给出每个目标的类别和位置。…

Kafka-服务端-网络层-源码流程

整体架构如下所示&#xff1a; responseQueue不在RequestChannel中&#xff0c;在Processor中&#xff0c;每个Processor内部有一个responseQueue 客户端发送的请求被Acceptor转发给Processor处理处理器将请求放到RequestChannel的requestQueue中KafkaRequestHandler取出reque…

Python:Python简介

一、Python简介 1.Python的诞生 诞生&#xff1a;1989年圣诞节期间&#xff0c;Guido van Rossum为了打发圣诞节假期的无聊&#xff0c;便开始了Python语言的编写。 命名&#xff1a;Python第一个发行版本是在1991年&#xff0c;起名为Python是源自于Guido喜欢的一档电视节目…