嵌入式技术
关注上方浩道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
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !