parted 磁盘分区-挂载-删除-shell脚本进行磁盘分区

简介: parted工具自动分区脚本

# parted脚本自动挂载分区磁盘

# 1.parted 核心命令  parted gpt 分区支持2T磁盘空间

partedManual(){


# 全新磁盘挂载,将vdb 改为您实际的磁盘

全新磁盘挂载,将vdb 改为您实际的磁盘

yum install -y parted                                        # 安装分区工具

parted -s /dev/vdb mklabel gpt                      # 将vdb 转为gpt 动态分区,支持2T以上容量

parted -s /dev/vdb mkpart primary 1 100%    # 新建主机分区

# parted -s a mkpart entended 3G 5G            # 第一个扩展分区:从3G 到5G

# parted -s b mkpart logic 5G 100%              # 第二个扩展分区:从5G到100%


mkfs -t ext4 /dev/vdb1                                    # 格式化主分区

mkdir -p /eisc/a                                               # 创建挂载目录  -p 不存在子目录,自动创建子目录

mount /dev/vdb1 /eisc/a                                # 将vdb 挂载到目录:/cipan/vdb1


vi /etc/fstab                                                  # 编辑文件命令

/dev/vdb1 /eisc/a ext4 defaults 1 1

# 复制粘贴这句话

# 然后 按键:ecs退出键 , 按 shift 和 : 冒号 wq 保存


mount -a                                                       # 校验配置是否正确命令无报错,可以重启服务器

df -hT                                                             # 重启服务器并查看挂载的分区

# 已经分区,仅仅挂载到服务器  磁盘存在数据,仅仅挂载磁盘

mkdir -p /eisc/a                                       # 创建磁盘存放目录, -p 不存在子目录,自动创建子目录

parted -l                                                   # 查看磁盘格式:如:primary  ext4  是主分区。

mount /dev/vdb1 /eisc/a                        # 将vdb1 磁盘挂载到    /myfoldel/a   目录。进入这个目录存放文件,占用的是  vdb1 的空间

cd /myfoldel/a                                        # 进入挂载目录

ls                                                              # 查看数据盘文件


vi /etc/fstab                                            # 编辑文件命令

/dev/vdb1 /eisc/a ext4 defaults 1 1

# 复制粘贴这句话

# 然后 按键:ecs退出键 , 按 shift 和 : 冒号 wq 保存


mount -a                                              # 校验配置是否正确命令无报错,可以重启服务器

df -h                                                      # 重启服务器并查看挂载的分区


}



# 2. parted 脚本自动分区

#!/bin/bash

azparted=$(yum list installed | grep parted)

# 定义一个名称为azparted的变量,值为:

# 查看已安装的包,grep 匹配parted 名称

cdazparted=$(echo ${#azparted})

# 定义一个新变量:打印$azparted 变量的字符串长度  echo $(#azparted)

 

if [ $cdazparted -lt 1 ]

# 判断变量字符串长度小于1

then # 然后

       yum install -y parted

       echo "您还没有安装parted,正在为您安装,请稍后:"

else # 其他情况


       echo "parted 已经安装,无需操作,已经安装的信息为:

$azparted"

fi # if的结束标记 fi

#----------------------------------- 检测安装工具向上包结束  -------------------------------

echo "未分区的磁盘有: "

parted -l | grep -w "unrecognised disk label"

echo "

read 接收窗口命令界面输入的字符串;-p 加文字说明;需要分区的磁盘变量 a

请输入你要进行分区的磁盘; 磁盘格式为:/dev/dev

如果输入错误字符或者闪跳,请Ctrl +c  退出重新输入"


read -p "请输入要分区的磁盘:"  a ;


echo "磁盘挂载目录格式为:   /www     将会清空该目录下的文件,重复执行脚本,仅仅更改挂载目录,不会更改硬盘数据重启生效。修改的是/etc/fstab"


read -p "请输入您要挂载到那个目录:"  m ;


#----------------------------------- 用户输入信息向上结束  -------------------------------


gsh=$(parted -s $a print | grep primary || logical )


# 定义一个变量 gsh  ; sed s/[[:space:]]//g 删除空格

# parted -s $a print 打印要分区的磁盘信息$a为 /dev/xxx

# 打印信息后去匹配磁盘分区的类型:

# primary [ˈprʌɪm(ə)ri] 主分区,类型;logical [ˈlɒdʒɪk(ə)l] 逻辑分区

# 如果主分区和逻辑分区都不存在,那么就是空盘

###### 重点:

# parted -s $a print # 选择磁盘,并打印:打印选择的磁盘信息

# awk -F " " '$5=="primary" {print zi++ $6} '

# -F " " 分隔符为空格,  后面有单引号引起来的为坐标:先行后列

# $5 第5列的内容包含有 primary 字符  就被选中

# print 打印第6列,  有多个内容用zi++ 方法来换行打印所有

# parted -s /dev/sda print | awk -F " " '$5=="primary" {print c++ $6} '






if [ ${#gsh}  -eq 0 ] # ${#gsh} 变量长度, -eq 小等于 0

then

echo "磁盘 $a 为空盘,没有找到主分区和逻辑分区,可以进行进行格式化并分区操作,请等待。。。  "

else

echo " # parted -s /dev/xxx   rm 1

磁盘名称: $a


 

磁盘存在数据,是否继续格式化操作

"

fi

echo "请确认脚本的继续执行

y继续 | 任意字符退出

"

read gshy

case $gshy in

y) echo "您确认了继续格式化操作,脚本将继续执行"

;;

*) echo "您否定了格式化操作,不会影响磁盘数据。即将退出脚本。"

exit # 直接退出脚本

;;

esac



parted -s $a mklabel gpt        # 格式化为gpt 动态分区,gpt动态分区支持2T

# msdos 其他类型


parted -s $a mkpart primary 1 100% # 分区 全部

#parted -s $a mkpart entended 3G 5G # 第一个扩展分区:从3G 到5G

#parted -s $a mkpart logic 5G 100% # 第二个扩展分区:从5G到100%

# logic [ˈlɒdʒɪk] 逻辑,分区


#-------------------------------------挂载------------------------------------

b=$(echo $a"1")

mkfs -t ext4 $b # 格式化分区


rm -rf $m

mkdir $m

mount  $b $m # 挂载分区到/www 目录下

# 如果需要挂载到指定目录请创建文件夹后,再将此处的/mnt修改

bd=$(echo $b | awk -F"/" 'NR==1{print $3}')

# 打印变量,awk 字段处理,-F 指定分隔符为  /

# 坐标:第一行,第3列


sed -i "/"eiscparted"/d" /etc/fstab             #先清除启动挂载

sed -i "/^$/d" /etc/fstab # 清除空行

echo "

$b           $m                            ext4      defaults        0 0 #eiscparted

">>/etc/fstab # 开机自动挂载,字符单独一行,才会保留格式


echo "再次查看挂载的磁盘,如果之前有挂载过此硬盘,重启生效挂载到新目录

开发商:小绿叶技术博客 www.eisc.cn

"

df -h


# umount /dev/sdb* # 取消挂载磁盘 /dev/sdb 的所有分区

# -------------------------------------删除---------------------------------

# parted -s /dev/sdb rm 5           # rm删除sdb磁盘编号5的分区

# parted -s /dev/sdb print # 查看分区

# parted -s /dev/sdb mklabel msdos # 清除分区表,方便其他工具进行分区


# 使用MBR分区表的硬盘最多只能划分4个主分区磁盘,并且MBR最大仅支持2TB的硬盘。

# GPT是一种新型磁盘模式,与我们常用的MBR磁盘相比更稳定,自纠错能力更强,一块磁盘上主分区数量不受(4个的)限制,支持大于2T的总容量及大于2T的分区(几乎没有上限,最大支持到128个分区,分区大小支持到256TB)。




# 脚本执行:

# rm -rf parted.sh ; yum install -y wget ; wget eisc.cn/file/shell/parted.sh ; chmod +x parted.sh ; ./parted.sh

目录
相关文章
|
2天前
|
监控 Unix Shell
shell脚本编程学习
shell脚本编程
22 12
|
6天前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
8天前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
26 2
|
29天前
|
Shell
Shell脚本有哪些基本语法?
【9月更文挑战第4天】
43 17
|
29天前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
36 12
|
28天前
|
网络协议 关系型数据库 MySQL
Shell 脚本案例
Shell 脚本案例
36 8
|
28天前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
2月前
|
Ubuntu Linux Shell
在Linux中,如何使用shell脚本判断某个服务是否正在运行?
在Linux中,如何使用shell脚本判断某个服务是否正在运行?
|
2月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
29 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
2月前
|
监控 Shell Linux
在Linux中,如何使用shell脚本进行系统监控和报告?
在Linux中,如何使用shell脚本进行系统监控和报告?