linux下磁盘批量化自动分区挂载脚本实现

本文介绍了在Linux环境下,为应对大规模服务器部署Hadoop集群时的磁盘管理问题,如何使用parted和fdisk工具编写自动化脚本进行磁盘分区和挂载。脚本旨在减少手工操作的工作量,但在远程执行时出现只处理第一块硬盘的死循环问题,目前只能在本地执行。
摘要由CSDN通过智能技术生成

     需求大于一切,公司数据中心采购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
    
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 Shell 脚本实现批量分区、格式挂载磁盘的操作。具体步骤如下: 1. 编写一个包含分区、格式挂载磁盘的 Shell 脚本。 2. 在脚本中使用循环语句,遍历所有需要操作的服务器。 3. 在循环中使用 SSH 远程登录到每台服务器,并执行脚本。 4. 在脚本中使用 fdisk 命令来分区,mkfs 命令来格式,mount 命令来挂载磁盘。 5. 在脚本中使用 echo 命令输出操作结果,或者将结果写入日志文件。 需要注意的是,操作磁盘是一项危险的任务,需要谨慎操作,确保数据的安全性。建议在测试环境中进行测试,再在生产环境中进行操作。 ### 回答2: 要批量分区、格式挂载磁盘,可以编写一个脚本来简操作过程。以下是一个示例脚本的步骤: 1. 创建一个空的文本文件,将其命名为"disk_setup.sh"(或者任何你喜欢的名称)。 2. 使用文本编辑器打开"disk_setup.sh"文件,并将以下脚本代码粘贴到文件中: ``` #!/bin/bash # 定义要分区、格式挂载磁盘列表 disk_list=("sdb" "sdc" "sdd") # 定义分区大小 partition_size="50G" # 定义挂载点 mount_point="/mnt/data" for server in server1 server2 server3 ... server80; do # 将 server1~server80 替换为实际的服务器名称或 IP 地址 echo "Configuring disk on $server..." # 连接到远程服务器 ssh $server << EOF # 循环遍历磁盘列表 for disk in "${disk_list[@]}"; do echo "Configuring disk $disk..." # 使用 parted 对磁盘进行分区 parted /dev/$disk mklabel gpt parted /dev/$disk mkpart primary ext4 1M $partition_size # 格式分区为 ext4 文件系统 mkfs.ext4 /dev/${disk}1 # 创建挂载点 mkdir -p $mount_point # 挂载磁盘 mount /dev/${disk}1 $mount_point echo "Disk $disk configured and mounted successfully." done exit EOF echo "Disk configuration completed on $server." done echo "Disk configuration completed on all servers." ``` 3. 将"disk_list"变量中的磁盘列表修改为你想要分区、格式挂载磁盘名称。 4. 如果需要更改分区大小或挂载点,请修改"partition_size"和"mount_point"变量。 5. 将"server1 server2 server3 ... server80"替换为你的实际服务器名称或 IP 地址。 6. 保存并关闭"disk_setup.sh"文件。 7. 打开终端,并使用以下命令将脚本文件赋予执行权限: ``` chmod +x disk_setup.sh ``` 8. 使用以下命令运行脚本: ``` ./disk_setup.sh ``` 脚本自动连接到每台服务器,分区、格式挂载磁盘。执行过程可能需要一些时间,取决于服务器数量和磁盘大小。完成后,终端将显示"Disk configuration completed on all servers."的提示信息。 ### 回答3: 要批量分区、格式挂载磁盘,可以编写一个脚本自动完成这些任务,以下是一个简单的示例脚本: 1. 首先,创建一个名为`partition_format_mount.sh`的脚本文件。 2. 使用`#!/bin/bash`作为脚本的 shebang,指定使用Bash作为解释器。 3. 使用`for`循环来遍历服务器列表,其中服务器的IP地址/主机名可以进行硬编码,或者通过读取一个包含服务器列表的文件来获得。 4. 在循环内部,使用SSH连接到每个服务器,并执行以下命令: - 使用`fdisk`命令对磁盘进行分区。例如,使用`echo -e "n\np\n\n\n\nw\n" | fdisk /dev/sdX`命令添加一个新的分区。 - 使用`mkfs`命令对分区进行格式。例如,使用`mkfs.ext4 /dev/sdX1`命令将分区格式为ext4文件系统。 - 使用`mount`命令挂载分区。例如,使用`mount /dev/sdX1 /mnt/data`命令将分区挂载到指定的挂载点。 5. 完成循环后,关闭SSH连接。 这只是一个简单的示例脚本,你可以根据实际需求进行修改和扩展。在运行脚本之前,请确保已经设置好SSH连接和授权。此外,还应注意在执行分区和格式操作时选择正确的磁盘设备(例如,`/dev/sdX`)和分区号(例如,`/dev/sdX1`)。 请注意,对服务器进行批量操作可能存在风险,因此在运行脚本之前务必做好备份和风险评估。同时,确保脚本在运行之前进行充分的测试,并在生产环境中小心操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值