lvm盘制作脚本

脚本说明:

本脚适用于/dev/sda 系统盘之外的 所有盘全部整合成lvm,只有一个vg卷组,只有一个lv逻辑卷。
提供制作与删除两个模式,任选其一。

#!/bin/bash
#用法:除却系统盘之外的所有盘,若不想此盘作为lvm,可以加入“ grep -v ” ,本文需要修改2处,第一是制作lvm盘,第二十删除lvm格式两处
#注意:制作pv物理卷时,使用的是所有的sda1 、sdb1 ……带1的lvm的盘
#创建VG卷组的名称
vg_name=vg1
#创建LV逻辑卷的名称
lv_name=lv1
#将lv逻辑卷挂载在主机上的目录名
mount_name=/app1

case $1	in
	install)
              #---------------------------------------------1.制作lvm盘、重读分区表、制作PV盘-----------------------------------------------------------
               #除却系统盘之外的所有盘,如果想排除盘,这里可以加入grep -v ……
               for i in `fdisk -l|grep -v "/dev/sda"|grep "磁盘 /dev/sd"|awk '{print $2}'|awk -F ':' '{print $1}'`
               do
               	#硬盘名称
               	Disk=$i
               	#硬盘分区时的第一个主分区,该主分区占据全部硬盘容量
               	Disk1=$i\1
               	#判断上条命令执行成功与否的函数
               	panduan(){
               		if [ `echo $?` -eq 0 ];then
               			echo "$1 已完成"
               		else
               			echo "$1 未完成"
               		fi
               	}
               	#制作成lvm盘
               	echo "$Disk 制作lvm盘中…………";sleep 1
               	echo -e "n\np\n1\n\n\nt\n8e\nw" |fdisk $Disk >/dev/null
               	#检查是否是lvm盘,lvm编码 = 8e
               	if [ "`fdisk -l $Disk|grep 8e|awk '{print $5}'`" == "8e" ];then 
               		echo -e "lvm盘制作完成,$Disk 编号8e";sleep 1
               	#重读分区表
               		partprobe $Disk
			panduan "$Disk 重读分区表"
               	#创建PV物理卷
               		pvcreate $Disk1 >/dev/null
               		panduan "$Disk1 物理卷"
			echo "------------------------------------------"
               	else
               		echo "$Disk 编号不是8e 不是lvm盘,请检查磁盘!"
               	fi
               done
               #---------------------------------------------2.制作VG、LV盘以及LV盘格式化-----------------------------------------------------------
               #获取已制作的物理卷
               PV_set_of=`fdisk -l|grep -v "/dev/sda"|grep LVM|grep 8e|awk '{print $1}'|xargs echo`
               #创建VG卷组
	       echo "正在制作VG卷组……"
	       sleep 1
               vgcreate $vg_name $PV_set_of >/dev/null
               panduan "/dev/$vg_name 卷组-------------------"
               echo  
               #创建LV逻辑卷,100%使用VG卷组内的容量
               lvcreate -l 100%VG -n $lv_name $vg_name >/dev/null
               if [ `lvs |grep $lv_name|wc -l` -eq 1 ];then
               	echo "/dev/$vg_name/$lv_name 逻辑卷创建完毕"
               	sleep 1
               	#对lv逻辑卷进行ext4格式化
               	mkfs.ext4  /dev/$vg_name/$lv_name>/dev/null
               	panduan "/dev/$vg_name/$lv_name 格式化-------------------"
               else
               	echo "lv逻辑卷创建失败,请使用lvs查看"
               fi
               #---------------------------------------------3.挂载目录-----------------------------------------------------------
               #创建挂载目录,将lv逻辑卷挂载这个目录上
               mkdir $mount_name
               panduan "$mount_name 目录创建-------------------"
               #永久挂载,导入配置文件中,目前需要检查是否存在配置文件中,不然会一直导入
               if [ `grep "/dev/$vg_name/$lv_name" /etc/fstab |wc -l` -eq 1 ];then 
               	echo "/etc/fstab中已存在,无需重复写入。"
               else
               	echo "/dev/$vg_name/$lv_name  $mount_name ext4 defaults 0 0" >>/etc/fstab
               	if [ `grep "/dev/$vg_name/$lv_name" /etc/fstab |wc -l` -eq 1 ];then
               		echo "/dev/$vg_name/$lv_name  $mount_name ext4 defaults 0 0 写入/etc/fstab文件成功"
               	else
               		echo "/dev/$vg_name/$lv_name  $mount_name ext4 defaults 0 0 写入文件失败,请检查/etc/fstab"
               	fi
               fi
               #挂载配置文件立即生效
               mount -a 
               sleep 2
               #检查是否挂载成功
               if [ "`mount |grep $vg_name-$lv_name|awk -F '/' '{print $4}'|awk '{print $1}'`" == "$vg_name-$lv_name" ];then
               	echo -e "$mount_name 已挂载\n----------------------------------------------------------------------"
               else
               	echo "$mount_name 挂载失败"
               fi

	;;
	remove)
		#判断上条命令执行成功与否的函数
		panduan2(){
			if [ `echo $?` -eq 0 ];then
				echo "$1 已删除"
			else
				echo "$1 未删除"
			fi
		}
		#取消挂载
		mount|grep "$vg_name-$lv_name"|awk '{print $1}'|xargs umount
		#检查取消挂载是否成功
		if [ "`mount |grep $vg_name-$lv_name|awk -F '/' '{print $4}'|awk '{print $1}'`" == "$vg_name-$lv_name" ];then
				echo  "$mount_name 依旧挂载中,请检查配置文件以及命令。"
			else
					echo "$mount_name 已取消挂载";sleep 1
					#删除/etc/fstab配置文件中的lv挂载配置
					sed -i "/\/dev\/vg1\/lv1/d" /etc/fstab
					#检查配置文件中是否修改成功
					if [ `grep "/dev/$vg_name/$lv_name" /etc/fstab |wc -l` -eq 1 ];then 
							echo "/etc/fstab中 /dev/$vg_name/$lv_name  $mount_name ext4 defaults 0 0 配置依旧存在,请检查配置文件以及命令。"
					else
							echo "/dev/$vg_name/$lv_name  $mount_name ext4 defaults 0 0 挂载配置文件已删除"
							#删除挂载的目录
							rm -rf $mount_name
							#删除lv逻辑卷
							echo -e "y"|lvremove /dev/$vg_name/$lv_name >/dev/null
							panduan2 "$lv_name 逻辑卷"
							#删除vg卷组
							vgremove $vg_name >/dev/null
							panduan2 "$vg_name 卷组"
							#删除pv物理卷
							pvremove `fdisk -l|grep -v "/dev/sda"|grep LVM|grep 8e|awk '{print $1}'|xargs echo` >/dev/null
							panduan2 "`fdisk -l|grep -v "/dev/sda"|grep LVM|grep 8e|awk '{print $1}'|xargs echo` 物理卷" 
							echo "开始清除lvm的8e格式:"
							#删除lvm盘8e格式
							dev_sd=`fdisk -l|grep -v "/dev/sda"|grep -v 8e|grep "/dev/sd"|awk '{print $2}'|awk -F ':' '{print $1}'|xargs echo`
							for i in $dev_sd;do
								sleep 1
								echo -e "d\n1\nw" |fdisk $i >/dev/null
								panduan2 $i
							 done
					fi      
			fi
	;;
	*)
		echo "你的用法不对,用法:install | remove , 再试试吧……"
	;;
esac
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值