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*


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章