Skip to content
0

删除数据盘上的lvm

实战-删除数据盘上的lvm-20250725(测试成功)

问题

2025年7月25日测试。

bash
有如下环境:
一台linux机器,有12块数据盘,一块系统盘。12块数据盘做了lvm,加进了一个vg00卷组。  此时我手动重装系统后,发现12块数据盘还存在老分区,老卷组还在,请问如何删除老卷组及格式化这12个数据盘?

环境:

image-20250725100203469

image-20250725100305773

回答

gpt回答

在重装系统后清理旧的LVM卷组(VG)和分区,并重新格式化12块数据盘的步骤如下:


步骤1:确认当前磁盘和LVM状态

bash
# 查看所有磁盘信息(确认12块数据盘设备名,如/dev/sdb, /dev/sdc等)
lsblk -f

# 检查残留的LVM信息(查看旧VG是否仍被系统识别)
vgs
pvs
lvs

步骤2:删除旧LVM配置(若VG仍存在)❤️

bash
# 1. 停用旧卷组(假设旧VG名为vg00)
vgchange -a n vg00  # 停用VG

# 2. 删除逻辑卷(LV)
lvremove /dev/vg00/*  # 删除VG下所有LV
#实际配置过程中,这一步骤没做的,提示找不到vg00,但是不影响效果!!!

# 3. 删除卷组(VG)
vgremove vg00

# 4. 删除物理卷(PV)
pvremove /dev/sd[b-m]1  # 假设数据盘为sdb-sdm,且原有分区为sdX1

步骤3:彻底清除旧分区表

bash
# 使用wipefs擦除磁盘签名(对所有数据盘操作,例如sdb-sdm)
for disk in /dev/sd{b..m}; do
  wipefs -a $disk  # 清除所有文件系统、RAID、LVM签名
  echo "已清除 $disk 的签名"
done

# 验证签名是否清除(应无输出)
blkid /dev/sd{b..m}

效果:(符合预期。)

image-20250725101030119

image-20250725101118531

步骤4:重新分区(可选)

如果需要重新分区(例如直接使用整盘不分区,或创建新分区):

bash
# 方案A:直接使用整盘(推荐LVM场景)
for disk in /dev/sd{b..m}; do
  echo -e "g\nn\n\n\n\nw\n" | fdisk $disk  # 创建GPT分区表和一个完整分区
  partprobe $disk
done

# 方案B:手动交互式分区(以/dev/sdb为例)
fdisk /dev/sdb
# 交互命令:g(创建GPT表)→ n(新建分区)→ 回车(默认全盘)→ w(保存)

步骤5:创建新文件系统(格式化)

bash
# 示例:格式化为ext4(对每个数据盘的分区,如/dev/sdb1)
for partition in /dev/sd{b..m}1; do
  mkfs.ext4 -F $partition
  echo "已格式化 $partition 为ext4"
done

# 或格式化为XFS(高性能场景)
for partition in /dev/sd{b..m}1; do
  mkfs.xfs -f $partition
done

关键注意事项

  1. 数据安全

    • 操作前确认磁盘设备名(lsblk输出),避免误操作系统盘(通常是sda)。
    • 如果数据需保留,务必先备份!
  2. LVM残留处理

    • 若旧VG仍激活,需先停用(vgchange -a n),否则删除会失败。
  3. 多路径设备
    如果使用多路径设备(如/dev/mapper/mpath*),需通过multipath -ll确认并清理。

  4. 自动化脚本
    可保存以下完整脚本为clean_disks.sh

    bash
    #!/bin/bash
    VG_NAME="vg00"
    DISKS=(/dev/sd{b..m})
    
    # 停用并删除旧LVM
    if vgs $VG_NAME &>/dev/null; then
      vgchange -a n $VG_NAME
      lvremove -f /dev/$VG_NAME/*
      vgremove -f $VG_NAME
      pvremove -f ${DISKS[@]}1
    fi
    
    # 清除磁盘
    for disk in ${DISKS[@]}; do
      wipefs -a $disk
      echo -e "g\nn\n\n\n\nw\n" | fdisk $disk
      mkfs.xfs -f ${disk}1
    done

验证结果

bash
# 检查无残留VG/VG
vgs; pvs; lvs

# 确认新文件系统
lsblk -f

执行完毕后,12块数据盘将处于干净状态,可重新用于LVM或直接挂

最近更新