hugo-teek is loading...

删除数据盘上的lvm

最后更新于:

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

问题

2025年7月25日测试。

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

环境:

image-20250725100203469

image-20250725100305773

回答

gpt回答

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


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

1# 查看所有磁盘信息(确认12块数据盘设备名,如/dev/sdb, /dev/sdc等)
2lsblk -f
3
4# 检查残留的LVM信息(查看旧VG是否仍被系统识别)
5vgs
6pvs
7lvs

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

 1# 1. 停用旧卷组(假设旧VG名为vg00)
 2vgchange -a n vg00  # 停用VG
 3
 4# 2. 删除逻辑卷(LV)
 5lvremove /dev/vg00/*  # 删除VG下所有LV
 6#实际配置过程中,这一步骤没做的,提示找不到vg00,但是不影响效果!!!
 7
 8# 3. 删除卷组(VG)
 9vgremove vg00
10
11# 4. 删除物理卷(PV)
12pvremove /dev/sd[b-m]1  # 假设数据盘为sdb-sdm,且原有分区为sdX1

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

1# 使用wipefs擦除磁盘签名(对所有数据盘操作,例如sdb-sdm)
2for disk in /dev/sd{b..m}; do
3  wipefs -a $disk  # 清除所有文件系统、RAID、LVM签名
4  echo "已清除 $disk 的签名"
5done
6
7# 验证签名是否清除(应无输出)
8blkid /dev/sd{b..m}

效果:(符合预期。)

image-20250725101030119

image-20250725101118531

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

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

1# 方案A:直接使用整盘(推荐LVM场景)
2for disk in /dev/sd{b..m}; do
3  echo -e "g\nn\n\n\n\nw\n" | fdisk $disk  # 创建GPT分区表和一个完整分区
4  partprobe $disk
5done
6
7# 方案B:手动交互式分区(以/dev/sdb为例)
8fdisk /dev/sdb
9# 交互命令:g(创建GPT表)→ n(新建分区)→ 回车(默认全盘)→ w(保存)

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

 1# 示例:格式化为ext4(对每个数据盘的分区,如/dev/sdb1)
 2for partition in /dev/sd{b..m}1; do
 3  mkfs.ext4 -F $partition
 4  echo "已格式化 $partition 为ext4"
 5done
 6
 7# 或格式化为XFS(高性能场景)
 8for partition in /dev/sd{b..m}1; do
 9  mkfs.xfs -f $partition
10done

关键注意事项

  1. 数据安全

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

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

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

     1#!/bin/bash
     2VG_NAME="vg00"
     3DISKS=(/dev/sd{b..m})
     4
     5# 停用并删除旧LVM
     6if vgs $VG_NAME &>/dev/null; then
     7  vgchange -a n $VG_NAME
     8  lvremove -f /dev/$VG_NAME/*
     9  vgremove -f $VG_NAME
    10  pvremove -f ${DISKS[@]}1
    11fi
    12
    13# 清除磁盘
    14for disk in ${DISKS[@]}; do
    15  wipefs -a $disk
    16  echo -e "g\nn\n\n\n\nw\n" | fdisk $disk
    17  mkfs.xfs -f ${disk}1
    18done
    

验证结果

1# 检查无残留VG/VG
2vgs; pvs; lvs
3
4# 确认新文件系统
5lsblk -f

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

推荐使用微信支付
微信支付二维码
推荐使用支付宝
支付宝二维码
最新文章

文档导航