磁盘分盘脚本分享

芒果2年前技术文章767

磁盘分区脚本
名称:mg_fdisk.sh
#!/bin/bash
if [ "$#" -ne 1 ]; then
  echo "请传入磁盘参数"
  exit 1
fi
disk=$1
# 检查磁盘是否存在
if [ ! -b "$disk" ]; then
  echo "磁盘 $disk 不存在"
  exit 1
fi
# 计算磁盘总空间
disk_size=$(fdisk -l $disk | grep "Disk $disk" | awk '{print $5}')
if [ -z "$disk_size" ]; then
  echo "无法获取磁盘空间"
  exit 1
fi
# 删除已有分区(如果存在)
echo "d
w
" | fdisk $disk
# 创建新分区
echo "n
p
1
w
" | fdisk $disk
# 格式化分区
partition="${disk}1"
mkfs.xfs $partition
# 输出结果
echo "磁盘 $disk 分区完成,总空间:$disk_size"
请确保在执行脚本时具备足够的权限,并按以下方式传递磁盘参数进行调用:
./mg_fdisk /dev/sdX
其中,/dev/sdX 是您要进行分区操作的磁盘路径。请替换为您实际使用的磁盘路径。
在执行脚本后,它将删除磁盘上的所有分区并创建一个新的分区。随后,该分区将被格式化为ext4文件系统。最后,脚本将输出磁盘的总空间。
请务必谨慎操作,并确保备份重要数据。
这个脚本可以配合for循环一起用
for i in $(sed 's/[0-9]//g' /opt/disk.txt);do echo $i;/opt/mg_fdisk.sh /dev/$i;done
disk.txt例子
sda1
sbb1
sdc1
sdd1
完成后是这个样哦

搞完之后blkid看一下 如果存在格式化有问题的 可以强制格式化下
mount -f /dev/sdX

磁盘挂载脚本
脚本名称:mg_mount.sh
#!/bin/bash
disk_file="disk.txt"  # 存储分区磁盘列表的文件名
mount_file="mount.txt"  # 存储挂载路径列表的文件名
# 检查文件是否存在
if [ ! -f "$disk_file" ] || [ ! -f "$mount_file" ]; then
  echo "文件不存在"
  exit 1
fi
# 逐行读取分区磁盘和挂载路径
while IFS= read -r disk && IFS= read -r mount <&3; do
  # 挂载分区
  sudo mount "$disk" "$mount"
  if [ "$?" -eq 0 ]; then
    echo "已成功挂载分区 $disk 到路径 $mount"
  else
    echo "挂载分区 $disk 到路径 $mount 失败"
  fi
done < "$disk_file" 3< "$mount_file"
脚本会逐行读取disk_file和mount_file的内容,并分别将其存储到disk和mount变量中,在循环中使用这些变量进行挂载操作。
以下是disk和mount文件的例子
disk.txt
sda1
sbb1
sdc1
sdd1
mount.txt
/data/hadoop/hdfs/data1
/data/hadoop/hdfs/data2
/data/hadoop/hdfs/data3
/data/hadoop/hdfs/data4
完成是这个样子:


通过一个文件来循环读取磁盘名称,并获取UUID和挂载目录写入/etc/fstab
脚本名称:mg_fstab.sh
#!/bin/bash
# 定义磁盘列表文件名
disk_file="/opt/disk.txt"
# 检查文件是否存在
if [ ! -f "$disk_file" ]; then
  echo "文件不存在"
  exit 1
fi
# 逐行读取磁盘列表文件
while IFS= read -r disk_name; do
  # 忽略空白行和注释行(以#开头)
  if [[ -z "$disk_name" || "$disk_name" == \#* ]]; then
    continue
  fi
  # 获取磁盘分区UUID和挂载目录
  uuid=$(blkid -o value -s UUID /dev/"$disk_name")
  mount_dir=$(grep "/dev/$disk_name" /proc/mounts | awk '{print $2}')
  # 检查挂载目录是否存在,不存在则创建
  if [ -z "$mount_dir" ]; then
    mount_dir="/mnt/$disk_name"
    mkdir -p "$mount_dir"
  fi
  # 将分区信息写入/etc/fstab
  echo "UUID=$uuid $mount_dir xfs defaults 0 2" >> /etc/fstab
  echo "UUID=$uuid $mount_dir xfs defaults 0 2 写入成功"
done < "$disk_file"
以下是disk文件的例子
disk.txt
sda1
sbb1
sdc1
sdd1
完成图

Ps如果是想自己传
#!/bin/bash
# 定义磁盘名称
disk_name="sdb1"
# 获取磁盘分区UUID和挂载目录
uuid=$(blkid -o value -s UUID /dev/"$disk_name")
mount_dir=$(grep "/dev/$disk_name" /proc/mounts | awk '{print $2}')
# 将分区信息写入/etc/fstab
  echo "UUID=$uuid $mount_dir xfs defaults 0 2" >> /etc/fstab
  echo "UUID=$uuid $mount_dir xfs defaults 0 2 写入成功"


相关文章

Hive优化之SQL的优化(三)

Hive优化之SQL的优化(三)

     Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的一个点,因此掌握一些Hi...

Mac安装Hadoop文档-保姆级操作(二)

Mac安装Hadoop文档-保姆级操作(二)

配置hadoop进入hadoop的目录:cd /opt/homebrew/Cellar/hadoop/3.3.6/libexec/etc/hadoop修改core-site.xml<config...

ES运维(四)扩容方式迁移

ES运维(四)扩容方式迁移

1 迁移概述本次模拟es在线迁移方式:集群扩容-->数据迁移-->老节点下线-->服务重启刷新配置。 中间master替换的时候会有短暂的不可用。 另外业务测需注意:老节点下线前...

Haproxy配置负载均衡

yum安装haproxy如果后面要配置高可用,和keepalived配合使用更佳。yum install haproxy修改配置文件设置impala和ldap的负载均衡(Impala Daemon分布...

ES运维(一)底层数据存储原理

ES运维(一)底层数据存储原理

1、ES底层数据存储原理架构图Segment工作流程:A、 新的文档在内存中组织B、 每隔一段时间,buffer将会被提交:生成一个新的segment(一个额外的新的倒序索引)并被写到磁盘,同时一个新...

CDP实操--Ranger开启ldap认证

CDP实操--Ranger开启ldap认证

集群中已经部署了ldap主主模式,并且使用haproxy进行负载均衡,keepalive提供了虚拟ip。页面配置:Ranger进行同步用户:验证:使用ldap用户登录页面:FAQ:1、admin超级管...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。