【shell脚本】新硬盘制作成lv,并挂载使用

#! /bin/bash

#注:只有硬盘没有做过系统才能这么搞,如果有做过文件系统会直接返回异常信息。

set -x
exec &>> /tmp/mount_disk.log

diskEmpty=""
nameOfLv="lv_data"
nameOfVg="vg_data"
pathOfLog="/tmp/mkfs.log"
pathOfMount="/data"

echo -e "\n\n`date '+%Y-%m-%d %H:%M:%S'` ###" >> $pathOfLog
#验证磁盘是否为空,如果为空则把磁盘名称放入diskEmpty中,空格区分
for i in `lsblk -l | grep disk |awk '{print $1}'`
do
isEmpty=1
for j in `hexdump -n 170000 -C /dev/$i | head -1000 | awk -F'|' '{print $2}' | grep -v '^$' |awk -F'.' '{print NF-1}'`
do
if [ $j -ne 16 ];then
echo "Warnning: disk /dev/$i have data。please check the data of the disk 。" >> $pathOfLog
isEmpty=0
break
fi
done
if [ $isEmpty -eq 1 ];then
diskEmpty="$diskEmpty"" /dev/$i"
fi
done
echo $diskEmpty

#创建逻辑卷和逻辑盘
vgcreate $nameOfVg $diskEmpty &>> $pathOfLog
lvcreate -l 100%FREE -n $nameOfLv $nameOfVg &>> $pathOfLog

#验证是否创建成功,如果失败则退出
lvscan |awk -F"'" '{print $2}' | awk -F '/' '{print $4}' | grep "^$nameOfLv$" &>> $pathOfLog

if [ $? -ne 0 ];then
echo "ERROR: no exists device of $nameOfLv named !" &>> $pathOfLog
exit 1
fi

#获取用于格式化文件系统的真实绝对路径
pathOfDeviceFormkfs=`lvscan |awk -F"'" '{print $2}'|grep "$nameOfLv$"`
echo 'pathOfDeviceFormkfs:' `lvscan |awk -F"'" '{print $2}'|grep "$nameOfLv$"`

#在该逻辑卷上制作文件系统
mkfs.xfs $pathOfDeviceFormkfs &>> $pathOfLog

#获取新创建的逻辑卷的真实绝对路径
pathOfDevice=`blkid |awk -F":" '{print $1}'|grep "$nameOfLv$"`
#检查挂载点是否存在,不存在则创建
[ ! -d $pathOfMount ] && mkdir $pathOfMount &>> $pathOfLog

#获取该逻辑卷的uuid和文件系统类型
infoOfDevice=`blkid |grep "^$pathOfDevice" | awk '{print $2" "$3}' | awk -F'"' '{print $2" "$4}'`

uuid=`echo "$infoOfDevice" | awk '{print $1}'`
typeOfFs=`echo "$infoOfDevice" | awk '{print $2}'`

#保证两个变量值存在,如果不存在就不做任何临时和永久的挂载操作。
[ -z "$uuid" ] && echo "uuid is null!" &>> $pathOfLog && exit
[ -z "$pathOfDevice" ] && echo "pathOfDevice is null!" &>> $pathOfLog && exit
#将挂载信息写入fstab并挂载
for i in `cat -n /etc/fstab | awk '{print $1" "$2}' | grep -E "$uuid|$pathOfDevice" | awk '{print $1}'`
do
sed -n "${i}p" /etc/fstab >> $pathOfLog
echo "warnning: 该数据将删除!"
done

echo "UUID=$uuid $pathOfMount $typeOfFs defaults 0 0" >> /etc/fstab

mount -a &>> $pathOfLog

echo "Info: 文件系统挂载完成" >> $pathOfLog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值