一键自动创建磁盘并挂载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
#! /bin/bash #注:只有硬盘没有做过系统才能这么搞,如果有做过文件系统会直接返回异常信息。 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 |
0 Comments