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

【真香系列】分享几个关于磁盘管理的shell脚本

点击关注👉👉 浩道linux 2022-11-28 07:50 发表于广东
图片关注上方浩道linux,回复资料,即可获取海量linuxPython网络通信等学习资料!

前言

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

浩道linux
浩道,专注工作与实践的一名IT民工。本号主要分享linux,python,网络通信相关干货。相聚在此,通过分享知识与经验,一起成长。
157篇原创内容

今天浩道跟大家分享几个关于磁盘管理的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

 

 

更多精彩

关注公众号「浩道linux」

浩道linux,专注于linux系统的相关知识、网络通信、python相关知识以及涵盖IT行业相关技能的学习,理论与实战结合,真正让你在学习工作中真正去用到所学。同时也会分享一些面试经验,助你找到高薪offer,让我们一起去学习,一起去进步,一起去涨薪!期待您的加入~~~关注回复“资料”可免费获取学习资料(含有电子书籍、视频等)。

浩道linux
浩道,专注工作与实践的一名IT民工。本号主要分享linux,python,网络通信相关干货。相聚在此,通过分享知识与经验,一起成长。
157篇原创内容

喜欢的话,记得点“赞”“在看”

收录于合集 #linux学习
 209
下一篇一款超牛逼的P2P内网穿透神器(附安装、使用教程)
阅读 168
 
写下你的留言
精选留言
  • 扩容呢
     
    后面再分享[呲牙]
     
    坐等[呲牙]
     
已无更多数据
 
 
posted @ 2022-11-28 21:20  往事已成昨天  阅读(139)  评论(0编辑  收藏  举报