为DataNode节点批量分区并格式化脚本

===========================================================================================================
一、重要说明:
    使用这个脚本格式化,或者分区时候,需要做sleep,给出系统的执行保存的时间。否则会导致格式化失败报错信息如下:
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
===========================================================================================================
二、重要解释:
显示文件x行命令:
#sed -n 'xp' filename
显示文件X行到Y行的内容:
#sed -n 'x,yp' filename
===========================================================================================================
三、具体脚本内容
--------------------------------------------------------------------------------------------
#这个脚本是对小于2T的磁盘分区,对每块磁盘单独分一个区;然后,对分区格式化ext4,创建目录进行挂载。
#一些参数需要自定义,例如:n,mkfs.ext,sleep的时间间隔,
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
n=1
i=1
fdisk -l | grep "Disk /dev/sd*"|awk '{print substr($2,1,index($2,":")-1)}' > /root/devs.array
devs=(`sed -n ''$n',$p' /root/devs.array`)
for device in ${devs[*]}
do
echo $device
fdisk $device < n
p
1


w
ESXU
sleep 3s
mkfs.ext4  ${device}1   
sleep 130s
mkdir /dfs${i}
mount="${device}1        /dfs${i}        ext4        defaults,noatime        0        0"
echo $mount >>/etc/fstab               
i=`expr $i + 1`
done
mount -a

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在linux 下大磁盘的分区不能再采用fdisk了,MBR分区表只支持2T磁盘,所以大于2T的磁盘必须使用GPT分区表。下面说明下具体的步骤:
分为两个主分区(先创建磁盘标签mklable ,再创建分区mkpart分区类型)
[root@localhost ~]# parted /dev/sdb # 使用parted来对GPT磁盘操作,进入交互式模式
GNU Parted 1.8.1 Using /dev/sdb Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) mklabel gpt                                     # 将MBR磁盘格式化为GPT
(parted) print                                                  #打印当前分区
(parted) mkpart primary 0 4.5TB                # 分一个4.5T的主分区
(parted) mkpart primary 4.5TB 12TB         # 分一个7.5T的主分区
(parted) print                                                   #打印当前分区
(parted) quit                                                    #退出
Information: Don’t forget to update /etc/fstab, if necessary.

##针对大2T的磁盘,需要做静默式gpt格式的分区:
=========================================================================================================
#这个脚本是对大于2T的磁盘分区,对每块磁盘单独分一个区;然后,对分区格式化,创建目录进行挂载(未验证)。
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
n=5
i=1
fdisk -l | grep "Disk /dev/sd*"|awk '{print substr($2,1,index($2,":")-1)}' > /root/devs.array
devs=(`sed -n ''$n',$p' /root/devs.array`)
for device in ${devs[*]}
do
echo $device
parted $device < mklabel gpt
mkpart primary 0 -1
ignore
quit
FORMAT
sleep 200s
mkfs.ext4  ${device}1   
sleep 300s
mkdir /dfs${i}
mount="${device}1        /dfs${i}        ext4        defaults,noatime        1        2"
echo $mount >>/etc/fstab               
i=`expr $i + 1`
done
mount -a
===========================================================================================================








你可能感兴趣的:(Linux,Hadoop)