惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
W
WeLiveSecurity
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
Google DeepMind News
Google DeepMind News
F
Full Disclosure
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Register - Security
The Register - Security
G
Google Developers Blog
C
Check Point Blog
GbyAI
GbyAI
A
About on SuperTechFans
V
Vulnerabilities – Threatpost
T
The Blog of Author Tim Ferriss
T
Tor Project blog
AWS News Blog
AWS News Blog
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
MongoDB | Blog
MongoDB | Blog
Latest news
Latest news
aimingoo的专栏
aimingoo的专栏
U
Unit 42
Y
Y Combinator Blog
P
Privacy International News Feed
Cisco Talos Blog
Cisco Talos Blog
S
Securelist
S
Schneier on Security
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Attack and Defense Labs
Attack and Defense Labs
P
Proofpoint News Feed
C
Cisco Blogs
Webroot Blog
Webroot Blog
T
Troy Hunt's Blog
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
P
Privacy & Cybersecurity Law Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
罗磊的独立博客
Cloudbric
Cloudbric
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hacker News: Ask HN
Hacker News: Ask HN
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Security Blog
Microsoft Security Blog

博客园 - 与f

微软的人机验证 docker运行hermes agent python使用docx库对在word中的表格合并操作 Python 项目创建+依赖管理+版本控制 百度飞桨PaddleOCR-VL识别发票图片输出json格式 大模型微调后导出,部署服务然后后端调用 openclaw的一些聊天配置 docker 部署 openclaw llama.cpp编译 微信小程序显示ai返回的markdown或html C#多端桌面程序(可跨平台) 主流 MySQL 热备份方案 基于SRS(Simple Realtime Server)+ CDN边缘节点加速3个nginx做文件分发1个nginx做负载均衡 一份基于SRS(Simple Realtime Server)+ CDN边缘节点srs edge加速的万人级直播部署清单 HLS(HTTP Live Streaming)标准的视频及加密和解密播放 HLS(HTTP Live Streaming)标准的视频及加密 使用Dockerfile创建一个hyperf容器做为开发环境 docker的hyperf框架docker-compose一键安装 通过vm虚拟中的docker 环境做开发 ubuntu 安装后ssh 连接到服务器 PHP Attributes 注解 centos 服务器查找一些字符串 Centos8网络配置小工具 Keepalive实现一个高可用负载均衡场景 Keepalived详解:原理、编译安装与高可用集群配置
lvm的概念和操作(linux)
与f · 2026-01-09 · via 博客园 - 与f

LVM(Logical Volume Manager,逻辑卷管理器)是 Linux 中一套非常强大、灵活的磁盘管理机制。它彻底改变了传统“一个分区 = 一个文件系统”的刚性模式,让你像搭积木一样自由组合、动态调整存储空间。

下面我用 通俗易懂 + 实战导向 的方式,带你从零搞懂 LVM 的核心概念和完整操作流程 

🌟 一、为什么需要 LVM?—— 先看痛点

❌ 传统分区的困境:

  • 你给 /home 分了 50GB,结果用户数据暴涨到 60GB → 空间不足,只能重装或迁移数据
  • 你给 /var 分了 100GB,结果只用了 20GB → 大量空间浪费
  • 想扩容?必须停机、备份、重新分区、恢复……服务中断,风险高

✅ LVM 的优势:

  • 在线扩容/缩容:不用卸载分区(ext4 缩容除外),服务不中断
  • 跨物理磁盘:可以把 /dev/sdb 和 /dev/sdc 合并成一个“大池子”
  • 快照备份:秒级创建数据快照,升级前备份超安心
  • 弹性分配:今天给 A 应用 20GB,明天回收给 B 应用 30GB

💡 一句话理解 LVM
它把物理硬盘“虚拟化”成一个可伸缩的存储池,你从中“切蛋糕”(逻辑卷),想切多大就多大,还能随时改!

🧱 二、LVM 三层架构(核心概念)

LVM 采用 三层抽象结构,像搭积木一样层层构建:

物理磁盘/分区
     ↓
【物理卷 PV】 ← 最底层,原材料
     ↓
【卷组 VG】   ← 存储池(把多个 PV 合并)
     ↓
【逻辑卷 LV】 ← 虚拟分区(从 VG 切出来,直接挂载使用)
     ↓
文件系统(ext4/xfs)→ 挂载到 /data、/app 或扩容根目录等

1️⃣ 物理卷(PV, Physical Volume)

  • 是 LVM 的最底层单元
  • 可以是:
    • 整块硬盘(如 /dev/sdb
    • 硬盘分区(如 /dev/sda3,类型设为 8e
    • RAID 设备(如 /dev/md0
  • 创建后,LVM 会在其末尾写入元数据(不影响已有数据,但建议先清空)

2️⃣ 卷组(VG, Volume Group)

  • 由 1个或多个 PV 组成,形成一个统一的存储池
  • 所有 PV 的空间被合并,VG 总容量 = 所有 PV 容量之和
  • 可随时添加新 PV 扩展 VG(比如加新硬盘)

3️⃣ 逻辑卷(LV, Logical Volume)

  • 从 VG 中“切”出来的虚拟分区
  • 可以格式化为 ext4、xfs 等文件系统
  • 直接挂载使用(如 mount /dev/vg_data/lv_app /app
  • 关键特性:大小可动态调整!

🔍 补充概念:

  • PE(Physical Extent):PV 中的最小分配单位,默认 4MB
  • LE(Logical Extent):LV 中的最小单位,与 PE 一一对应

🛠️ 三、LVM 基本操作流程

# 1. 创建物理卷(PV)
sudo pvcreate /dev/sdb1

# 2. 创建卷组(VG)
sudo vgcreate vg_data /dev/sdb1

# 3. 创建逻辑卷(LV)
sudo lvcreate -L 50G -n lv_app vg_data

# 4. 格式化或重新扩容
sudo mkfs.xfs /dev/vg_data/lv_app
或
resize2fs /dev/mapper/vg_node003-lv_root

# 5. 挂载(如果扩容就不用挂载了)
sudo mkdir /app
sudo mount /dev/vg_data/lv_app /app
 

四. 辅助命令(必会!)

命令作用
lsblk 查看所有块设备(磁盘+分区+挂载点)
df -Th 查看已挂载分区的使用情况
blkid 查看分区 UUID 和文件系统类型
mount /dev/sdXN /mnt 临时挂载分区
umount /mnt 卸载分区
pvs/pvdisplay 查看物理卷
vgs / vgdisplay 查看卷组
lvs / lvdisplay 查看逻辑卷
vgextend vg_node003 /dev/sdb 追加到已有卷组
lvextend -l +100%FREE /dev/mapper/vg_node003-lv_root 扩大跟目录或已有目录(df -Th可以查出名称)
resize2fs/xfs_growfs 扩大后,重新调整文件系统大小
sudo vgremove vg_old

删除空的 VG

 
操作作用
pvmove 在线迁移数据,不中断服务(核心!)
vgreduce 从 VG 中移除空 PV
vgextend 将 PV 加入新 VG
vgremove 删除空 VG

 一句话总结流程

新硬盘 → pvcreate → vgextend → (可选)lvextend + resize2fs/xfs_growfs

🛠️ 五、LVM 完整操作流程(实战演示)

假设你ubuntu系统本身已有硬盘/dev/sda(20G),再安装系统时已经做了lvm,已经给系统盘分10G左右,lv有8G空闲,现在要如下操作,

新增硬盘/dev/sdb( 20GB),追加到原有的vg中,全部分给根目录。

1.现在磁盘状态:

image

2.加硬盘

image

image

# 1. 扩容 VG(如有新盘)
sudo pvcreate /dev/sdb    #创建pv
#sudo vgcreate  YOUR_VG   #创建vg卷组
#sudo vgextend YOUR_VG /dev/sdb  #给已有卷组追加

sudo vgextend ubuntu-vg /dev/sdb #给已有卷组追加

# 2. 扩容 LV
#sudo lvextend -L +20G /dev/YOUR_VG/YOUR_LV  #给分区扩容
#sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv #扩容全部空间
sudo lvextend -L +20G /dev/mapper/ubuntu--vg-ubuntu--lv #给根目录扩容

# 3. 扩展文件系统
df -T / | awk 'NR==2 {print $2}' | \
  if grep -q "xfs"; then sudo xfs_growfs /; else sudo resize2fs /dev/YOUR_VG/YOUR_LV; fi

  resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv


# 4. 验证
df -h /

最后的结果

image

image