CentOS/RHEL LVM 磁盘扩展完整教程
CentOS/RHEL LVM 磁盘扩展完整教程
📝 前言
在Linux系统管理中,磁盘空间不足是经常遇到的问题。特别是在生产环境中,当根分区空间告急时,我们需要通过添加新磁盘来扩展存储空间。本教程将详细介绍如何在CentOS/RHEL系统中使用LVM(Logical Volume Manager)来扩展现有的逻辑卷。
🎯 适用场景
- 根分区磁盘空间不足(使用率超过80%)
- 系统使用LVM管理磁盘
- 需要在线扩展磁盘空间而不停机
- 有新的物理磁盘可以添加到系统
📚 LVM 基础概念
LVM 三层架构
物理磁盘 → 物理卷(PV) → 卷组(VG) → 逻辑卷(LV) → 文件系统
- 物理卷(Physical Volume, PV):实际的物理磁盘或分区
- 卷组(Volume Group, VG):多个物理卷组成的存储池
- 逻辑卷(Logical Volume, LV):从卷组中分配的逻辑存储单元
LVM 的优势
- 灵活性:可以动态调整分区大小
- 扩展性:可以跨多个物理磁盘
- 快照功能:支持创建快照备份
- 在线操作:大多数操作可以在不停机的情况下进行
🔍 准备工作:识别可用磁盘
1. 查看系统磁盘状态
# 查看磁盘分区信息
lsblk -l# 查看磁盘使用情况
df -h# 查看磁盘详细信息
fdisk -l
命令说明:
-
lsblk -l
:以列表形式显示所有块设备
-
df -h
:显示文件系统磁盘使用情况,-h
参数以人类可读格式显示
-
fdisk -l
:列出所有磁盘和分区的详细信息
2. 识别可扩展的磁盘
查看 lsblk
输出,寻找以下特征的磁盘:
- 未挂载的磁盘:MOUNTPOINT 列为空
- 未分区的磁盘:只显示磁盘本身,没有分区(如 sdc 但没有 sdc1)
- 足够大的磁盘:SIZE 列显示的容量满足需求
3. 查看当前LVM状态
# 查看物理卷
pvs
pvdisplay# 查看卷组
vgs
vgdisplay# 查看逻辑卷
lvs
lvdisplay
命令说明:
-
pvs
/pvdisplay
:显示物理卷信息,pvs
简洁格式,pvdisplay
详细格式
-
vgs
/vgdisplay
:显示卷组信息和可用空间
-
lvs
/lvdisplay
:显示逻辑卷信息和使用情况
🛠️ 磁盘扩展详细步骤
步骤1:确认文件系统类型
# 方法1:查看挂载信息
mount | grep " / "# 方法2:显示文件系统类型
df -T /# 方法3:显示块设备文件系统
lsblk -f
为什么需要确认文件系统类型?
- 不同文件系统使用不同的扩展命令
- 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
命令作用:
pvcreate
:将分区初始化为LVM物理卷- 在分区上创建LVM元数据
- 使分区能够被LVM管理
步骤4:扩展卷组
# 查看现有卷组名称
vgdisplay# 将新物理卷添加到卷组(假设卷组名为 centos_centos)
vgextend centos_centos /dev/sdc1# 验证卷组扩展成功
vgs
命令作用:
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
参数说明:
-l +100%FREE
:使用卷组中所有可用空间-L +500G
:指定增加500G空间-L 1T
:指定总大小为1T
步骤6:扩展文件系统
# 对于 XFS 文件系统(CentOS 7/8 默认)
xfs_growfs /# 对于 EXT4 文件系统
# resize2fs /dev/mapper/centos_centos-root
命令作用:
xfs_growfs
:扩展XFS文件系统到逻辑卷的完整大小resize2fs
:扩展EXT4文件系统- 必须在逻辑卷扩展后执行,否则新空间无法使用
步骤7:验证扩展结果
# 查看磁盘使用情况
df -h# 查看LVM状态
lvs
vgs
pvs# 查看详细的挂载信息
mount | grep mapper
📊 操作前后对比示例
扩展前:
[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系统管理中的常见操作,掌握这项技能对系统管理员来说非常重要。通过本教程,你应该能够:
- 理解LVM架构:掌握PV、VG、LV的概念和关系
- 识别可用磁盘:使用各种命令查看和分析磁盘状态
- 执行扩展操作:按步骤完成完整的磁盘扩展过程
- 处理常见问题:识别和解决扩展过程中的常见错误
磁盘操作具有一定风险,建议在生产环境操作前先在测试环境中练习