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

CentOS/RHEL LVM 磁盘扩展完整教程

CentOS/RHEL LVM 磁盘扩展完整教程

📝 前言

在Linux系统管理中,磁盘空间不足是经常遇到的问题。特别是在生产环境中,当根分区空间告急时,我们需要通过添加新磁盘来扩展存储空间。本教程将详细介绍如何在CentOS/RHEL系统中使用LVM(Logical Volume Manager)来扩展现有的逻辑卷。

🎯 适用场景

  • 根分区磁盘空间不足(使用率超过80%)
  • 系统使用LVM管理磁盘
  • 需要在线扩展磁盘空间而不停机
  • 有新的物理磁盘可以添加到系统

📚 LVM 基础概念

LVM 三层架构

物理磁盘 → 物理卷(PV) → 卷组(VG) → 逻辑卷(LV) → 文件系统
  1. 物理卷(Physical Volume, PV):实际的物理磁盘或分区
  2. 卷组(Volume Group, VG):多个物理卷组成的存储池
  3. 逻辑卷(Logical Volume, LV):从卷组中分配的逻辑存储单元

LVM 的优势

  • 灵活性:可以动态调整分区大小
  • 扩展性:可以跨多个物理磁盘
  • 快照功能:支持创建快照备份
  • 在线操作:大多数操作可以在不停机的情况下进行

🔍 准备工作:识别可用磁盘

1. 查看系统磁盘状态

# 查看磁盘分区信息
lsblk -l# 查看磁盘使用情况
df -h# 查看磁盘详细信息
fdisk -l

命令说明:

  • lsblk -l:以列表形式显示所有块设备
    image-20250709180854614

  • df -h:显示文件系统磁盘使用情况,-h 参数以人类可读格式显示
    image-20250709180920952

  • fdisk -l:列出所有磁盘和分区的详细信息

    image-20250709180949783

2. 识别可扩展的磁盘

查看 lsblk 输出,寻找以下特征的磁盘:

  • 未挂载的磁盘:MOUNTPOINT 列为空
  • 未分区的磁盘:只显示磁盘本身,没有分区(如 sdc 但没有 sdc1)
  • 足够大的磁盘:SIZE 列显示的容量满足需求

3. 查看当前LVM状态

# 查看物理卷
pvs
pvdisplay# 查看卷组
vgs  
vgdisplay# 查看逻辑卷
lvs
lvdisplay

命令说明:

  • pvs/pvdisplay:显示物理卷信息,pvs 简洁格式,pvdisplay 详细格式
    image-20250709181130511

  • vgs/vgdisplay:显示卷组信息和可用空间
    image-20250709181114464

  • lvs/lvdisplay:显示逻辑卷信息和使用情况

    image-20250709181201116

🛠️ 磁盘扩展详细步骤

步骤1:确认文件系统类型

# 方法1:查看挂载信息
mount | grep " / "# 方法2:显示文件系统类型
df -T /# 方法3:显示块设备文件系统
lsblk -f

image-20250709181309453
为什么需要确认文件系统类型?

  • 不同文件系统使用不同的扩展命令
  • XFS 使用 xfs_growfs
  • EXT4 使用 resize2fs

步骤2:对新磁盘进行分区

# 使用 fdisk 对磁盘进行分区(假设新磁盘为 /dev/sdc)
fdisk /dev/sdc

在 fdisk 交互界面中的操作:

命令 (m 为帮助): n        # 创建新分区
分区类型: p              # 主分区
分区号: 1                # 分区号为1
起始扇区: 回车            # 使用默认值
结束扇区: 回车            # 使用整个磁盘
命令 (m 为帮助): t        # 修改分区类型
分区号: 1                # 选择分区1
分区类型: 8e             # LVM类型
命令 (m 为帮助): w        # 写入分区表并退出

步骤作用:

  • 创建分区表,让系统能够识别磁盘
  • 设置分区类型为 LVM (8e),便于后续操作
  • 建议使用整个磁盘作为一个分区

步骤3:创建物理卷

# 创建物理卷
pvcreate /dev/sdc1# 验证物理卷创建成功
pvs

image-20250709181418800
命令作用:

  • pvcreate:将分区初始化为LVM物理卷
  • 在分区上创建LVM元数据
  • 使分区能够被LVM管理

步骤4:扩展卷组

# 查看现有卷组名称
vgdisplay# 将新物理卷添加到卷组(假设卷组名为 centos_centos)
vgextend centos_centos /dev/sdc1# 验证卷组扩展成功
vgs

image-20250709181510867
命令作用:

  • vgextend:将新的物理卷添加到现有卷组
  • 增加卷组的总容量
  • 为后续逻辑卷扩展提供空间

步骤5:扩展逻辑卷

# 查看卷组可用空间
vgdisplay centos_centos# 方法1:使用所有可用空间扩展逻辑卷
lvextend -l +100%FREE /dev/mapper/centos_centos-root# 方法2:指定扩展大小(例如500G)
# lvextend -L +500G /dev/mapper/centos_centos-root# 验证逻辑卷扩展成功
lvs

image-20250709181643430
参数说明:

  • -l +100%FREE:使用卷组中所有可用空间
  • -L +500G:指定增加500G空间
  • -L 1T:指定总大小为1T

步骤6:扩展文件系统

# 对于 XFS 文件系统(CentOS 7/8 默认)
xfs_growfs /# 对于 EXT4 文件系统
# resize2fs /dev/mapper/centos_centos-root

image-20250709181707009
命令作用:

  • xfs_growfs:扩展XFS文件系统到逻辑卷的完整大小
  • resize2fs:扩展EXT4文件系统
  • 必须在逻辑卷扩展后执行,否则新空间无法使用

步骤7:验证扩展结果

# 查看磁盘使用情况
df -h# 查看LVM状态
lvs
vgs
pvs# 查看详细的挂载信息
mount | grep mapper

image-20250709181729736

📊 操作前后对比示例

扩展前:

[root@centos ~]# df -h
/dev/mapper/centos_centos-root  641G  601G   41G  94% /[root@centos ~]# vgs
VG            #PV #LV #SN Attr   VSize   VFree
centos_centos   2   2   0 wz--n- 648.99g    0

扩展后:

[root@centos ~]# df -h
/dev/mapper/centos_centos-root  1.2T  601G  541G  53% /[root@centos ~]# vgs
VG            #PV #LV #SN Attr   VSize VFree
centos_centos   3   2   0 wz--n- 1.12t    0

⚠️ 重要注意事项

1. 备份数据

# 创建重要数据备份
tar -czf /tmp/important_data_backup.tar.gz /path/to/important/data# 或使用 rsync 同步到其他服务器
rsync -avz /important/data/ user@backup-server:/backup/path/

2. 确认磁盘没有被使用

# 检查磁盘是否被挂载
mount | grep sdc# 检查磁盘是否有文件系统
blkid /dev/sdc# 确认磁盘不在fstab中
grep sdc /etc/fstab

🔧 故障排除

常见错误及解决方案

1. 分区表错误
错误:Device or resource busy
解决:umount /dev/sdc1 或重启系统
2. 物理卷创建失败
错误:Device /dev/sdc1 not found or ignored by filtering
解决:partprobe /dev/sdc  # 重新读取分区表
3. 文件系统扩展失败
错误:xfs_growfs: /dev/mapper/centos_centos-root is not a mounted XFS filesystem
解决:确认文件系统类型和挂载点正确

回滚操作(如果需要)

# 如果需要移除新添加的磁盘
vgreduce centos_centos /dev/sdc1
pvremove /dev/sdc1

📝 一键脚本示例

#!/bin/bash
# LVM 扩展自动化脚本DISK="/dev/sdc"
VG_NAME="centos_centos"
LV_PATH="/dev/mapper/centos_centos-root"echo "开始LVM磁盘扩展..."# 1. 分区
echo "正在对 $DISK 进行分区..."
(
echo n
echo p
echo 1
echo
echo
echo t
echo 8e
echo w
) | fdisk $DISK# 2. 创建物理卷
echo "创建物理卷..."
pvcreate ${DISK}1# 3. 扩展卷组
echo "扩展卷组..."
vgextend $VG_NAME ${DISK}1# 4. 扩展逻辑卷
echo "扩展逻辑卷..."
lvextend -l +100%FREE $LV_PATH# 5. 扩展文件系统
echo "扩展文件系统..."
xfs_growfs /echo "扩展完成!"
df -h /

🎉 总结

LVM磁盘扩展是Linux系统管理中的常见操作,掌握这项技能对系统管理员来说非常重要。通过本教程,你应该能够:

  1. 理解LVM架构:掌握PV、VG、LV的概念和关系
  2. 识别可用磁盘:使用各种命令查看和分析磁盘状态
  3. 执行扩展操作:按步骤完成完整的磁盘扩展过程
  4. 处理常见问题:识别和解决扩展过程中的常见错误

磁盘操作具有一定风险,建议在生产环境操作前先在测试环境中练习

http://www.dtcms.com/a/271570.html

相关文章:

  • 数学模型:十大距离
  • 小程序软装: 组件库开发
  • 打造企业级数据治理运营体系:从项目到产品,再到体系化运营
  • 图像处理中的直方图均衡化:原理与实现
  • 一天两道力扣(3)
  • 减少空间占用的生成模型实战与推理资源消耗量化对比
  • CTFHub————Web[信息泄露(目录遍历、PHPINFO)]
  • Windows Subsystem for Linux (WSL):现代开发的终极跨平台方案
  • 【Modern C++ Part7】_创建对象时使用()和{}的区别
  • 计算机嵌入式基础
  • SpringCache整合SpringBoot使用
  • 洛谷P1044 栈(学习向)
  • Unity Demo-3DFarm详解-其一
  • TCP协议格式与连接释放
  • 智能Agent场景实战指南 Day 8:销售助手Agent开发实战
  • 25春云曦期末考复现
  • “上下文工程”领域的部分参考资料
  • vue中v-for与v-if的优先级
  • 在已有 Nexus3 的基础上搭建 Docker 私有镜像仓库
  • 如何降低AIGC的有效策略是什么?降AIGC工具的创新与应用前景
  • 如何识别SQL Server中需要添加索引的查询
  • 3 STM32单片机-delay延时驱动
  • langchain从入门到精通(四十)——函数调用技巧与流程
  • 什么是公链?
  • 如何通过配置gitee实现Claude Code的版本管理
  • huggingface 笔记: Trainer
  • 期权盘位是什么意思?
  • 一级缓存与二级缓存深度剖析:作用域、配置与同步方案全解析
  • Unreal Engine 自动设置图像
  • 基于OpenCV的实时人脸检测系统实现指南 ——Python+Haar级联分类器从环境搭建到完整部署