需求大于一切,公司数据中心采购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