OpenEuler LVM 扩容操作指南

目录

  1. 概述
  2. 准备工作
  3. 扩容场景与方法
  4. 具体操作示例
  5. 自动扩容脚本
  6. 注意事项
  7. 故障排查
  8. 附录:常见命令速查

概述

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及以上版本

注意:本文档仅供参考,实际操作前请确保已充分理解相关命令并已备份重要数据。