当前位置: 首页 > article >正文

一键自动创建删除磁盘的逻辑卷信息

  最近在研究逻辑卷相关的知识,考虑到每次手动去清除硬盘上的逻辑卷信息和创建逻辑卷信息步骤比较繁琐,所以写了一个脚本来快速帮助我们实现目的。

方式一:通过指定硬盘去操作(相对灵活)

创建测试硬盘分区信息

因为我们后边需要在一块准备好的硬盘上边创建逻辑卷,所以我准备了一个测试脚本来帮助我们划分硬盘,可供参考。

#!/bin/sh

disk=$1

if [ $# -lt 1 ]; then
  echo "请指定一个磁盘设备作为参数(例如sda)"
  exit
fi

echo "磁盘名字为:"$disk
#---------------------------------------------------
parted /dev/$disk <<EOF
rm 1
rm 2
rm 3
rm 4
rm 5
rm 6
rm 7
rm 8
rm 9
quit
EOF
parted -s /dev/$disk mklabel gpt
parted /dev/$disk <<EOF
mkpart primary 0% 100
mkpart primary 100 1G
mkpart primary 1G 2G
mkpart primary 2G 3G
mkpart primary 3G 4G
mkpart primary 4G 5G
quit
EOF
sleep 3
mkfs.xfs -f /dev/${disk}1
mkfs.xfs -f /dev/${disk}2
mkfs.xfs -f /dev/${disk}3
mkfs.xfs -f /dev/${disk}4
mkfs.xfs -f /dev/${disk}5
mkfs.xfs -f /dev/${disk}6
#---------------------------------------------------

创建逻辑卷

这里我对硬盘划分了6个分区,对最后一个分区进行了逻辑卷操作,分配了分区的所有空间给逻辑卷。

注意: vgdata (卷组),一个环境中的卷组只有一个,不能在多块硬盘或多个分区中用同样的卷组名字。

#!/bin/sh

disk=$1

if [ $# -lt 1 ]; then
  echo "请指定一个磁盘设备作为参数(例如sda)"
  exit
fi

echo "磁盘名字为:"$disk

#制作逻辑卷,分区6做成逻辑卷
pvcreate -f /dev/${disk}6
vgcreate vgdata /dev/${disk}6
lvcreate -l 100%VG -n lvdata vgdata

echo "创建逻辑卷操作完毕!"

删除逻辑卷

删除逻辑卷不仅是需要删除整块硬盘上的逻辑卷,也包含了这块硬盘分区做的逻辑卷信息。

#!/bin/sh

disk=$1

if [ $# -lt 1 ]; then
  echo "请指定一个磁盘设备作为参数(例如sda)"
  exit
fi

echo "磁盘名字为:"$disk

#检测当前磁盘及其分区是否有逻辑卷
diskList=`lsblk -o NAME,TYPE | grep -E "disk|part" | grep $disk | awk '{print $1}' | sed 's/├─//g' | sed 's/└─//g'`
echo $diskList

#对每个磁盘或分区执行 LVM 检查
for disk in $diskList; do
  diskName="/dev/$disk"
  pv_check=`pvdisplay $diskName 2>/dev/null`
  if [ $? -eq 0 ]; then
    echo "$diskName 是物理卷"
    #获取卷组名称,删除卷组可以同时删除掉逻辑卷
    vgName=`pvscan | grep $diskName | awk '{print $4}'`
    echo "$diskName 的卷组是:$vgName"
    vgremove -f $vgName
    #删除物理卷
    pvremove -f $diskName
    #清除磁盘的文件系统信息
    wipefs -a $diskName
  else
    echo "$diskName 不是物理卷"
  fi
done

echo "删除逻辑卷操作完毕!"

方式二:直接全盘删除操作(扫描出来的硬盘均清理,干净彻底)

删除逻辑卷信息

#!/bin/sh
# 删除所有逻辑卷
echo "删除所有逻辑卷..."
lvscan | grep "ACTIVE" | awk '{print $2}' | sed 's/[[:space:]]//g' | sed 's/"//g' | while read lv_path; do
  # 去除路径两端的空白字符
  lv_path=$(echo "$lv_path" | xargs)

  # 检查逻辑卷路径是否有效
  if [ -b "$lv_path" ]; then
    echo "删除逻辑卷: $lv_path"
    lvremove -f "$lv_path"
  else
    echo "跳过无效路径: $lv_path"
  fi
done

# 删除所有卷组
echo "删除所有卷组..."
vgs --noheadings -o vg_name | while read vg_name; do
  echo "删除卷组: $vg_name"
  vgremove -f "$vg_name"
done

# 删除所有物理卷
echo "删除所有物理卷..."
pvs --noheadings -o pv_name | while read pv_name; do
  echo "删除物理卷: $pv_name"
  pvremove -f "$pv_name"
done

# 清除磁盘的文件系统信息
echo "清除磁盘的文件系统信息..."
for disk in /dev/sd?; do
  if [ -b "$disk" ]; then
    echo "清除 $disk 的文件系统信息..."
    wipefs -a "$disk"
  fi
done

http://www.kler.cn/a/453543.html

相关文章:

  • 大模型日报 2024-12-20
  • 完成SSH连接与端口映射并运行hello_world.py
  • 鸿蒙UI开发——使用WidthTheme实现局部深浅色
  • flink-1.16 table sql 消费 kafka 数据,指定时间戳位置消费数据报错:Invalid negative offset 问题解决
  • Vue项目中env文件的作用和配置
  • 分布式光纤传感|分布式光纤测温|线型光纤感温火灾探测器DTS|DTS|DAS|BOTDA的行业16年的总结【2024年】
  • 【Spring】基于XML的Spring容器配置——<bean>标签与属性解析
  • 【物联网技术与应用】实验15:电位器传感器实验
  • 浏览器工作原理与实践-12|栈空间和堆空间:数据是如何存储的
  • ChatGPT助力数据可视化与数据分析效率的提升(一)
  • Devolved AI:Athena2 推动去中心化人工智能的边界
  • 一维、线性卡尔曼滤波的例程(MATLAB)
  • 界面控件DevExpress v24.2新版亮点 - 支持.NET9、增强跨平台性
  • 龙迅#LT89121适用于8lane VBO转MIPI应用功能方案。
  • Posison Distribution
  • 【若依】用 post 请求传 json 格式的数据下载文件
  • nginx-代理服务
  • 校史馆云展厅适合远程教学吗?
  • Windows系统上创建Flask服务器
  • 服务器https证书过期处理、部署https证书教程