歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下磁盤批量化自動分區掛載腳本實現

Linux下磁盤批量化自動分區掛載腳本實現

日期:2017/2/28 14:45:59   编辑:Linux教程

需求大於一切,公司數據中心采購50台DELL服務器部署Hadoop集群,每台機器配了6塊3T硬盤,linux下fdisk工具只能格式化小於2T的硬盤,大於2T的需使用parted工具來格式化。

無論使用哪種格式化工具,對於50*6這個數字,如果手工一塊一塊去創建分區並掛載至目錄下,工作量是可想而知的,這裡總結了一個自動化腳本,使用起來非常方便,本來這個腳本是准備在集群主節點上分發到各個datanode上,然後通過ssh 遠程執行腳本實現的,後來發現遠程執行這個腳本會進入一個死循環,一直重復對機器的第一塊硬盤進行操作,而在本機上執行卻正常,猜想可能和腳本中取磁盤盤符函數有關,目前還沒有修復這個問題,所以只能ssh到各個節點上去手動執行腳本。後面有時間再具體研究一下。

腳本如下:

1、使用parted進行分區:

#!/bin/bash
#Used to fomat 6 disks
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
i=1
while [ $i -lt 7 ]
do
j=`echo $i|awk '{printf "%c",97+$i}'`
parted /dev/sd$j <<ESXU
mklabel gpt
mkpart primary 0 -1
ignore
quit
ESXU
echo "/n/n******/dev/sd${j} __was Fdisked! Waiting For 10 Second*****/n/n"
sleep 1s
mkfs.ext4 /dev/sd${j}1
if [ "$?" = "0" ];then
echo "/n/n*****sd${j}1 _________________was Formated, Waiting For 5 Second****/n/n"
fi
let i+=1
sleep 1s
done
touch /test2
mkdir /disk1
mkdir /disk2
mkdir /disk3
mkdir /disk4
mkdir /disk5
mkdir /disk6
cat << ESXU > /test2
/dev/sdb1 /disk1 ext4 defaults 0 0
/dev/sdc1 /disk2 ext4 defaults 0 0
/dev/sdd1 /disk3 ext4 defaults 0 0
/dev/sde1 /disk4 ext4 defaults 0 0
/dev/sdf1 /disk5 ext4 defaults 0 0
/dev/sdg1 /disk6 ext4 defaults 0 0
ESXU
cat /test2 >> /etc/fstab
mount -a
chmod -R 777 /disk*
rm -rf /test2

2、使用fdisk工具腳本:

#!/bin/bash
#Used to fomat 6 disks
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
i=1
while [ $i -lt 4 ]
do
j=`echo $i|awk '{printf "%c",97+$i}'`
fdisk /dev/sd$j <<ESXU
n
p
1


w
ESXU
echo "/n/n******/dev/sd${j} __was Fdisked! Waiting For 10 Second*****/n/n"
sleep 1s
mkfs.ext4 /dev/sd${j}1
if [ "$?" = "0" ];then
echo "/n/n*****sd${j}1 _________________was Formated, Waiting For 5 Second****/n/n"
fi
let i+=1
sleep 1s
done
touch /test2
mkdir /disk1
mkdir /disk2
mkdir /disk3
cat << ESXU > /test2
/dev/sdb1 /disk1 ext4 defaults 0 0
/dev/sdc1 /disk2 ext4 defaults 0 0
/dev/sdd1 /disk3 ext4 defaults 0 0
ESXU
cat /test2 >> /etc/fstab
mount -a
chmod -R 777 /disk*

Copyright © Linux教程網 All Rights Reserved