当前位置: 首页 > news >正文

如何创建逻辑卷

1. 逻辑卷管理器(LVM)

本质:是 Linux 系统中对磁盘分区进行管理的一种机制,通过在物理存储和文件系统之间增加一个抽象层,实现存储资源的动态管理。

  • 突破传统分区的限制:传统分区一旦创建,大小固定且难以调整;LVM 允许在线调整存储大小(无需卸载文件系统)。
  • 灵活分配空间:可以将多个物理设备的存储空间整合为一个 "存储池",再按需分配给不同的应用。
  • 简化管理:通过统一的命令集管理所有存储设备,无需关心底层物理设备的具体位置和数量。

工作模型:物理设备 → 物理卷(PV) → 卷组(VG) → 逻辑卷(LV) → 文件系统 → 挂载使用

2. 物理设备(Physical Device)

定义:LVM 管理的底层存储硬件,是构建 LVM 的基础。

常见类型

  • 磁盘分区(如/dev/sda1/dev/vdb2
  • 完整磁盘(如/dev/sdb,无需分区直接使用)
  • RAID 阵列(如硬件 RAID 卡创建的逻辑盘/dev/md0
  • 网络存储设备(如 iSCSI、FC 连接的远程磁盘

3. 物理卷(PV, Physical Volume)

定义:经过 LVM 初始化处理的物理设备,是 LVM 管理的基本单元。

常用操作命令

  • pvcreate /dev/sdb1:将分区初始化为 PV
  • pvs 或 pvdisplay:查看 PV 信息

4. 卷组(VG, Volume Group)

定义:由一个或多个 PV 组成的 "存储池",是 LVM 中资源整合的核心层。

核心作用

  • 将多个 PV 的存储空间合并,屏蔽底层物理设备的差异,形成一个统一的地址空间。
  • 提供空闲空间(Free PE),供创建或扩展逻辑卷(LV)使用。

关键参数

  • PE 大小:VG 创建时指定(如-s 8M),决定了该 VG 中所有 PV 的 PE 大小,且创建后不可修改。
  • 总 PE 数:所有 PV 的 PE 总和,代表 VG 的总容量(总 PE 数 × PE 大小 = VG 总容量)。
  • 空闲 PE 数:未被分配给 LV 的 PE 数量,决定了可扩展或新建 LV 的最大空间。

常用操作命令

  • vgcreate myvg /dev/sdb1 /dev/sdc:用两个 PV 创建名为 myvg 的卷组
  • vgs 或 vgdisplay:查看 VG 信息
  • vgextend myvg /dev/sdd:向卷组添加新的 PV(扩容卷组)

5. 逻辑卷(LV, Logical Volume)

定义:从 VG 的空闲 PE 中分配的存储空间,相当于传统分区,但具备动态调整能力。

内部结构

  • 逻辑区块(LE, Logical Extent):LV 被划分为与 PE 大小相同的 LE,每个 LE 会映射到 VG 中一个或多个 PE(取决于 LV 的配置,如镜像模式下 1 个 LE 映射 2 个 PE)。

关键特性

  • 可动态调整大小:通过lvextend(扩展)或lvreduce(缩减)命令调整 LV 大小(需配合文件系统工具)。
  • 可灵活挂载:LV 创建后需格式化(如mkfs.xfs)为文件系统,再挂载到目录(如/mnt/data)使用。
  • 支持多种功能:如快照(lvcreate -s)、镜像(lvcreate -m)、条带化(lvcreate -i)等高级特性。

常用操作命令

  • lvcreate -L 10G -n mylv myvg:从 myvg 中创建 10G 的名为 mylv 的 LV
  • lvs 或 lvdisplay:查看 LV 信息
  • lvextend -L +5G /dev/myvg/mylv:给 LV 增加 5G 空间

概念关系总结

物理设备(如/dev/sdb1)↓(pvcreate初始化)
物理卷(PV)→ 被划分为物理区块(PE)↓(vgcreate整合)
卷组(VG)→ 由多个PV的PE组成统一存储池↓(lvcreate分配)
逻辑卷(LV)→ 由LE组成,LE映射到VG中的PE↓(mkfs格式化)
文件系统(如ext4、xfs)↓(mount挂载)
最终供用户/应用使用的目录(如/home、/data)

通过这种层级结构,LVM 实现了存储资源的灵活管理,特别适合需要动态调整存储空间的场景。

如何创建逻辑卷

在 Linux 系统中,使用逻辑卷管理器(LVM)创建逻辑卷,通常需要以下几个步骤,这里以 CentOS/RHEL 系统为例进行讲解,不同的 Linux 发行版操作命令基本相同,不过在个别细节上可能略有差异:

步骤 1:准备物理存储设备

逻辑卷使用的物理存储设备可以是磁盘分区、整个磁盘、RAID 阵列或者 SAN 磁盘。这里以磁盘分区为例,假设你已经有了未使用的磁盘分区 ,比如 /dev/sdb1,你可以使用 fdisk -l 命令查看磁盘和分区信息,确认该分区尚未被使用且状态正常:

fdisk -l

步骤 2:将物理设备初始化为物理卷(PV)

使用 pvcreate 命令将准备好的物理存储设备初始化为物理卷。例如,要将 /dev/sdb1 初始化为物理卷,可以执行以下命令:

pvcreate /dev/sdb1

执行该命令后,会在 /dev/sdb1 上创建物理卷元数据,将其纳入 LVM 的管理范围。你可以使用 pvs 或 pvdisplay 命令查看物理卷的详细信息:

pvs
# 或者
pvdisplay

步骤 3:创建卷组(VG)

使用 vgcreate 命令将一个或多个物理卷组合成一个卷组,卷组是一个存储池,可以为后续创建逻辑卷提供空间。假设要创建一个名为 myvg 的卷组,并将之前创建的 /dev/sdb1 物理卷添加到该卷组中,执行以下命令:

vgcreate myvg /dev/sdb1

你可以使用 vgs 或 vgdisplay 命令查看卷组的详细信息,包括卷组大小、空闲空间等:

vgs
# 或者
vgdisplay

步骤 4:创建逻辑卷(LV)

使用 lvcreate 命令从卷组中分配空间来创建逻辑卷。以下是两种常见的创建逻辑卷的方式:

方式一:指定逻辑卷大小
如果要创建一个大小为 5GB,名为 mylv 的逻辑卷,可以执行以下命令:

lvcreate -L 5G -n mylv myvg

其中,-L 5G 表示指定逻辑卷的大小为 5GB ,-n mylv 用于指定逻辑卷的名称,最后的 myvg 是逻辑卷所属的卷组名称。

方式二:指定逻辑卷占用的物理区块(PE)数量
每个物理卷被划分为固定大小的物理区块(PE),默认大小是 4MB 。如果要根据 PE 数量来创建逻辑卷,比如创建一个占用 100 个 PE 的逻辑卷,可以使用 -l 参数,命令如下:

lvcreate -l 100 -n mylv myvg

步骤 5:格式化逻辑卷并挂载使用

逻辑卷创建完成后,需要格式化为文件系统才能被系统使用。例如,将逻辑卷格式化为 ext4 文件系统:

mkfs.ext4 /dev/myvg/mylv

然后,创建一个挂载点,比如 /data ,并将逻辑卷挂载到该挂载点:

mkdir /data
mount /dev/myvg/mylv /data

如果希望系统开机自动挂载该逻辑卷,可以编辑 /etc/fstab 文件,添加以下内容:

/dev/myvg/mylv /data ext4 defaults 0 0

通过以上步骤,你就成功创建并使用了逻辑卷。在实际使用中,你还可以根据需求对逻辑卷进行扩展、缩减、创建快照等操作。


文章转载自:

http://cfRD7tt9.nmwgd.cn
http://ClKiBYnW.nmwgd.cn
http://WBPJtGuF.nmwgd.cn
http://88PIHmrE.nmwgd.cn
http://jf6Razz5.nmwgd.cn
http://tOuc0oxu.nmwgd.cn
http://kB1FmiPI.nmwgd.cn
http://JvolQEk5.nmwgd.cn
http://0iS4UqtL.nmwgd.cn
http://DlpNroOf.nmwgd.cn
http://WwMAfNUc.nmwgd.cn
http://9aL5VtxL.nmwgd.cn
http://AKKkiLB0.nmwgd.cn
http://XYbKzpxm.nmwgd.cn
http://3nol27Yy.nmwgd.cn
http://CGC51ZJU.nmwgd.cn
http://DbUZ5IfZ.nmwgd.cn
http://07pm3N1e.nmwgd.cn
http://OTFGPuy4.nmwgd.cn
http://dOrhneb0.nmwgd.cn
http://SpPqi7IG.nmwgd.cn
http://9g1GIxct.nmwgd.cn
http://ju67ZoJf.nmwgd.cn
http://8HnXS6Bf.nmwgd.cn
http://tjrhq3YU.nmwgd.cn
http://qkarjoIm.nmwgd.cn
http://UbJ4cAQE.nmwgd.cn
http://RFn0SjXF.nmwgd.cn
http://QpM7bUPp.nmwgd.cn
http://VIlvMODv.nmwgd.cn
http://www.dtcms.com/a/363677.html

相关文章:

  • Shell脚本入门:从零到精通
  • 容器设备映射配置在海外云服务器GPU加速环境的实施规范
  • QML的focus与activeFocus
  • C++ 左值引用与右值引用介绍
  • MySQL数据库精研之旅第十五期:索引的 “潜规则”(下)
  • OpenCV Python
  • 0825-0829 | 大模型方向周报:多模态模型研究、训练与优化策略、安全与对齐等方向
  • SQL Server--提取性能最差的查询
  • 阿里云国际代理商:如何重置阿里云服务器密码?
  • 阿里云日志服务之WebTracking 小程序端 JavaScript SDK (阿里SDK埋点和原生uni.request请求冲突问题)
  • 现代CPU设计哲学——加载/存储(Load-Store)架构
  • 作为软件专业学生,我眼中新架构实践的‘稳’与‘进’
  • NLP学习系列 | Transformer代码简单实现
  • MySQL 事务隔离与 MVCC
  • 鸿蒙权限崩溃?一招解决闪退难题
  • 自建局域网gitlab如何修改提交时间
  • 365 天技术创作手记:从一行代码到四万同行者的相遇
  • 基本IP保护 Swagger UI 的中间件
  • Flutter doctor
  • 试用Augment编写python脚本实现智能家居3D环境交互响应
  • Vite + React + Tailwind v4 正确配置指南(避免掉进 v3 的老坑)
  • MyBatis 日志与调试技巧:让 SQL 执行过程完全透明
  • Node.js 命令行交互王者:inquirer 模块实战指南
  • 你们公司的 QPS 是怎么统计出来的?这 5 种常见方法我踩过一半的坑!
  • LazyLLM教程 | 第7讲:检索升级实践:亲手打造“更聪明”的文档理解系统!
  • Text2SQL与DataAgent技术深度对比与实践指南
  • 【算法笔记 day six】二分算法的第三部分
  • Linux下Qt样式配置
  • Qt内存映射到文件,解决打开大文件占用内存高的问题
  • Qt5 多媒体大纲