shell 自动创建磁盘分区 PV 、VG、 LV

设计思路:

1、创建磁盘分区变量集合

devName=("vdb" "vdc" "vdd" "vde")

2、创建for循环,磁盘分区数量 /dev/vdb0~3,用于在for循环中if判断磁盘分区是否已经存在

if 判断条件 \[ -b "目录名称"]

if \[ -b "/dev/${devName\[$a}1" ]];then

3、如磁盘分区不存在就创建磁盘分区 PV、VG、LV

在root用户下执行

cat diskcfg.sh

bash 复制代码
devName=("vdb" "vdc" "vdd" "vde")
for a in {0..3}
do
  echo "/dev/${devName[$a]}"
  # 判断磁盘是否存在
  ret0=`fdisk -l |grep /dev/${devName[$a]}`
  if [ "$ret0" == "" ];then
        echo "/dev/${devName[$a]} is not exit."
        continue;
  fi
    
  echo "$a"
  echo "/dev/${devName[$a]}1"
  if [[ -b "/dev/${devName[$a]}1" ]];then
     echo "这块磁盘已经分区,退出,请管理员检查"
  else
     echo "开始进行分区操作"
     echo "parted /dev/${devName[$a]} print"
        parted /dev/${devName[$a]} print
     echo "parted /dev/${devName[$a]} "mklabel gpt""
        parted /dev/${devName[$a]} "mklabel gpt ignore yes"
     echo "parted /dev/${devName[$a]} "mkpart primary xfs 1 -1""
        parted /dev/${devName[$a]} "mkpart primary xfs 1 -1 ignore"
     echo "parted /dev/${devName[$a]} "quit""
        parted /dev/${devName[$a]} "quit"
     echo "mkfs.xfs /dev/${devName[$a]}1"
       mkfs.xfs -f /dev/${devName[$a]}1
     echo "pvcreate /dev/${devName[$a]}1"
        pvcreate /dev/${devName[$a]}1 -y
     echo "mkdir /zol"
        if [ ! -d /zol ];then
            mkdir -p /zol
        fi

     echo "add /dev/${devName[$a]}1 to vgzol"
        vg=`vgs | awk '{if(NR>1){print $1}}' | grep "vgzol"`
        if [ "$vg" != "" ];then
            vgextend vgzol /dev/${devName[$a]}1 -f -y
        else
            vgcreate vgzol /dev/${devName[$a]}1 -f
        fi

     echo "add /dev/${devName[$a]}1 to lvzol"
        lv=`lvs | awk '{if(NR>1){print $1}}' | grep "lvzol"`
        if [ "$lv" != "" ];then
            lvresize -l +100%FREE -r /dev/vgzol/lvzol -f
        else
            lvcreate -n lvzol -L +2048G /dev/vgzol -y
            mkfs.xfs /dev/vgzol/lvzol
            mount /dev/vgzol/lvzol /zol
            echo "/dev/vgzol/lvzol /zol xfs defaults 0 0" >> /etc/fstab
        fi

     echo "df -h"
        df -h
     echo "----------------------------------------------------------------------------------"
  fi   
done
                                    
相关推荐
Sokach10157 小时前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
SelectDB1 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
AlfredZhao1 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3102 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
A小辣椒4 天前
TShark:Wireshark CLI 功能
linux
A小辣椒4 天前
TShark:基础知识
linux
AlfredZhao4 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao5 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi