LVM 操作小结

一、LVM 基本概念
1.1 LVM 组件
物理卷(PV):物理磁盘或分区

卷组(VG):一个或多个 PV 的集合

逻辑卷(LV):从 VG 中划分出的逻辑存储空间

物理扩展(PE):LVM 的最小存储单元

二、LVM 创建流程
2.1 准备物理磁盘/分区

# 查看磁盘信息
fdisk -l   
lsblk

# 使用 fdisk/gdisk 创建分区并标记为 LVM 类型
fdisk /dev/sdb
# 在 fdisk 中:t → 8e (LVM) 或 31 (Linux LVM)

#  在 fdisk 提示符下:
Command (m for help): n        # 输入 n 创建新分区
# 然后按提示选择分区类型(主分区 p 或扩展分区 e),分区号,起始扇区(默认即可),结束扇区或大小(如 +50G 或 直接回车用满全部空间)。

Command (m for help): p        # 输入 p 查看创建的分区表,确认无误

Command (m for help): t        # 可选:输入 t 更改分区类型(例如,改成 Linux 默认的 83,或 Windows 的 NTFS 类型 7)

Command (m for help): w        # 最后,输入 w 将分区表写入磁盘并退出。如果后悔了,就输入 q 直接退出不保存。


#fdisk /dev/sdb 就是你准备对系统中第二块磁盘进行分区操作的入口命令。这是一个需要极其谨慎、确认无误后才能执行的命令

2.2 创建物理卷(PV)

# 创建 PV
pvcreate /dev/sdb1 /dev/sdb2 
# 查看 PV 信息
pvdisplay
pvs
pvscan

2.3 创建卷组(VG)

# 创建 VG(默认 PE 大小 4MB)
vgcreate vg_data /dev/sdb1 /dev/sdb2
# 指定 PE 大小
vgcreate -s 16M vg_data /dev/sdb1
# 查看 VG 信息
vgdisplay
vgs

 2.4 创建逻辑卷(LV)

# 创建 LV(-n 指定名称,-L 指定大小)
lvcreate -n lv_www -L 20G vg_data
# 使用所有剩余空间
lvcreate -n lv_backup -l100%FREE vg_data
# 指定 PE 数量创建
lvcreate -n lv_log -l500 vg_data
# 查看 LV 信息
lvdisplay
lvs

2.5 格式化并挂载

# 格式化(选择文件系统)
mkfs.xfs /dev/vg_data/lv_www
# 或
mkfs.ext4 /dev/vg_data/lv_www
# 创建挂载点并挂载
mkdir /data/www
mount /dev/vg_data/lv_www /data/www
# 自动挂载(/etc/fstab)
vim /etc/fstab
/dev/vg_data/lv_www /data/www xfs defaults 00

三、LVM 扩展流程

3.1 扩展 VG(添加新 PV)

# 1. 创建新 PV
pvcreate /dev/sdc1
# 2. 扩展 VG
vgextend vg_data /dev/sdc1
# 3. 查看扩展后的 VG
vgdisplay vg_data

3.2 扩展 LV

# 方法1:扩展 LV(先扩展空间,后扩展文件系统)
# 扩展 LV 大小(增加 10G)
lvextend -L+10G /dev/vg_data/lv_www
# 或扩展到指定大小
lvextend -L 30G /dev/vg_data/lv_www
# 扩展文件系统
# 对于 XFS
xfs_growfs /data/www
# 对于 ext4
resize2fs /dev/vg_data/lv_www
# 方法2:一步完成(需要较新版本)
lvextend -r-L+10G /dev/vg_data/lv_www

3.3 在线扩展(无需卸载)

# 确保文件系统支持在线扩展
# XFS 和 ext4 都支持在线扩展
# 查看当前使用情况
df -h
# 执行扩展操作
lvextend -r-L+5G /dev/vg_data/lv_www

四、LVM 缩减流程
4.1 缩减 LV(风险操作!)

# *** 重要:必须先缩减文件系统,再缩减 LV ***
# *** 必须先备份数据! ***
# 1. 检查文件系统
e2fsck -f /dev/vg_data/lv_www
# 2. 缩减文件系统(ext4示例)
resize2fs /dev/vg_data/lv_www 15G
# 3. 缩减 LV
lvreduce -L 15G /dev/vg_data/lv_www
# XFS 不支持缩减,需要备份→重建→恢复

4.2 从 VG 中移除 PV

# 1. 将数据迁移到其他 PV
pvmove /dev/sdb1
# 2. 从 VG 中移除 PV
vgreduce vg_data /dev/sdb1
# 3. 移除 PV 标记
pvremove /dev/sdb1

五、LVM 快照管理
5.1 创建快照

# 创建快照(建议快照大小与原LV使用量相当)
lvcreate -s-n lv_www_snap -L 5G /dev/vg_data/lv_www
# 查看快照
lvdisplay /dev/vg_data/lv_www_snap

5.2 使用快照

# 挂载快照(只读)
mkdir /mnt/snapshot
mount -o ro /dev/vg_data/lv_www_snap /mnt/snapshot
# 从快照恢复(需要先卸载原LV)
umount /data/www
lvconvert --merge /dev/vg_data/lv_www_snap
# 删除快照
lvremove /dev/vg_data/lv_www_snap

六、LVM 迁移和备份
6.1 迁移 VG 到新系统

# 1. 在原系统上取消激活 VG
vgchange -an vg_data
# 2. 导出 VG(移除系统信息)
vgexport vg_data
# 3. 在新系统上导入
vgimport vg_data
# 4. 激活 VG
vgchange -ay vg_data

6.2 LVM 备份配置

# 备份 LVM 元数据
vgcfgbackup vg_data
# 备份文件保存在 /etc/lvm/backup/
# 恢复 LVM 配置
vgcfgrestore -f /etc/lvm/backup/vg_data vg_data

七、LVM 监控和维护
7.1 监控命令

# 查看 LVM 状态
lvmdiskscan
lvs -a-o+devices
pvs -v
# 查看 PE 使用情况
vgdisplay vg_data | grep-i pe
# 监控 LVM 事件
dmsetup ls--tree

7.2 日常维护

# 扫描 LVM 设备
pvscan
vgscan
lvscan
# 激活/停用 VG
vgchange -ay    # 激活所有
vgchange -an    # 停用所有
vgchange -ay vg_data  # 激活指定 VG

八、故障处理
8.1 常见问题解决

# 如果设备路径改变
pvscan --cache
vgimport vg_data
# 修复损坏的元数据
vgck vg_data
vgcfgrestore vg_data
# 强制移除
vgremove -f vg_data

8.2 数据恢复

# 使用 vgimportclone 处理重复的 VG UUID
vgimportclone -n vg_data_new /dev/sdb1

九、常用命令速查

操作命令
查看物理卷pvs, pvdisplay
查看卷组vgs, vgdisplay
查看逻辑卷lvs, lvdisplay
创建 PVpvcreate /dev/sdX
创建 VGvgcreate vg_name /dev/sdX
创建 LVlvcreate -n lv_name -L size vg_name
扩展 LVlvextend -L+size /dev/vg/lv
扩展文件系统resize2fs 或 xfs_growfs
创建快照lvcreate -s-n snap_name -L size /dev/vg/lv

十、注意事项

  • 操作前备份:特别是缩减操作
  • 在线操作:扩展通常可在线进行,缩减需要谨慎
  • 文件系统支持:确认文件系统支持 LVM 操作
  • 空间规划:合理规划 VG 和 LV 大小
  • 监控告警:设置监控,避免空间不足
posted @ 2025-12-05 04:37  hihibig  阅读(37)  评论(0)    收藏  举报