功能:自动检测是否有尚未分区的数据盘,格式化新的数据盘并自动挂载
	
	解决了什么问题:一键式检测是否有尚未分区的数据盘,并能对其格式化和自动挂载,省去了复杂的命令和步骤
	执行方法:以root身份执行命令
	
	wget http://mirrors.linuxeye.com/scripts/auto_fdisk.sh
	chmod +x auto_fdisk.sh
	./auto_fdisk.sh
	
	结果:出现如下即自动分区、格式化、挂载成功:
	
	
	脚本内容如下:
	 
	#!/bin/bash
	# Author:  yeho <lj2007331 AT gmail.com>
	# BLOG:  https://blog.linuxeye.com
	#
	# Notes: OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+
	#
	# Project home page:
	#   http://oneinstack.com
	#   https://github.com/lj2007331/oneinstack
	export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
	clear
	printf "
	#######################################################################
	#   OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+  #
	# Auto fdisk  #
	#   For more information please visit http://oneinstack.com   #
	#######################################################################
	"
	 
	echo=echo
	for cmd in echo /bin/echo; do
	$cmd >/dev/null 2>&1 || continue
	if ! $cmd -e "" | grep -qE '^-e'; then
	echo=$cmd
	break
	fi
	done
	CSI=$($echo -e "\033[")
	CEND="${CSI}0m"
	CDGREEN="${CSI}32m"
	CRED="${CSI}1;31m"
	CGREEN="${CSI}1;32m"
	CYELLOW="${CSI}1;33m"
	CBLUE="${CSI}1;34m"
	CMAGENTA="${CSI}1;35m"
	CCYAN="${CSI}1;36m"
	CSUCCESS="$CDGREEN"
	CFAILURE="$CRED"
	CQUESTION="$CMAGENTA"
	CWARNING="$CYELLOW"
	CMSG="$CCYAN"
	 
	# Check if user is root
	[ $(id -u) != "0" ] && { echo "${CFAILURE}Error: You must be root to run this script${CEND}"; exit 1; }
	 
	MOUNT_DIR=/data
	FSTAB_FILE=/etc/fstab
	 
	count=0
	TMP1=/tmp/.tmp1
	TMP2=/tmp/.tmp2
	 
	> $TMP1
	> $TMP2
	 
	# check lock file, one time only let the script run one time
	LOCKfile=/tmp/.$(basename $0)
	if [ -f "$LOCKfile" ];then
	echo
	echo "${CWARNING}The script is already exist, please next time to run this script${CEND}"
	echo
	exit
	else
	echo
	echo "${CMSG}Step 1.No lock file, begin to create lock file and continue${CEND}"
	echo
	touch $LOCKfile
	fi
	 
	# check disk partition
	check_disk() {
	> $LOCKfile
	for i in `fdisk -l | grep "Disk" | grep "/dev" | awk '{print $2}' | awk -F: '{print $1}' | grep "vd"`
	do
	DEVICE_COUNT=$(fdisk -l $i | grep "$i" | awk '{print $2}' | awk -F: '{print $1}' | wc -l)
	NEW_MOUNT=$(df -h)
	if [ $DEVICE_COUNT -lt 2 ];then
	if [ -n "$(echo $NEW_MOUNT | grep -w "$i")" -o "$(grep -v '^#' $FSTAB_FILE | grep -v ^$ | awk '{print $1,$2,$3}' | grep -w "$i" | awk '{print $2}')" == '/' -o "$(grep -v '^#' $FSTAB_FILE | grep -v ^$ | awk '{print $1,$2,$3}' | grep -w "$i" | awk '{print $3}')" == 'swap' ];then
	echo "${CWARNING}The $i disk is mounted${CEND}"
	else
	echo $i >> $LOCKfile
	echo "You have a free disk, Now will fdisk it and mount it"
	fi
	fi
	done
	DISK_LIST=$(cat $LOCKfile)
	if [ "X$DISK_LIST" == "X" ];then
	echo
	echo "${CWARNING}No free disk need to be fdisk. Exit script${CEND}"
	echo
	rm -rf $LOCKfile
	exit 0
	else
	echo "${CMSG}This system have free disk :${CEND}"
	for i in `echo $DISK_LIST`
	do
	echo "$i"
	count=$((count+1))
	done
	[ $count -gt 1 ] && { echo "${CWARNING}This system has at least two free disk, You must manually mount it${CEND}"; exit 0; }
	fi
	}
	 
	# check os
	check_os() {
	os_release=$(grep "Aliyun Linux release" /etc/issue 2>/dev/null)
	os_release_2=$(grep "Aliyun Linux release" /etc/aliyun-release 2>/dev/null)
	if [ "$os_release" ] && [ "$os_release_2" ];then
	if echo "$os_release" | grep "release 5" >/dev/null 2>&1;then
	os_release=aliyun5
	modify_env
	fi
	fi
	}
	# install ext4
	modify_env() {
	modprobe ext4
	yum -y install e4fsprogs
	}
	 
	# fdisk ,formating and create the file system
	fdisk_fun() {
	fdisk -S 56 $1 << EOF
	n
	p
	1
	 
	wq
	EOF
	 
	sleep 5
	mkfs.ext4 ${1}1
	}
	 
	# make directory
	make_dir() {
	echo "${CMSG}Step 4.Begin to make directory${CEND}"
	[ -d "$MOUNT_DIR" ] && mv ${MOUNT_DIR}{,_bk}
	mkdir -p $MOUNT_DIR
	echo "$MOUNT_DIR" >> $TMP1
	}
	 
	# config /etc/fstab and mount device
	main() {
	for i in `echo $DISK_LIST`
	do
	echo
	echo "${CMSG}Step 3.Begin to fdisk free disk${CEND}"
	[ -n "`df -h | grep ${i}1`" ] && { echo "${CFAILURE}The ${i}1 already mount${CEND}"; echo; exit 0; }
	fdisk_fun $i > /dev/null 2>&1
	echo
	echo "${i}1" >> $TMP2
	done
	make_dir
	> $LOCKfile
	paste $TMP2 $TMP1 > $LOCKfile
	echo
	echo "${CMSG}Step 5.Begin to write configuration to /etc/fstab and mount device${CEND}"
	while read a b
	do
	[ -z "`grep ^${a} $FSTAB_FILE`" -a -z "`grep ${b} $FSTAB_FILE`" ] && echo "${a} $b  ext4defaults0 0" >> $FSTAB_FILE
	done < $LOCKfile
	mount -a
	echo
	}
	 
	# start script
	echo "${CMSG}Step 2.Begin to check free disk${CEND}"
	#service mysqld stop
	#mv /data /root
	check_os
	check_disk
	main
	df -h
	#mv /root/data/* /data
	#service mysqld start
	rm -rf $LOCKfile $TMP1 $TMP2
	
	Linux添加新硬盘、分区、格式化、自动挂载:http://www.linuxdiyf.com/linux/14202.html
Ubuntu硬盘分区、格式化、自动挂载配置:http://www.linuxdiyf.com/linux/2960.html
CentOS ext4 磁盘分区 格式化 挂载:http://www.linuxdiyf.com/linux/1163.html

