Centos x86万能磁盘挂载初始化和lvm分区初始化 shell脚本

lvm-chushihua.sh

#!/bin/bash
#创建主界面
function initallPly(){
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "****************************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*****1.创建分区*************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*******a1.创建pv************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*******b1.创建vg************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*******c1.创建lv************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*******d1.扩容lv************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*******d2.调整VG************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*****d3.格式化LV分区后挂载磁盘*********"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*****2.卸载LV分区*************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*******3.删除lv************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*******4.删除vg****"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*****5.删除PV*********"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*****6.删除磁盘分区*********"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*****q.退出*********"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "****************************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
          read -p "请选择操作【1或者2】:" imput
                 case  $imput in
                  1)
                    fdiskC
                    ls -l /dev/sd*
                    initallPly
                  ;;
                  a1)
                   pvC
                   initallPly
                  ;;
                  b1)
                   vgC
                   initallPly
                  ;;
                  c1)
                   lvC
                   initallPly
                  ;;
                  d1)
                   extendLv
                   initallPly
                  ;;
                  d2)
                  reaexVg
                  initallPly
                  ;;
                  d3)
                    geS
                    initallPly
                  ;;
                  2)
                    umountS
                    initallPly
                  ;;
                  3)
                   removeLV
                   initallPly
                  ;;
                  4)
                 removeVG
                   initallPly
                  ;;
                  5)
                    removePV
                    initallPly
                  ;;
                  6)
                    fdiskD
                    initallPly
                  ;;
                  q)
                    return
                  ;;
                  *)
                    echo "输入不正确!请重新输入"
                     initallPly
                  ;;
                 esac
}
#创建分区
function fdiskC(){
   read -p "请输入磁盘序列号,如sdb sdc sdd多个,以空格隔开: " imput
   code=$imput
   for i  in $code
   do
     {
   read -p "请输入分配磁盘的大小,如100: " num
 fdisk /dev/$i <<EOF
p
n
p
1

+$numG
n
p
2


t
1
8e
t
2
8e
w
EOF
    echo "创建分区成功!"
    echo -ne "\\n" 1>&9
    fdisk /dev/$i
   
   }
   done
   wait
   echo 9<&-
   echo 9>&-
}
#pv创建
function pvC(){
   read -p "请输入需要创建pv的磁盘分区,如sdc,sdd,sde1,sde2,sde: " imput
   code=$imput
   for j  in $code
   do
    pvcreate /dev/${j}
   done
    pvs

}
#vg创建
function vgC(){
   read -p "请输入需要创建的vg名称: " imput
   ls -l | grep sd* || ls -s |grep vd*
   read -p "请根据上述输入几个磁盘分区名称: " vgnum
   read -p "请根据上述输入需要创建卷组的第一个分区名称,如/dev/sdb: " pvc1
   read -p "请根据上述输入需要创建卷组的第两分区名称,如/dev/sdc: " pvc2
 
    if [ $vgnum == 1 ];then
     vgcreate ${imput} ${pvc1}
    else
     vgcreate ${imput} ${pvc1} ${pvc2}
    fi
   vgs
}
#lv创建
function lvC(){
   read -p "请输入需要在哪个卷组中创建: " vgname
   read -p "请输入需要创建的lv2名称: " lvname2
   read -p "请输入需要创建多少个LV逻辑卷: " lvnum
   for(( j=0;j<$lvnum;j++  ))
   do
   read -p "请输入卷组分多少G,切记不可累计超过vg总量:" lvsum
   read -p "请输入需要创建的lv1名称: " lvname1
       if [ j == $lvnum  ];then
        lvcreate -l +100%FREE -n ${lvname2} ${vgname}
        lvextend -L +100%FREE /dev/${vgname}/${lvname2}
       else
         lvcreate -n ${lvname1} -L +${lvsum}G ${vgname}
       fi
   done
   lvs
}
#删除分区
function fdiskD(){
  read -p "请输入需要删除分区的磁盘序列号,如sde1 sde2多个,以空格隔开: " imput
  read -p "请输入需要删除分区的磁盘个数: " sum
  code=$imput
  for i  in $code
  do
  read -p "请输入需要删除分区的磁盘序列号,如sdb sdc sdd多个,以空格隔开: " ciname
  if [ $sum == 2 ];then
echo "
d

d

w" | fdisk /dev/$ciname
    echo "删除${ciname}"1" ${ciname}"2"的分区成功!"
 else
echo "

d
w" | fdisk /dev/$ciname
 fi
 done
 wait
 echo 9<&-
 echo 9>&-
}
#设置VG菜单
function reaexVg(){
            eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "****************************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*****1.调整vg配额*************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*****2.删除整个vg************"
          eval  printf \\' %.0s\\' {1..$((41 - 1))}
               echo "*****************************"
          read -p "请选择操作【1 或者 2 ,q为退出到主界面】:" imput
          case $imput in
              1)
              extendVg
              reaexVg
              ;;
              2)
              removeVG
              reaexVg
              ;;
              q)
               initallPly
              ;;
              *)
               reaexVg
              ;;
          esac
}
#VG配额
function extendVg(){
    eval  printf \\' %.0s\\' {1..$((41 - 1))}
    echo "*******1.减少VG配额*********"
    eval  printf \\' %.0s\\' {1..$((41 - 1))}
    echo "*******2.扩展VG配额*********"
    eval  printf \\' %.0s\\' {1..$((41 - 1))}
    echo "****************************"
    read -p  "请选择操作【1-2 q退出到VG菜单】: " imput
    read -p "请输入调整的配额卷组名称:" vgname
    read -p "输入需要调整的磁盘,如果多个【sdb sdc sdb1】: " sdnames
    code=$sdnames
    zx=
    case $imput in
        1)
           zx="vgreduce"
                   reduceVg
                 
        ;;
        2)
           zx="vgextend"
        ;;
        q)
           reaexVg
        ;;
        *)
            echo "输入错误,请重新选择"
            extendVg
        ;;
    esac
    for sdn in $code
               do
                   `$zx  ${vgname} /dev/${sdnames}`
               done
    echo "操作完毕,配额已完成!"
    vgs
}    
#缩容vg
function reduceVg(){
   read -p "请输入需要在哪个卷组中缩容: " vgname
   read -p "输入需要调整的磁盘,如果多个【/dev/sdb /dev/sdc /dev/sdb1】: " sdnames
   vgreduce $vgname ${sdnames}
   vgs
}

#扩容lv-xfs
function extendLv(){
   read -p "请输入需要在哪个卷组中扩容: " vgname
   read -p "请输入需要在哪个lv组中扩容: " lvname
   lvextend -l +100%FREE /dev/$vgname/$lvname
   lvs  
   #xfs_growfs /dev/$vgname/$lvname
}
#扩容lv-ext4
function extendlv(){
   read -p "请输入需要在哪个卷组中扩容: " vgname
   read -p "请输入需要在哪个lv组中扩容: " lvname
   lvextend -l +100%FREE /dev/$vgname/$lvname
   lvs  
   resize2fs /dev/$vgname/$lvname
}
#xfs格式化后挂载
function geS(){
   read -p "请输入需要挂载几个盘: " sum
   for(( j=0;j<$sum;j++  ))
   do
   read -p "请输入需要挂载的卷组名: " vgname
   read -p "请输入需要挂载的lv名: " lvname
   read -p "请输入需要挂载的盘的路径,如/data,/opt等: "  gs_dir
   read -p "请输入使用什么方式格式化的盘,如xfs,ext4等: "  mkfsname
   if [ ! -f $gs_dir ];then
     mkdir -p $gs_dir
   fi
   mkfs.${mkfsname}  /dev/$vgname/$lvname
   echo "`blkid |grep $lvname|awk '{print $2}'` $gs_dir                 $mkfsname   defaults        0 0" >> /etc/fstab  
   sed -i "s/\"//g" /etc/fstab
   #echo "`blkid |grep $lvname|awk '{print $2}'|awk -F"\"" '{print "UUID""="$2}'` $gs_dir                 xfs   defaults        0 0" >> /etc/fstab  
   mount -a
   done
}
#卸载lv分区
function umountS(){
   read -p "请输入需要卸载几个盘: " num
   for(( j=0;j<$num;j++  ))
   do
   read -p "请输入需要卸载的卷组名: " vgname
   read -p "请输入需要卸载的lv名: " lvname
   umount /dev/mapper/$vgname-$lvname
   sed -i "/$lvname/d" /etc/fstab
   grep $lvname /etc/fstab
   df -hT
   done
}

#删除pv
function removePV(){
          read -p  "请输入已经删除的vg名称:" imput
                  read -p "输入需要删除的磁盘名称,如果多个【/dev/sdb /dev/sdc】: " sdnames
           vgs | grep "${imput}"  && echo "还存在vg,请先删除vg后操作。"  || pvremove ${sdnames}
}
#删除vg
function removeVG(){
          read -p  "请输入需要删除的vg名称:" imput
           lvs | grep "${imput}"  && echo "还存在lv,请先删除lv后操作。"  || vgremove ${imput}
}
#删除lv
function removeLV(){
   read -p "请输入需要删除的vg卷组名称: " vgname
   read -p "请输入需要删除多少个LV逻辑卷: " lvnum
   for(( j=0;j<$lvnum;j++  ))
   do
   read -p "请输入需要删除的LV逻辑卷名称: " lvname
       lvremove  /dev/$vgname/$lvname
   done
   lvs
}
initallPly

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS是一种流行的Linux发行版,用于服务器和个人计算机。初始化通用脚本旨在自动化CentOS服务器的初始配置和设置。以下是一个示例: ```bash #!/bin/bash # 更新系统 yum update -y # 安装常用软件 yum install -y git wget unzip # 配置防火墙 systemctl enable firewalld systemctl start firewalld firewall-cmd --zone=public --add-port=80/tcp --permanent # 添加HTTP端口 firewall-cmd --reload # 设置时区 timedatectl set-timezone Asia/Shanghai # 安装和配置NTP服务 yum install -y ntp systemctl enable ntpd systemctl start ntpd # 配置SSH服务 sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config systemctl restart sshd # 配置SELinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 配置Swap空间 dd if=/dev/zero of=/swapfile bs=1M count=2048 chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile swap swap defaults 0 0' >> /etc/fstab # 安装常用工具 yum install -y vim htop # 完成初始化 echo "CentOS初始化完成!" ``` 这个脚本首先通过`yum update -y`命令更新系统。然后使用`yum install -y`命令安装常用软件,如git、wget和unzip。接下来,配置防火墙以允许HTTP流量通过端口80。然后设置时区并安装、启用NTP服务以同步系统时间。之后,通过修改SSH配置文件启用密码身份验证,并重启SSH服务。接着,禁用SELinux以简化安全设置。最后,分配并启用Swap空间以增加系统的内存容量。最后一步安装vim和htop等常用工具。脚本结束时会显示一条提示信息,确认CentOS初始化已完成。 使用这个通用脚本可以快速为CentOS服务器进行初始配置,节省时间和工作量,并确保系统按照一致的标准进行设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值