OpenEuler LVM 扩容操作指南
目录
概述
LVM(Logical Volume Manager,逻辑卷管理)是Linux系统中用于管理磁盘分区的工具。在OpenEuler系统中,LVM提供了灵活的磁盘管理能力,支持在线扩容、快照等功能。
准备工作
查看系统状态
# 查看磁盘信息
fdisk -l
lsblk
# 查看LVM状态
pvs # 物理卷信息
vgs # 卷组信息
lvs # 逻辑卷信息
pvdisplay # 详细物理卷信息
vgdisplay # 详细卷组信息
lvdisplay # 详细逻辑卷信息
# 查看文件系统使用情况
df -h
df -T # 显示文件系统类型
扩容场景与方法
场景1:卷组有剩余空间时扩展逻辑卷
# 1. 查看卷组剩余空间
vgdisplay
# 2. 扩展逻辑卷
# 方式A:增加指定大小
lvextend -L +10G /dev/vgname/lvname
# 方式B:扩展到指定大小
lvextend -L 50G /dev/vgname/lvname
# 方式C:使用所有剩余空间
lvextend -l +100%FREE /dev/vgname/lvname
# 3. 扩展文件系统
# EXT2/3/4文件系统
resize2fs /dev/vgname/lvname
# XFS文件系统
xfs_growfs /mount/point
# 4. 一键扩展(自动调整文件系统)
lvextend -r -L +10G /dev/vgname/lvname
场景2:添加新物理卷扩容卷组
# 1. 准备新磁盘或分区
fdisk /dev/sdb # 创建分区,类型设置为8e(Linux LVM)
# 2. 创建物理卷
pvcreate /dev/sdb1
# 3. 扩展卷组
vgextend vgname /dev/sdb1
# 4. 扩展逻辑卷
lvextend -L +10G /dev/vgname/lvname
resize2fs /dev/vgname/lvname
场景3:扩展现有物理卷
# 当磁盘容量增加后(如虚拟机扩展磁盘)
# 1. 重新扫描磁盘
echo 1 > /sys/class/block/sda/device/rescan
# 2. 调整分区大小(如使用分区)
parted /dev/sda resizepart 2 100%
# 3. 扩展物理卷
pvresize /dev/sda1
# 4. 扩展逻辑卷
lvextend -l +100%FREE /dev/vgname/lvname
resize2fs /dev/vgname/lvname
场景4:基于示例的扩容
根据提供的示例信息:
PV: /dev/nvme0n1p3
VG: openeuler
空闲空间: 492.00GB
扩容步骤:
# 1. 查看逻辑卷信息
lvs
lvdisplay
# 2. 查看文件系统挂载情况
df -h
# 3. 扩展逻辑卷(如扩展根分区)
lvextend -r -l +100%FREE /dev/openeuler/root
# 4. 验证扩展结果
df -h
具体操作示例
示例1:将根分区扩展20GB
# 查看当前状态
df -h /
lvdisplay /dev/openeuler/root
# 扩展逻辑卷
lvextend -L +20G /dev/openeuler/root
# 扩展文件系统(XFS)
xfs_growfs /
# 验证结果
df -h /
示例2:使用所有空闲空间扩展home分区
# 查看卷组空闲空间
vgdisplay openeuler
# 扩展home逻辑卷
lvextend -r -l +100%FREE /dev/openeuler/home
# 验证
df -h /home
自动扩容脚本
#!/bin/bash
# auto_lvm_extend.sh
# 自动扩展LVM逻辑卷
VG_NAME="openeuler"
LV_NAME="root"
MOUNT_POINT="/"
FS_TYPE="xfs"
# 检查是否以root运行
if [ "$EUID" -ne 0 ]; then
echo "请使用root权限运行此脚本"
exit 1
fi
# 扩展逻辑卷
echo "正在扩展逻辑卷..."
lvextend -l +100%FREE /dev/${VG_NAME}/${LV_NAME}
# 根据文件系统类型调整大小
case $FS_TYPE in
xfs)
echo "扩展XFS文件系统..."
xfs_growfs ${MOUNT_POINT}
;;
ext4|ext3)
echo "扩展EXT文件系统..."
resize2fs /dev/${VG_NAME}/${LV_NAME}
;;
*)
echo "不支持的文件系统类型: $FS_TYPE"
exit 1
;;
esac
echo "扩容完成!"
echo "当前磁盘使用情况:"
df -h ${MOUNT_POINT}
注意事项
1. 数据安全
- 扩容前务必备份重要数据
- 确保有可靠的系统恢复方案
2. 操作顺序
- 先扩展LVM逻辑卷,再扩展文件系统
- XFS文件系统必须在挂载状态下扩展
3. 系统兼容性
- 确认内核和LVM工具版本兼容性
- 部分旧版本可能需要重启
4. 性能影响
- 大容量扩展时可能影响系统性能
- 建议在业务低峰期操作
5. 特殊场景
- 有LVM快照时需要特殊处理
- RAID配置下可能需要额外步骤
故障排查
1. LVM命令失败
# 重新扫描LVM配置
vgscan
vgchange -ay
# 检查设备映射
dmsetup table
ls -la /dev/mapper/
2. 文件系统扩展失败
# 检查文件系统错误
# XFS文件系统
xfs_repair -n /dev/vgname/lvname
# EXT文件系统
e2fsck -f /dev/vgname/lvname
# 强制修复(谨慎使用)
xfs_repair /dev/vgname/lvname
3. 查看系统日志
# 查看内核日志
dmesg | grep -i lvm
dmesg | grep -i dm
# 查看系统日志
journalctl -k | grep -i lvm
journalctl -f # 实时监控
4. 常见错误及解决
| 错误信息 | 可能原因 | 解决方案 |
|---|---|---|
| "Couldn't find device" | 设备未识别 | 执行pvscan或重启 |
| "Insufficient free space" | 卷组空间不足 | 添加新物理卷 |
| "Filesystem is mounted" | 文件系统已挂载 | 对于XFS是正常的 |
| "Bad magic number" | 文件系统损坏 | 运行文件系统检查 |
附录:常见命令速查
物理卷操作
pvcreate /dev/sdb1 # 创建物理卷
pvdisplay # 显示物理卷信息
pvremove /dev/sdb1 # 删除物理卷
pvmove /dev/sdb1 # 迁移物理卷数据
卷组操作
vgcreate vgname /dev/sdb1 # 创建卷组
vgextend vgname /dev/sdc1 # 扩展卷组
vgreduce vgname /dev/sdb1 # 缩减卷组
vgremove vgname # 删除卷组
逻辑卷操作
lvcreate -L 10G -n lvname vgname # 创建逻辑卷
lvextend -L +5G /dev/vgname/lvname # 扩展逻辑卷
lvreduce -L -5G /dev/vgname/lvname # 缩减逻辑卷(谨慎)
lvremove /dev/vgname/lvname # 删除逻辑卷
文件系统操作
# 创建文件系统
mkfs.xfs /dev/vgname/lvname
mkfs.ext4 /dev/vgname/lvname
# 检查文件系统
xfs_repair /dev/vgname/lvname
fsck.ext4 /dev/vgname/lvname
文档版本: 1.0
最后更新: 2024年
适用系统: OpenEuler 20.03 LTS及以上版本
注意:本文档仅供参考,实际操作前请确保已充分理解相关命令并已备份重要数据。