Welcome 微信登录

首页 / 操作系统 / Linux / 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 /test22、使用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*相关阅读:Linux文件系统基本操作(mount挂载,umount卸载) http://www.linuxidc.com/Linux/2013-06/85718.htmLinux下如何用fdisk新建分区 http://www.linuxidc.com/Linux/2013-03/80860.htmLinux使用fdisk进行磁盘管理 http://www.linuxidc.com/Linux/2013-06/85714.htmUbuntu下分区格式化U盘(fdisk&&mkfs) http://www.linuxidc.com/Linux/2013-05/85115.htmUbuntu小知识总结CentOS中使用Python遇到的几个问题相关资讯      Linux分区 
  • Linux如何分区(挂载点)?  (05月01日)
  • Linux格式化分区报错Could not   (03/14/2015 18:17:57)
  • Linux磁盘分区指令  (12/23/2014 18:43:42)
  • Linux系统和Windows系统的硬盘分区  (04月04日)
  • 磁盘分区在Windows和Linux下的表现  (02/16/2015 09:30:35)
  • Linux入门教程:简单分区与文件系  (07/20/2014 11:09:57)
本文评论 查看全部评论 (0)
表情: 姓名: 字数