LVM逻辑卷在线扩容实战指南

描述

 

零基础看懂 LVM:逻辑卷扩容其实没那么难

一、问题背景

线上磁盘满了是生产环境最常见的问题之一。新建目录不行、写入失败、MySQL 启动报错 No space left on device,第一反应是 df -h 看哪个分区满了。但如果这个分区是 LVM 管理的逻辑卷,那么扩容的路径并不是"加一块盘、mkfs、mount"这么简单,而是要把新盘做成 PV,加入 VG,再扩展 LV,最后扩展文件系统。

很多初中级运维卡在 LVM 这一步:

  • 不知道 PV、VG、LV 三层的关系
  • 不敢动现有的 VG,怕动错丢数据
  • 分不清 lvextend 和 resize2fs/xfs_growfs 的关系
  • 不知道如何缩容(更危险)
  • 不熟悉 LVM 的元数据备份与恢复
  • 不会做快照

这一篇把 LVM 从入门到熟练,把扩容、缩容、迁移、快照、备份全部讲透,配合命令实战和回滚脚本。

二、适用场景

  • 服务器磁盘满了,需要扩容
  • 数据库目录不够空间,要扩大
  • 多块小盘合并成一个大盘
  • 单盘迁移到新盘
  • 备份数据库做快照
  • 跨主机迁移 LVM
  • 解决文件系统碎片
  • RAID 与 LVM 组合
  • 云盘扩容
  • 容量规划
  • 灾备演练

三、核心知识点

3.1 LVM 三层结构

LVM(Logical Volume Manager)逻辑卷管理,在物理磁盘和文件系统之间引入三层抽象:

  1. PV(Physical Volume,物理卷) :物理硬盘或分区
  2. VG(Volume Group,卷组) :多个 PV 组成的资源池
  3. LV(Logical Volume,逻辑卷) :从 VG 中分配出的"虚拟分区"
  4. FS(File System) :在 LV 之上创建的文件系统(ext4、xfs 等)

类比:

  • 物理盘 → 物理卷(PV)
  • 多块物理盘合并 → 卷组(VG)
  • 卷组中划分出的逻辑分区 → 逻辑卷(LV)
  • 逻辑卷上格式化 → 文件系统

3.2 PE 与 LE

  • PE(Physical Extent):VG 中的最小分配单位,默认 4MB
  • LE(Logical Extent):LV 中的最小分配单位,对应 VG 中的 PE

LV 的大小 = LE 数量 × PE 大小。

3.3 LVM 元数据

每个 VG、LV、PV 都有自己的元数据,记录在 /etc/lvm/backup/ 和 /etc/lvm/archive/

  • /etc/lvm/backup/ :最近的元数据备份
  • /etc/lvm/archive/ :历史元数据备份

3.4 LVM 工具链

  • pvcreate pvspvdisplaypvscanpvremovepvmove
  • vgcreate vgsvgdisplayvgscanvgremovevgextendvgreducevgcfgbackupvgcfgrestore
  • lvcreate lvslvdisplaylvscanlvremovelvextendlvreducelvrenamelvresizelvconvert
  • lvchange vgchangepvchange

3.5 LVM 与 RAID

LVM 可以和软 RAID 组合:

  • RAID + LVM:先做 RAID(mdadm 或硬件),再做 LVM
  • LVM 自带 RAID:lvcreate --type raid1/raid5/raid6

3.6 LVM 快照

lvcreate -s -L 10G -n snap_lv /dev/vg0/lv0

快照是基于 COW(Copy-On-Write)实现的,适合备份场景。

3.7 LVM 缓存

LVM cache 用 SSD 给 HDD 做缓存:

  • lvcreate --type cache  / lvconvert --type cache

3.8 LVM thin

LVM thin provision 按需分配空间:

  • lvcreate --type thin
  • 适合需要大量小 LV 的场景(如 KVM)

3.9 LVM 与文件系统

不同文件系统对 LV 的支持:

  • ext4:支持扩容和缩容
  • xfs:只支持扩容,不支持缩容
  • btrfs:完整支持
  • zfs:不通过 LVM,直接 zpool

四、整体排查或实施思路

扩容的完整路径:


			   1. 检查现状:df -h、lsblk、pvs、vgs、lvs 2. 加盘或加分区:fdisk/parted 准备新 PV 3. 创建 PV:pvcreate /dev/sdX 4. 扩展 VG:vgextend vg0 /dev/sdX 5. 扩展 LV:lvextend -L +100G /dev/vg0/lv0 6. 扩展 FS:xfs_growfs /mount/point 或 resize2fs /dev/vg0/lv0 7. 验证:df -h 8. 备份元数据:vgcfgbackup 

每一步都有回滚预案,不能盲跑。

五、实战步骤

5.1 场景:磁盘 /data 满了,需要扩容

5.1.1 现象


			   df -h Filesystem               Size  Used Avail Use% Mounted on /dev/mapper/centos-root  50G   48G  2.0G  96% / /dev/mapper/vg0-data     100G  95G  5.0G  95% /data 

判断:/data 用了 95%,需要扩容。

5.1.2 查看 LVM 现状


			   bashpvs vgs lvs 

预期输出:


			   pvs:   PV         VG     Fmt  Attr PSize   PFree   /dev/sda2  centos lvm2 a--  99.51g   9.51g   /dev/sdb1  vg0    lvm2 a--  200.00g 100.00g vgs:   VG     #PV #LV #SN Attr   VSize   VFree   centos   1   2   0 wz--n-  99.51g   9.51g   vg0      1   1   0 wz--n- 200.00g 100.00g lvs:   LV    VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert   data  vg0    -wi-ao---- 100.00g 

判断:/data 对应 vg0/data,VG 还有 100G 空闲。

5.1.3 第一种情况:VG 还有空闲

直接扩展 LV:


			   bashlvextend -L +50G /dev/vg0/data 

或:


			   bashlvextend -l +100%FREE /dev/vg0/data 

判断:+100%FREE 利用所有 VG 空闲。

扩展后文件系统同步:


			   bash# XFS xfs_growfs /data # ext4 resize2fs /dev/vg0/data 

5.1.4 验证


			   bashdf -h /data 

预期:


			   Filesystem               Size  Used Avail Use% Mounted on /dev/mapper/vg0-data     150G   95G   55G   63% /data 

判断:扩容生效。

5.1.5 备份元数据


			   bashvgcfgbackup vg0 

5.1.6 第二种情况:VG 没有空闲,需要加盘

5.1.6.1 加新硬盘 /dev/sdc

			   bashecho 1 > /sys/class/scsi_host/host0/scan lsblk 

判断:/dev/sdc 出现。

5.1.6.2 创建分区(可选)

用 parted 或 fdisk:


			   bashparted /dev/sdc mklabel gpt parted /dev/sdc mkpart primary 0% 100% 

或:


			   bashfdisk /dev/sdc # n, p, 1, Enter, Enter, t, 8e, w 

判断:分区类型是 8e(Linux LVM)。

5.1.6.3 创建 PV

			   bashpvcreate /dev/sdc1 pvs 

预期:/dev/sdc1 加入。

5.1.6.4 扩展 VG

			   bashvgextend vg0 /dev/sdc1 vgs 

预期:vg0 的 VFree 增加。

5.1.6.5 扩展 LV

			   bashlvextend -L +200G /dev/vg0/data xfs_growfs /data df -h /data 
5.1.6.6 备份元数据

			   bashvgcfgbackup vg0 

5.1.7 第三种情况:无法新增硬盘,需要把另一个 VG 的空闲挪过来

只有同 VG 内 LV 可以调整。多 VG 之间需要 pvmove:


			   bashpvmove -n /dev/vg0/data /dev/sdc1 

或把整个 PV 数据迁到另一个 PV:


			   bashpvmove /dev/sdc1 /dev/sdd1 

判断:pvmove 是耗时的 IO 操作,要在低峰跑。

5.1.8 第四种情况:根分区不够

根分区扩容比较复杂,因为根分区不能直接 umount。需要:

  1. 救援模式(LiveCD 或单用户)
  2. 激活 LVM:vgchange -ay
  3. 扩展 LV
  4. 扩展 FS
  5. 重启

或:

  1. 用 lvextend --resizefs 自动扩展

			   bashlvextend --resizefs -L +10G /dev/centos/root 

判断:–resizefs 是 RHEL/CentOS 7+ 才支持。

5.2 场景:缩容(危险)

缩容只在 ext4 文件系统下支持,xfs 不支持。

5.2.1 备份数据

缩容前必须备份:


			   bashcp -a /data /backup/data.$(date +%F) 

或:


			   bashrsync -a /data/ /backup/data/ 

5.2.2 卸载文件系统


			   bashumount /data 

5.2.3 检查文件系统


			   bashe2fsck -f /dev/vg0/data 

5.2.4 缩容文件系统


			   bashresize2fs /dev/vg0/data 80G 

5.2.5 缩容 LV


			   bashlvreduce -L 80G /dev/vg0/data 

判断:lvreduce 必须大于等于 FS 大小。

5.2.6 挂载验证


			   bashmount /data df -h /data 

5.2.7 缩容 xfs(不支持)

如果 LV 是 xfs 文件系统,缩容前必须:

  1. 备份数据
  2. 卸载
  3. 删除 LV:lvremove /dev/vg0/data
  4. 创建小 LV:lvcreate -L 80G -n data vg0
  5. 格式化:mkfs.xfs /dev/vg0/data
  6. 挂载:mount /dev/vg0/data /data
  7. 恢复数据:rsync -a /backup/data/ /data/

判断:xfs 缩容只能"重做",不像 ext4 可以 in-place 缩。

5.3 场景:迁移数据到新盘

5.3.1 加新盘


			   bashpvcreate /dev/sdd1 vgextend vg0 /dev/sdd1 

5.3.2 pvmove


			   bashpvmove /dev/sdc1 /dev/sdd1 

判断:pvmove 是 in-place 迁移,不影响业务。

5.3.3 把旧 PV 从 VG 移除


			   bashvgreduce vg0 /dev/sdc1 pvremove /dev/sdc1 

5.3.4 验证


			   bashpvs df -h /data 

5.4 场景:LVM 快照备份

5.4.1 创建快照


			   bashlvcreate -s -L 10G -n data_snap /dev/vg0/data 

判断:快照大小根据数据变化率定,建议 10-20%。

5.4.2 挂载快照


			   bashmkdir /mnt/snap mount /dev/vg0/data_snap /mnt/snap 

5.4.3 备份快照


			   bashrsync -a /mnt/snap/ /backup/data/$(date +%F)/ 

或:


			   bashtar czf /backup/data.$(date +%F).tgz -C /mnt/snap . 

5.4.4 删除快照


			   bashumount /mnt/snap lvremove /dev/vg0/data_snap 

判断:快照占用空间随数据变化增长,超出会自动失效。

5.4.5 自动快照脚本


			   bash#!/bin/bash # lv-snapshot.sh set -euo pipefail DATE=$(date +%F_%H%M%S) LV_PATH=/dev/vg0/data SNAP_SIZE=10G SNAP_NAME=data_snap_$DATE BACKUP_DIR=/backup/data/$DATE lvcreate -s -L $SNAP_SIZE -n $SNAP_NAME $LV_PATH mkdir -p /mnt/snap mount /dev/vg0/$SNAP_NAME /mnt/snap mkdir -p $BACKUP_DIR rsync -a /mnt/snap/ $BACKUP_DIR/ umount /mnt/snap lvremove -f /dev/vg0/$SNAP_NAME echo "snapshot $SNAP_NAME backed up to $BACKUP_DIR" 

5.5 场景:LVM 缓存(SSD 加速 HDD)

5.5.1 创建 cache pool


			   bashlvcreate -L 100G -n cache_meta vg0 /dev/sdc1 lvcreate -L 1T -n cache_data vg0 /dev/sdc1 

5.5.2 转换 LV 为 cache


			   bashlvconvert --type cache --cachepool vg0/cache_data vg0/data 

5.5.3 验证


			   bashlvs -o +cache_total_blocks 

5.5.4 拆分 cache


			   bashlvconvert --splitcache vg0/data 

5.6 场景:LVM thin provision

5.6.1 创建 thin pool


			   bashlvcreate -L 100G --thinpool thin_pool vg0 

5.6.2 创建 thin LV


			   bashlvcreate -V 1T --thin -n thin_lv vg0/thin_pool 

判断:thin LV 实际占用随数据增长,最大 1T。

5.7 场景:LVM 替换故障盘

5.7.1 标记 PV 故障


			   bashpvdisplay /dev/sdc1 

判断:故障 PV 通常显示 missing。

5.7.2 移除故障 PV


			   bashvgreduce --removemissing vg0 --force 

5.7.3 替换新盘


			   bashpvcreate /dev/sdd1 vgextend vg0 /dev/sdd1 

5.8 场景:LVM 元数据损坏恢复

5.8.1 备份


			   bashcp /etc/lvm/backup/vg0 /etc/lvm/backup/vg0.bak 

5.8.2 恢复


			   bashvgcfgrestore vg0 

判断:从最近的备份恢复元数据。

5.8.3 强制激活


			   bashvgchange -ay vg0 

5.9 场景:LVM 与 Multipath

在多路径环境下,LVM 可能识别到多个相同的 PV:


			   bashmultipath -ll pvscan 

判断:每个 multipath 设备应该被 filter 掉。

修改 /etc/lvm/lvm.conf


			   bashfilter = [ "a|/dev/mapper/mpath.*|""r/.*/" ] 

判断:白名单 multipath 设备,其他都过滤。

5.10 场景:LVM 在云服务器上

云服务器一般不直接用 LVM,但可以在 OS 内层做:

  • AWS:根盘是 EBS,LVM 可加在数据盘
  • Azure:同 AWS
  • 阿里云:可加云盘做 PV

操作与本地一致。

六、常用命令

6.1 PV 命令


			   bashpvcreate /dev/sdc1        # 创建 PV pvs                        # 简略列出所有 PV pvdisplay                  # 详细列出 PV pvscan                     # 扫描 PV pvremove /dev/sdc1        # 删除 PV pvmove /dev/sdc1          # 移动 PV 数据 

6.2 VG 命令


			   bashvgcreate vg0 /dev/sdc1           # 创建 VG vgs                               # 简略列出 VG vgdisplay vg0                     # 详细 vgscan                            # 扫描 vgextend vg0 /dev/sdd1            # 扩展 VG vgreduce vg0 /dev/sdc1            # 缩减 VG vgremove vg0                      # 删除 VG vgcfgbackup vg0                   # 备份元数据 vgcfgrestore vg0                  # 恢复元数据 vgchange -ay vg0                  # 激活 vgchange -an vg0                  # 取消激活 

6.3 LV 命令


			   bashlvcreate -L 10G -n data vg0                # 创建 LV lvs                                        # 简略列出 lvdisplay /dev/vg0/data                    # 详细 lvscan                                     # 扫描 lvextend -L +10G /dev/vg0/data             # 扩展 lvextend -l +100%FREE /dev/vg0/data        # 用尽 VG 空闲 lvreduce -L 10G /dev/vg0/data              # 缩减 lvremove /dev/vg0/data                     # 删除 lvrename vg0 data data_new                 # 改名 lvresize -L 20G /dev/vg0/data              # 调整大小 

6.4 文件系统命令


			   bash# ext4 resize2fs /dev/vg0/data e2fsck -f /dev/vg0/data mkfs.ext4 /dev/vg0/data # xfs xfs_growfs /data xfs_info /data mkfs.xfs /dev/vg0/data # 通用 blkid /dev/vg0/data fsck /dev/vg0/data 

6.5 看 LVM 信息


			   bashpvs -o +pv_used,pv_free vgs -o +vg_mda_count,vg_mda_size,vg_mda_free lvs -o +devices 

判断:devices 列能看到 LV 由哪些 PV 组成。

6.6 看文件系统信息


			   bashdf -h /data df -i /data mount | grep /data findmnt /data 

6.7 看磁盘分区


			   bashlsblk fdisk -l /dev/sdc parted /dev/sdc print 

6.8 看 LVM 历史


			   bashls /etc/lvm/archive/ cat /etc/lvm/archive/vg0_00001.vg 

6.9 LVM 自动激活


			   bashvgchange -ay lvchange -ay /dev/vg0/data 

6.10 LVM 锁

LVM 通过文件锁避免并发操作,默认在 /run/lock/lvm/

七、配置示例

7.1 /etc/lvm/lvm.conf 关键配置


			   bash# 默认配置 locking_dir = "/run/lock/lvm" backup_dir = "/etc/lvm/backup" archive_dir = "/etc/lvm/archive" use_lvmetad = 1 obtain_device_list_from_udev = 1 # 多路径 filter filter = [ "a|/dev/mapper/mpath.*|""r/.*/" ] # 缓存设置 max_lv = 256 max_pv = 1024 # 锁类型 locking_type = 1 

7.2 /etc/lvm/profile/thin-performance.profile


			   bashactivation {     thin_pools = {         vg0/thin_pool {             activation_mode = "deferred"             monitor = "y"         }     } } 

7.3 自动激活


			   bashauto_activation_volume_list = [ "vg0/data""centos/root""centos/swap" ] 

7.4 LVM 监控命令


			   bash#!/bin/bash # lvm-monitor.sh echo "=== PV ===" pvs --noheadings | awk '{print $1, $2, $6}' echo "=== VG ===" vgs --noheadings | awk '{print $1, $6, $7}' echo "=== LV ===" lvs --noheadings | awk '{print $1, $2, $4, $5}' echo "=== FS ===" df -h | grep -E '/dev/mapper' 

7.5 LVM 与 fstab


			   bash# /etc/fstab /dev/mapper/vg0-data /data xfs defaults,noatime 0 2 

判断:用 UUID 更可靠:


			   bashblkid /dev/vg0/data 

7.6 LVM 与 systemd mount


			   bash# /etc/systemd/system/data.mount [Unit] Description=Data mount Before=local-fs.target [Mount] What=/dev/vg0/data Where=/data Type=xfs Options=defaults,noatime [Install] WantedBy=multi-fs.target 

7.7 LVM 与 multipath


			   bash# /etc/multipath.conf blacklist {     devnode "^sda" } multipaths {     multipath {         wwid "3600508..."         alias "mpath0"     } } 

7.8 /etc/lvm/lvm.conf 详细配置


			   bash# 元数据备份 backup {     retain_min = 50     retain_days = 30 } # 全局过滤器 devices {     filter = [ "a|/dev/sd.*|""r|/dev/cdrom|" ]     cache_dir = "/etc/lvm/cache" } # 日志 log {     level = 1     file = "/var/log/lvm2.log" } 

7.9 LVM 与 udev


			   bash# /etc/udev/rules.d/99-lvm.rules KERNEL=="dm-*", SUBSYSTEM=="block", RUN+="/usr/sbin/lvm vgchange -ay --monitor y vg0" 

7.10 自动扩容脚本


			   bash#!/bin/bash # lvm-autoextend.sh set -euo pipefail VG=$1 LV=$2 FS_PATH=$3 INCREMENT=10G if [ "$(vgs --noheadings -o vg_free $VG | tr -d ' ')" != "0" ]; then     lvextend -L +$INCREMENT /dev/$VG/$LV     if mount | grep $FS_PATH | grep -q xfs; then         xfs_growfs $FS_PATH     else         resize2fs /dev/$VG/$LV     fi fi 

八、日志或指标观察方法

8.1 LVM 日志


			   bashtail -f /var/log/lvm2.log 

判断:所有 LVM 操作都会留下日志。

8.2 dmesg 中的 LVM


			   bashdmesg | grep -i lvm dmesg | grep -i dm- 

8.3 系统日志


			   bashjournalctl -u lvm2-monitor 

8.4 监控指标

  • VG free space:避免空闲为 0
  • LV data%:LV 内部使用率(thin pool)
  • snapshot usage:快照占用
  • IO util:LV 对应设备的 IO

8.5 监控脚本


			   bash#!/bin/bash VG=vg0 LV=data vgfree=$(vgs --noheadings -o vg_free --units g $VG | tr -d ' g') lvsize=$(lvs --noheadings -o lv_size --units g $VG/$LV | tr -d ' g') if (( $(echo "$vgfree < 10" | bc -l) )); then     echo "WARN: VG $VG free space < 10G" fi if (( $(echo "$lvsize > 900" | bc -l) )); then     echo "WARN: LV $LV > 900G" fi 

8.6 容量规划

  • 监控趋势
  • 提前扩容
  • 容量告警
  • 容量盘点

8.7 看快照状态


			   bashlvs -o +snap_percent 

判断:snap_percent 100% 时快照失效。

8.8 看 thin pool


			   bashlvs -o +data_percent 

8.9 看 PV 状态


			   bashpvs -o +pv_attr 

判断:attr 第二位 = z 表示正常,m 表示 missing。

8.10 看 LV 设备映射


			   bashdmsetup info /dev/vg0/data dmsetup ls dmsetup table /dev/vg0/data 

九、排查路径

9.1 “LVM 找不到”


			   bashvgscan pvscan lvscan 

判断:扫描所有 LVM 元数据。

9.2 “PV 状态 missing”


			   bashpvdisplay vgreduce --removemissing vg0 --force 

9.3 “LV 不能挂载”


			   bashlvdisplay /dev/vg0/data fsck /dev/vg0/data 

9.4 “扩展 LV 失败”


			   bashvgs            # 看 VFree pvs            # 看 PV 

判断:VG 没有空闲。

9.5 “xfs_growfs 失败”


			   bashdf -h /data mount | grep /data 

判断:xfs_growfs 必须挂载在线,ext4 用 resize2fs。

9.6 “resize2fs 失败”


			   bashe2fsck -f /dev/vg0/data 

判断:先 e2fsck 再 resize2fs。

9.7 “VG 锁住”


			   bashps aux | grep lvm fuser /run/lock/lvm 

判断:找出持锁进程。

9.8 “LVM 元数据不一致”


			   bashvgcfgrestore vg0 

9.9 “多机 VG 冲突”


			   bashvgchange -an vg0 

判断:cluster 模式才有多机问题。

9.10 “LVM 性能差”


			   bashiostat -xz 1 5 

判断:可能需要 pvmove 整理数据分布。

十、风险提醒

  • lvremove /dev/vg0/data :直接删除 LV,数据全丢
  • vgremove vg0 :删除整个 VG,所有 LV 全丢
  • lvreduce :缩容 LV,数据丢失风险
  • pvmove :在生产环境跑,可能影响 IO
  • resize2fs :缩容时如果空间不够会失败
  • xfs_growfs :必须在挂载状态
  • xfs  缩容:文件本身不支持
  • vgcfgbackup  不备份:灾难恢复困难
  • vgextend  加错盘:可能造成数据分布异常
  • multipath filter  没配:可能识别到错误设备
  • pvs  显示 missing:可能真盘有问题
  • 跨主机 LVM 共享:集群模式才支持
  • LVM 加密:dm-crypt 集成在 LV 层
  • LVM 与硬件 RAID:层叠顺序要注意
  • pvmove  中断:能恢复,但要小心
  • lvcreate  不指定 VG:默认选 VG,可能选错
  • lvextend -l +100%FREE :可能扩展超过预期
  • lvreduce  大于 FS:文件系统会损坏
  • LVM metadata 损坏:必须从 backup 恢复
  • vgmerge  / vgsplit:合并/拆分 VG,复杂操作
  • 跨主机 pvmove:需要 cluster

十一、验证方式

  • pvs  列出预期 PV
  • vgs  列出预期 VG 和空闲
  • lvs  列出预期 LV
  • df -h /data  大小符合预期
  • mount  挂载点正确
  • 应用层测试读写
  • LVM 日志无错
  • dmesg 无错误
  • 监控容量趋势
  • 定期巡检

十二、回滚方案

12.1 lvextend 回滚

lvextend 后没有撤销命令,只能 lvreduce:


			   bashumount /data e2fsck -f /dev/vg0/data resize2fs /dev/vg0/data 100G lvreduce -L 100G /dev/vg0/data mount /data 

12.2 lvreduce 回滚


			   bashlvextend -L 200G /dev/vg0/data resize2fs /dev/vg0/data 

判断:lvreduce 之前必须备份和 fsck。

12.3 vgextend 回滚


			   bashvgreduce vg0 /dev/sdc1 pvremove /dev/sdc1 

12.4 vgreduce 回滚


			   bashvgextend vg0 /dev/sdc1 

12.5 pvremove 回滚


			   bashpvcreate /dev/sdc1 vgextend vg0 /dev/sdc1 pvmove 

判断:先恢复元数据,再恢复数据。

12.6 快照删除回滚

快照删除后无法恢复,必须重新创建。

12.7 lvcreate 回滚


			   bashlvremove /dev/vg0/data 

12.8 lvremove 回滚(如果 LV 还在)

如果 LV 还没真正删除:


			   bashlvcreate -L 100G -n data vg0 xfs_growfs /data  # 不需要重新 mkfs 

判断:lvremove 之后除非有快照或备份,否则无法恢复。

12.9 VG 删除回滚


			   bashvgcfgrestore vg0 vgchange -ay vg0 

12.10 元数据损坏回滚


			   bashcp /etc/lvm/backup/vg0.bak /etc/lvm/backup/vg0 vgcfgrestore vg0 

十三、生产环境注意事项

  • 操作窗口:扩容在业务低峰
  • 灰度:先 1 台机器验证
  • 备份:所有变更前必须备份元数据
  • 文档:每次扩容写变更单
  • 监控:容量预警纳入监控
  • 演练:扩容演练
  • 工具:Ansible 统一推送
  • 镜像:装机镜像固化分区和 LVM 配置
  • 应急:预留空闲盘
  • 通知:扩容通知团队
  • 容量:定期容量规划
  • 性能:监控 IO 影响
  • 安全:避免 pvmove 时手动重启
  • 数据:扩容期间避免数据大规模写入
  • 验证:扩容后立即测试
  • 文档:维护 LVM 拓扑图
  • 巡检:每周看 VG 空闲
  • 告警:空闲 < 20% 告警
  • 自动化:自动巡检
  • 备份:元数据定期导出
  • 灾备:LVM 拓扑备份

十四、总结

LVM 不是玄学,三层结构 + 几组命令就能搞定:

  1. PV:用 pvcreate 创建
  2. VG:用 vgcreate 创建,用 vgextend 扩展
  3. LV:用 lvcreate 创建,用 lvextend 扩展
  4. FS:xfs_growfs(XFS)或 resize2fs(ext4)

扩容场景:90% 是 vgextend + lvextend + xfs_growfs。

缩容场景:除非必要,不缩。XFS 缩容只能"重做"。

数据迁移:pvmove 是 in-place 迁移,不影响业务。

快照:基于 COW,是备份利器。

元数据:定期 vgcfgbackup,故障时 vgcfgrestore。

把这一篇收藏好,遇到 LVM 故障按章节走,比查 Google 高效得多。

十五、LVM 进阶

15.1 LVM RAID


			   bashlvcreate --type raid1 -L 10G -n lv_raid1 vg0 

判断:LVM 自带的软件 RAID,可与硬件 RAID 组合。

15.2 LVM thin pool 监控


			   bashlvs -o +data_percent 

判断:data_percent 接近 100% 时需要扩容 thin pool。

15.3 LVM 自动激活


			   bashvgchange --monitor y vg0 

判断:开启 D-Bus 监控,自动激活。

15.4 LVM 与 ZFS 集成

不建议同时用 LVM 和 ZFS,层叠复杂。

15.5 LVM 加密


			   bashcryptsetup luksFormat /dev/sdc1 cryptsetup open /dev/sdc1 sdc1_crypt pvcreate /dev/mapper/sdc1_crypt 

判断:LUKS + LVM。

15.6 LVM 在线 I/O 限制


			   bashdmsetup threshold /dev/vg0/data 0 100 

判断:throttle IO。

15.7 LVM 与 systemd


			   bashsystemctl status lvm2-monitor 

15.8 LVM 监控集成


			   yaml- alert: VGAlmostFull   expr: (node_lvm_vg_free_bytes / node_lvm_vg_size_bytes) < 0.1 

15.9 LVM 与 backup

LVM 快照是 XFS、ext4 文件系统备份的标准做法。

15.10 LVM 与云

云盘通过多路径挂载后,可以加入 LVM。

十六、案例:一次完整的扩容复盘

16.1 背景

某数据库服务器 /data 目录从 500G 涨到 480G(96%),报警。

16.2 现状


			   bashdf -h /data pvs vgs lvs 

判断:vg0 VFree=200G,可以直接扩展 LV。

16.3 备份元数据


			   bashvgcfgbackup vg0 cp /etc/lvm/backup/vg0 /backup/lvm-backup-vg0-$(date +%F) 

16.4 备份数据


			   bashmysqldump --all-databases > /backup/db-$(date +%F).sql 

判断:重要数据先备份。

16.5 扩展 LV


			   bashlvextend -l +100%FREE /dev/vg0/data 

16.6 扩展文件系统


			   bashxfs_growfs /data 

16.7 验证


			   bashdf -h /data 

16.8 应用层验证


			   bashmysql -e "CREATE DATABASE test_lvm_expand;" mysql -e "USE test_lvm_expand; CREATE TABLE t (id INT);" mysql -e "DROP DATABASE test_lvm_expand;" 

16.9 监控

确认监控正常,告警恢复。

16.10 复盘

  • 扩容走完了标准流程
  • 备份、扩展、验证、监控都到位
  • 后续考虑加自动扩容

十七、运维手册:LVM 巡检 checklist

每周跑一遍:


			   bash#!/bin/bash # lvm-audit.sh echo "=== PV ===" pvs --noheadings -o pv_name,vg_name,pv_size,pv_free,pv_attr echo "=== VG ===" vgs --noheadings -o vg_name,vg_size,vg_free,vg_attr echo "=== LV ===" lvs --noheadings -o lv_name,vg_name,lv_size,lv_attr echo "=== FS ===" df -h | grep -E '/dev/mapper' echo "=== LVM metadata backup ===" ls -lt /etc/lvm/backup/ | head echo "=== Multipath ===" multipath -ll echo "=== Filter ===" grep -E "^[[]]*filter" /etc/lvm/lvm.conf 

判断:把脚本接入监控。

十八、写在最后

LVM 是运维基本功。三层结构、命令链、回滚预案、元数据备份,每个细节都要熟。把这一篇里的命令多跑几遍,遇到 LVM 故障按章节走,比临时查资料高效得多。

记住一句话:扩容有风险,操作前必须备份元数据。生产环境永远不要盲跑 lvreduce、lvremove 这种危险命令。

十九、深入 LVM 内部机制

19.1 LVM 物理结构

LVM 的元数据写在每个 PV 的开头,UUID 标识。VG 元数据会复制到所有 PV 上,保证冗余。

19.2 LVM 与 device-mapper

LVM 基于 Linux device-mapper,每个 LV 是一个 dm 设备:


			   bashls -la /dev/mapper/ ls -la /dev/vg0/ ls -la /dev/dm-* 

判断:dm-0、dm-1 等是 device-mapper 设备。

19.3 LVM 区域分配策略

  • contiguous:连续(性能好,分配难)
  • normal:默认,跨 PV 分布
  • cling:优先放在同一个 PV(快照场景)
  • anywhere:自由分布

19.4 LVM 锁机制


			   bashlocking_type = 1 locking_type = 2 

判断:集群 LVM 用 dlm,否则本地锁。

19.5 LVM 激活模式

  • active:在线
  • suspended:挂起(快照合并场景)
  • partial:部分 PV missing
  • inactive:未激活

			   bashlvchange -ay /dev/vg0/data lvchange -an /dev/vg0/data lvchange --refresh /dev/vg0/data 

19.6 LVM 区域大小调整


			   bashvgchange -s 8M vg0 

判断:PE 大小影响最大 LV 数(65536 个 PE 是上限)。

PE=4M 时最大 LV = 256G PE=8M 时最大 LV = 512G PE=16M 时最大 LV = 1T PE=64M 时最大 LV = 4T

19.7 LVM 性能优化

  • 把 hot data LV 放在 SSD PV
  • 用 pvmove 整理数据
  • 调整 readahead
  • 用 lvcreate --type raid1 + SSD 做镜像

19.8 LVM 与 I/O 调度器

不同调度器对 LV 影响:

  • bfq:桌面、混合负载
  • deadline:数据库
  • none:NVMe

			   bashecho none > /sys/block/dm-0/queue/scheduler 

19.9 LVM 完整性检查


			   bashvgck vg0 lvck /dev/vg0/data 

判断:校验元数据完整性。

19.10 LVM 版本兼容性

LVM2 兼容 LVM1 格式,但部分高级特性需要新版本。RHEL/CentOS 7+ 默认 LVM2。

二十、LVM 与数据库的组合

20.1 MySQL 数据目录放 LVM


			   bashlvcreate -L 500G -n mysql_data vg0 mkfs.xfs /dev/vg0/mysql_data mount /dev/vg0/mysql_data /var/lib/mysql 

判断:把数据库放在独立 LV 上便于管理。

20.2 快照备份 MySQL


			   bashlvcreate -s -L 50G -n mysql_snap /dev/vg0/mysql_data mount /dev/vg0/mysql_snap /mnt/snap rsync -a /mnt/snap/ /backup/mysql/ umount /mnt/snap lvremove -f /dev/vg0/mysql_snap 

判断:快照备份比 mysqldump 完整。

20.3 Redis 数据 LVM


			   bashlvcreate -L 100G -n redis_data vg0 mkfs.xfs /dev/vg0/redis_data mount /dev/vg0/redis_data /var/lib/redis 

20.4 PostgreSQL 表空间与 LVM


			   bashlvcreate -L 200G -n pg_index vg0 mkdir /var/lib/pgsql/index mount /dev/vg0/pg_index /var/lib/pgsql/index 

			   sqlCREATE TABLESPACE ts_index LOCATION '/var/lib/pgsql/index'; CREATE INDEX idx_user ON users(id) TABLESPACE ts_index; 

20.5 MongoDB 与 LVM


			   bashlvcreate -L 1T -n mongo_data vg0 mkfs.xfs /dev/vg0/mongo_data mount /dev/vg0/mongo_data /var/lib/mongo 

20.6 Elasticsearch 与 LVM


			   bashlvcreate -L 5T -n es_data vg0 lvcreate -L 1T -n es_logs vg0 

判断:数据和日志分开 LV。

20.7 Kafka 与 LVM


			   bashlvcreate -L 10T -n kafka_data vg0 mkfs.xfs /dev/vg0/kafka_data 

20.8 数据库 LVM 的备份策略

  1. 快照备份:秒级,COW 空间
  2. LVM mirror:实时副本
  3. LVM RAID:抗磁盘故障
  4. LVM thin:节省空间

20.9 数据库 LVM 的恢复


			   bashlvconvert --merge /dev/vg0/mysql_snap 

判断:merge 会自动恢复。

20.10 数据库 LVM 监控

  • VG 空闲
  • LV 使用率
  • snapshot 占用
  • thin pool data_percent

二十一、LVM 与容器的组合

21.1 容器数据目录 LVM


			   bashlvcreate -L 1T -n docker_data vg0 mkfs.xfs /dev/vg0/docker_data mount /dev/vg0/docker_data /var/lib/docker 

21.2 容器镜像 LVM


			   bashlvcreate -L 500G -n docker_imagedata vg0 mount /dev/vg0/docker_imagedata /var/lib/docker/image 

21.3 Kubernetes 数据 LVM


			   bashlvcreate -L 5T -n k8s_data vg0 mount /dev/vg0/k8s_data /var/lib/kubelet 

21.4 容器 LVM 快照备份


			   bashlvcreate -s -L 100G -n docker_snap /dev/vg0/docker_data 

21.5 容器 thin pool


			   bashlvcreate -L 100G --thinpool docker_thin vg0 lvcreate -V 1T --thin -n container1 docker_thin 

判断:thin LV 适合容器,每个容器独立 LV。

21.6 容器 thin pool 监控


			   bashlvs -o +data_percent docker_thin 

21.7 容器 LVM 扩容


			   bashlvextend -L +100G vg0/docker_thin 

21.8 容器 LVM 与 overlay


			   bashmkfs.xfs /dev/vg0/container_overlay mount /dev/vg0/container_overlay /var/lib/docker/overlay2 

21.9 容器 LVM 性能

容器内 IO 抖动时,把 LV 放 SSD。

21.10 容器 LVM 与 NFS


			   bashmount -t nfs server:/data /var/lib/docker 

判断:NFS 与 LVM 二选一。

二十二、LVM 在不同发行版的差异

22.1 RHEL/CentOS

  • 默认安装时使用 LVM
  • 用 dnf 安装 lvm2
  • 配置 /etc/lvm/lvm.conf

22.2 Ubuntu/Debian

  • 桌面默认不带 LVM
  • 服务器可手动配置
  • 用 apt install lvm2

22.3 SUSE

  • 默认 LVM
  • 用 yast 配置

22.4 阿里云 Anolis OS

  • 兼容 CentOS
  • 同 RHEL

22.5 国产 OS

  • 麒麟、统信 UOS 默认支持 LVM

22.6 内核要求

LVM 在 Linux 2.4+ 内核支持,所有现代发行版都可用。

22.7 udev 集成


			   bashudevadm trigger 

22.8 systemd 集成


			   bashsystemctl status lvm2-monitor 

22.9 自动激活配置


			   bashauto_activation_volume_list = [ "vg0/data""centos/root" ] 

判断:白名单自动激活的 LV,避免误激活加密盘。

22.10 跨发行版迁移

LVM 元数据在不同发行版间兼容。直接 vgexport/vgimport:


			   bashvgexport vg0 vgimport vg0 

二十三、LVM 监控与告警

23.1 关键指标

  • VG free:避免空闲为 0
  • LV data%:thin pool 使用率
  • snapshot percent:快照占用
  • IO util:LV 对应设备
  • pvmove 状态:迁移进度

23.2 Prometheus 集成


			   yaml- alert: VGLowSpace   expr: (node_lvm_vg_free_bytes / node_lvm_vg_size_bytes) < 0.1   for: 30m   annotations:     summary: "VG free space < 10 percent" - alert: ThinPoolHighUsage   expr: node_lvm_lv_data_percent > 80   for: 30m 

23.3 自定义监控脚本


			   pythonimport subprocess import json def parse_vgs():     result = subprocess.run(['vgs''--reportformat''json''-o''vg_name,vg_free,vg_size'],                            capture_output=True, text=True)     return json.loads(result.stdout) vgs = parse_vgs() for vg in vgs['report'][0]['vg']:     free = int(vg['vg_free'].replace('B'''))     size = int(vg['vg_size'].replace('B'''))     percent = (1 - free / size) * 100     print(f"VG {vg['vg_name']}{percent:.1f} percent used") 

23.4 告警通道

  • 钉钉机器人
  • 飞书机器人
  • 企业微信
  • 邮件
  • SMS

23.5 告警分级

  • critical:VG 空闲 < 5%
  • warning:VG 空闲 < 20%
  • info:VG 空闲 < 30%

23.6 巡检自动化

把 LVM 巡检接入:

  • cron
  • systemd timer
  • Ansible playbook
  • SaltStack state

23.7 容量规划

  • 历史趋势分析
  • 业务增长预测
  • 提前扩容
  • 容量盘点

23.8 性能监控

  • LV IO util
  • PV IO util
  • pvmove 进度
  • 快照 IO 影响

23.9 告警收敛

多个 LVM 告警关联到一个根因。

23.10 告警演练

每月做一次告警演练。

二十四、LVM 与备份

24.1 LVM 快照备份


			   bashlvcreate -s -L 10G -n data_snap /dev/vg0/data mount /dev/vg0/data_snap /mnt/snap rsync -a /mnt/snap/ /backup/ umount /mnt/snap lvremove /dev/vg0/data_snap 

24.2 LVM 与 BorgBackup


			   bashlvcreate -s -L 10G -n data_snap /dev/vg0/data mount /dev/vg0/data_snap /mnt/snap borg create /backup/repo::snapshot /mnt/snap umount /mnt/snap lvremove /dev/vg0/data_snap 

24.3 LVM 与 tar


			   bashlvcreate -s -L 10G -n data_snap /dev/vg0/data mount /dev/vg0/data_snap /mnt/snap tar czf /backup/data.tgz -C /mnt/snap . umount /mnt/snap lvremove /dev/vg0/data_snap 

24.4 LVM 与 rsync


			   bashlvcreate -s -L 10G -n data_snap /dev/vg0/data mount /dev/vg0/data_snap /mnt/snap rsync -a /mnt/snap/ /backup/data/ umount /mnt/snap lvremove /dev/vg0/data_snap 

24.5 LVM 与 ZFS

不建议同时使用,层叠复杂。

24.6 LVM 与 mysqldump

mysqldump 是逻辑备份,LVM 快照是物理备份,两者结合:

  1. mysqldump 备份 schema 和数据
  2. LVM 快照备份二进制日志

24.7 LVM 与 btrfs

btrfs 自带快照,不建议叠用。

24.8 LVM 与 xfs

xfs 自带 xfsdump:


			   bashlvcreate -s -L 10G -n data_snap /dev/vg0/data mount /dev/vg0/data_snap /mnt/snap xfsdump -f /backup/data.dump /mnt/snap umount /mnt/snap lvremove /dev/vg0/data_snap 

24.9 LVM 与 Restic


			   bashlvcreate -s -L 10G -n data_snap /dev/vg0/data mount /dev/vg0/data_snap /mnt/snap restic backup /mnt/snap umount /mnt/snap lvremove /dev/vg0/data_snap 

24.10 LVM 备份策略

  • 每天快照备份
  • 每周全量备份
  • 每月归档
  • 备份定期验证
  • 备份异地保存

二十五、LVM 与高可用

25.1 LVM 与 Pacemaker


			   bashpcs resource create lv_data ocfLVM volgrpname=vg0 exclusive=true pcs resource create fs_data ocfFilesystem device=/dev/vg0/data directory=/data fstype=xfs 

25.2 LVM 与 drbd

DRBD + LVM 是经典组合:


			   bashlvcreate -L 100G -n drbd_data vg0 drbdmanage add-volume drbd_data 100G 

25.3 LVM 与 iSCSI

iSCSI target 用 LV 做后端:


			   bashlvcreate -L 500G -n iscsi_lun vg0 targetcli /backstores/block/ create name=lun1 dev=/dev/vg0/iscsi_lun 

25.4 LVM 与集群

集群 LVM 用 dlm:


			   bashlvmconf --enable-cluster 

25.5 LVM mirror


			   bashlvcreate --type mirror -L 100G -m 1 -n data vg0 

判断:LVM 自带镜像,无需硬件 RAID。

25.6 LVM 与 GlusterFS

GlusterFS brick 可以放 LV:


			   bashlvcreate -L 10T -n gluster_brick vg0 mkfs.xfs /dev/vg0/gluster_brick mount /dev/vg0/gluster_brick /var/lib/glusterfs/brick 

25.7 LVM 与 Ceph

Ceph OSD 用 LV:


			   bashlvcreate -L 10T -n ceph_osd vg0 

25.8 LVM 与 HDFS

DataNode 用 LV:


			   bashlvcreate -L 100T -n hdfs_data vg0 

25.9 LVM 与 S3 兼容存储

MinIO 用 LV:


			   bashlvcreate -L 50T -n minio_data vg0 mount /dev/vg0/minio_data /var/lib/minio 

25.10 LVM 与云原生

CSI 驱动支持 LVM provisioner:


			   yamlapiVersion: storage.k8s.io/v1 kind: StorageClass metadata:   name: lvm-sc provisioner: lvmplugin.example.com parameters:   vgName: vg0 

二十六、LVM 的限制与边界

26.1 LV 数量上限

65536 个 PE 是单个 LV 上限:

  • PE=4M:最大 LV = 256G
  • PE=8M:最大 LV = 512G
  • PE=16M:最大 LV = 1T

26.2 VG 数量上限

理论上 LV 总数有限(实际由 LV 数量决定)。

26.3 快照限制

  • COW 表大小固定(创建时指定)
  • 超过会失效
  • 性能影响原始 LV

26.4 thin pool 限制

  • 超过 thin pool 大小会写入失败
  • metadata 耗尽也会失败

26.5 cache 限制

  • cache pool 大小影响命中率
  • 写穿透影响性能

26.6 RAID 限制

  • LVM RAID5/6 写性能差
  • 重建时间长

26.7 文件系统限制

  • ext4 单文件最大 16TB
  • xfs 单文件最大 8EB
  • xfs 不支持缩容

26.8 备份限制

  • 快照不是备份
  • 必须独立介质存储

26.9 性能限制

  • 软件 IO 栈开销
  • 多层抽象损耗

26.10 迁移限制

  • 跨架构迁移难
  • 跨内核版本兼容性

二十七、LVM 与内核 IO 栈

27.1 IO 栈层次

应用 fsync、VFS、文件系统、LVM (device-mapper)、MD 或硬件 RAID、设备驱动、硬件。

27.2 各层开销

  • VFS:1-5%
  • FS:5-10%
  • DM:1-3%
  • MD:5-15%
  • 驱动:1-5%

判断:层叠增加延迟。LVM 单层通常 < 5%。

27.3 绕过 LVM 的场景

  • 直接绑 IO:io_uring
  • DPDK 用户态 IO
  • SPDK 内核旁路

判断:高性能场景可以绕过 LVM。

27.4 LVM 与 io_uring

LVM 支持 io_uring,性能优于传统 IO。

27.5 LVM 与 NVMe-oF

远程 NVMe 通过 LVM:


			   bashnvme connect -t rdma -n subsystem -a ip -s 4420 pvcreate /dev/nvme0n1 

27.6 LVM 与 multi-queue


			   bashcat /sys/block/dm-0/queue/nr_requests 

判断:dm 多队列默认开启。

27.7 LVM 与 cgroup


			   bashcat /sys/fs/cgroup/blkio/system.slice/lvcheck.service/blkio.throttle.read_bps_device 

判断:cgroup 可以限制 LV 的 IO。

27.8 LVM 与 NUMA


			   bashnumactl --cpunodebind=0 --membind=0 dd if=/dev/zero of=/dev/vg0/test bs=1M count=1000 

判断:NUMA 跨 socket 访问 LV 会慢。

27.9 LVM 与透明大页


			   bashcat /sys/kernel/mm/transparent_hugepage/enabled 

判断:数据库建议 never。

27.10 LVM 与 hugeTLB


			   bashmount -t hugetlbfs hugetlbfs /mnt/huge 

判断:大页适合大内存应用。

二十八、LVM 实战手册速查

28.1 扩容(标准流程)


			   bashdf -h /data vgs lvextend -l +100%FREE /dev/vg0/data xfs_growfs /data df -h /data 

28.2 加盘扩容


			   bashpvcreate /dev/sdc1 vgextend vg0 /dev/sdc1 lvextend -l +100%FREE /dev/vg0/data xfs_growfs /data 

28.3 缩容 ext4


			   bashumount /data e2fsck -f /dev/vg0/data resize2fs /dev/vg0/data 80G lvreduce -L 80G /dev/vg0/data mount /data 

28.4 快照备份


			   bashlvcreate -s -L 10G -n data_snap /dev/vg0/data mount /dev/vg0/data_snap /mnt/snap rsync -a /mnt/snap/ /backup/ umount /mnt/snap lvremove /dev/vg0/data_snap 

28.5 数据迁移


			   bashpvcreate /dev/sdd1 vgextend vg0 /dev/sdd1 pvmove /dev/sdc1 /dev/sdd1 vgreduce vg0 /dev/sdc1 pvremove /dev/sdc1 

28.6 删除 LV


			   bashumount /data lvremove /dev/vg0/data 

28.7 删除 VG


			   bashvgremove vg0 

28.8 删除 PV


			   bashvgreduce vg0 /dev/sdc1 pvremove /dev/sdc1 

28.9 恢复 VG 元数据


			   bashcp /etc/lvm/backup/vg0.bak /etc/lvm/backup/vg0 vgcfgrestore vg0 

28.10 看 LVM 拓扑


			   bashpvs vgs lvs -o +devices 

二十九、LVM 与其他存储方案对比

29.1 LVM vs ZFS

  • ZFS:自带 RAID、快照、压缩、checksum
  • LVM:成熟、稳定、生态好

29.2 LVM vs btrfs

  • btrfs:自带快照、子卷、COW
  • LVM:与现有 FS 兼容性好

29.3 LVM vs Stratis

  • Stratis:RHEL 8+ 新一代
  • LVM:成熟方案

29.4 LVM vs hardware RAID

  • hardware RAID:性能好,成本高
  • LVM:灵活,成本低

29.5 LVM vs software RAID

  • software RAID(mdadm):稳定
  • LVM RAID:与 LVM 集成

29.6 LVM 在云上

  • AWS:EBS + LVM
  • Azure:Managed Disks + LVM
  • 阿里云:云盘 + LVM

29.7 LVM 与 Docker volume

  • Docker volume driver 支持 LVM
  • 也支持 overlay、btrfs、zfs

29.8 LVM 与 KVM

  • KVM 虚拟磁盘放 LVM
  • LVM thin 适合大量 VM

29.9 LVM 与 OpenStack

  • Cinder 支持 LVM backend
  • Nova 用 LVM 做本地存储

29.10 LVM 未来

  • 未来存储更多是云原生
  • LVM 仍是数据中心基础

三十、本文总结

LVM 是运维的基本功。三层结构 + 几组命令 + 元数据备份,把这一篇里的命令多跑几遍,遇到 LVM 故障按章节走,比临时查资料高效得多。

关键动作:

  1. 看现状:pvs / vgs / lvs / df -h
  2. 加盘:pvcreate / vgextend
  3. 扩容:lvextend / xfs_growfs / resize2fs
  4. 缩容:lvreduce / resize2fs(XFS 不支持)
  5. 备份元数据:vgcfgbackup
  6. 恢复元数据:vgcfgrestore
  7. 快照:lvcreate -s
  8. 迁移:pvmove

记住一句话:LVM 不是玄学,三层结构 + 命令链 + 备份习惯。

 


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分