分享几个关于磁盘管理的shell脚本

嵌入式技术

1368人已加入

描述

关注上方浩道linux,回复资料,即可获取海量linux、Python、网络通信等学习资料!

前言

大家好,这里是浩道linux,主要给大家分享linux、python、网络通信相关的IT知识平台。

今天浩道跟大家分享几个关于磁盘管理的shell脚本,助理自动化管理磁盘! 

一、实现磁盘分区的

只支持分配主分区和标准的linux文件系统(ext4/xfs)的分区

 

#! /bin/bash
# Function:对硬盘进行分区,得到一个标准的linux文件系统(ext4/xfs)的主分区
cat /proc/partitions > old
read -p "请输入你要分区的硬盘(写绝对路径,如:/dev/sda):" A
if [ -e $A ];then
  echo "true"
else
  echo "该设备不存在!!"
  exit
fi
read -p "请输入你要创建的磁盘分区类型(这里只能是主分区,默认按回车即可):" B
read -p "请输入分区数字,范围1-4,默认从1开始,默认按回车即可:" C
read -p "请输入扇区起始表号,默认按回车即可:" D
read -p "请输入你要分区的分区大小(格式:如 +5G ):" E
fdisk $A << EOF
n
p
$C
$D
$E
w
EOF
echo "一个标准的linux文件系统的分区已经建立好!!"
partprobe $A
echo "-------------------------------"
cat /proc/partitions
cat /proc/partitions > new
F=`diff new old | grep "<" | awk '{print $5}'`
echo "-------------------------------"
echo $F
echo "你想对新分区设定什么类型的文件系统?有以下选项:"
echo "A:ext4文件系统"
echo "B:xfs文件系统"
read -p "请输入你的选择:" G
case $G in
        a|A)
           mkfs.ext4 /dev/$F
           echo "该分区将被挂载在 "/mnt/$F" 下" 
           m=`ls /mnt/|grep $F | wc -l`
           if [ $m -eq 0 ];then
            mkdir /mnt/$F
           fi
           n=`cat /etc/fstab | grep /dev/$F| wc -l`
           if [ $n -eq 0 ];then
              echo "/dev/$F     /mnt/$F     ext4         defaults          0      0" >> /etc/fstab
           else
              sed -i '/^/dev/$F/c/dev/$F     /mnt/$F     ext4         defaults          0      0' /etc/fstab
           fi
           mount -a
           df -Th
;;
        b|B)
           mkfs.xfs -f /dev/$F
           echo "该分区将被挂载在 "/mnt/$F" 下" 
           m=`ls /mnt/|grep $F | wc -l`
           if [ $m -eq 0 ];then
              mkdir /mnt/$F
           fi
           n=`cat /etc/fstab | grep /dev/$F | wc -l`
           if [ $n -eq 0 ];then
              echo "/dev/$F     /mnt/$F      xfs       defaults          0      0" >> /etc/fstab
           else
              sed -i '/^/dev/$F/c/dev/$F     /mnt/$F     xfs         defaults          0      0' /etc/fstab
           fi
           mount -a
           df -Th
;;
        *)
           echo "你的输入有误!!"
esac

 

二、使用一整块硬盘创建逻辑卷

 

#!/bin/bash
# Function:使用一整块硬盘创建LVM逻辑卷
read -p "请输入你要做成逻辑卷的硬盘(写绝对路径,如:/dev/sda):" path
if [ -e $path ];then
  echo "true"
else
  echo "该设备不存在!!"
  exit
fi
pvcreate $path
echo "该硬盘已做成物理卷!"
vgcreate myvg $path
echo "该物理卷已加入卷组 myvg 中"
vgs
free=`vgs| awk '$1~/myvg/{print}'|awk '{print $6}'`
echo "该物理卷剩余的空间大小为:$free "
read -p "请输入你要创建逻辑卷的大小(如:1G):" repy2
lvcreate -L $repy2 -n mylv myvg
echo "已成功创建逻辑卷mylv"
echo "------------------------"
lvs
echo "------------------------"
echo "你想对新分区设定什么类型的文件系统?有以下选项:"
echo "A:ext4文件系统"
echo "B:xfs文件系统"
read -p "请输入你的选择:" repy3
case $repy3 in
        a|A)
           mkfs.ext4 /dev/myvg/mylv
           echo "该分区将被挂载在 "/mnt/mylv" 下" 
           m=`ls /mnt/|grep mylv | wc -l`
           if [ $m -eq 0 ];then
            mkdir /mnt/mylv
           fi
           echo "/dev/myvg/mylv     /mnt/mylv     ext4         defaults          0      0" >> /etc/fstab
           mount -a
           df -Th
;;
        b|B)
           mkfs.xfs -f /dev/myvg/mylv
           echo "该分区将被挂载在 "/mnt/mylv" 下" 
           m=`ls /mnt/|grep mylv | wc -l`
           if [ $m -eq 0 ];then
              mkdir /mnt/mylv
           fi
           echo "/dev/myvg/mylv     /mnt/mylv      xfs       defaults          0      0" >> /etc/fstab
           mount -a
           df -Th
;;
        *)
           echo "你的输入有误!!"
esac

 

三、将一块硬盘分区,然后分区设置为虚拟卷

 

#! /bin/bash
# Author:谢公子
# Date:2018-10-13
# Function:新建一个分区,并做成逻辑卷
cat /proc/partitions > old
read -p "请输入你要分区的硬盘(写绝对路径,如:/dev/sda):" A
if [ -e $A ];then
  echo "true"
else
  echo "该设备不存在!!"
  exit
fi
read -p "请输入你要创建的磁盘分区类型(这里只能是主分区,默认按回车即可):" B
read -p "请输入分区数字,范围1-4,默认从1开始,默认按回车即可:" C
read -p "请输入扇区起始表号,默认按回车即可:" D
read -p "请输入你要分区的分区大小(格式:如 +5G ):" E
read -p "请输入你要划分为逻辑卷的分区盘符(默认回车即可):" Z
fdisk $A << EOF
n
p
$C
$D
$E
t
$Z
8e
p
w
EOF
echo "一个标准LVM的分区已经建立好!!"
partprobe $A
echo "-------------------------------"
cat /proc/partitions
cat /proc/partitions > new
F=`diff new old | grep "<" | awk '{print $5}'`
echo "-------------------------------"
echo $F
pvcreate /dev/$F
echo "该硬盘已做成物理卷!"
n=`vgs | grep myvg |wc -l`
if [ $n -eq 0 ];then
   vgcreate myvg /dev/$F
   echo "该物理卷已加入卷组myvg中"
else
   vgextend myvg /dev/$F
   echo  "该物理卷已加入卷组myvg中"
   vgs
   free=`vgs| awk '$1~/myvg/{print}'|awk '{print $7}'`
   echo "该卷组剩余的空间大小为:$free "
   lvs
   exit
fi
vgs
free=`vgs| awk '$1~/myvg/{print}'|awk '{print $6}'`
echo "该卷组剩余的空间大小为:$free "
read -p "请输入你要创建逻辑卷的大小(如:1G):" repy2
lvcreate -L $repy2 -n mylv myvg
echo "已成功创建逻辑卷mylv"
echo "------------------------"
lvs
echo "------------------------"
echo "你想对新分区设定什么类型的文件系统?有以下选项:"
echo "A:ext4文件系统"
echo "B:xfs文件系统"
read -p "请输入你的选择:" G
case $G in
        a|A)
           mkfs.ext4 /dev/myvg/mylv
           echo "该分区将被挂载在 "/mnt/$F" 下" 
           m=`ls /mnt/|grep $F | wc -l`
           if [ $m -eq 0 ];then
            mkdir /mnt/$F
           fi
           echo "/dev/myvg/mylv     /mnt/$F     ext4         defaults          0      0" >> /etc/fstab
           mount -a
           df -Th
;;
        b|B)
           mkfs.xfs -f /dev/myvg/mylv
           echo "该分区将被挂载在 "/mnt/$F" 下" 
           m=`ls /mnt/|grep $F | wc -l`
           if [ $m -eq 0 ];then
              mkdir /mnt/$F
           fi
           echo "/dev/myvg/mylv     /mnt/$F      xfs       defaults          0      0" >> /etc/fstab
           mount -a
           df -Th
;;
        *)
           echo "你的输入有误!!"
esac

 

  审核编辑:汤梓红

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分