Linux批量非交互式磁盘分区

发布时间 2023-11-24 00:35:27作者: 梭梭666

Top

分区工具-----parted

选项及含义

选项 含义
-l【--list】 列出所有设别的分区信息
-i 【--interactive】 在必要时,提示用户
-s【--script】 从不提示用户, 非交互方式

子选项命令

检查 MINOR                            # 对文件系统进行一个简单的检查 
cp [FROM-DEVICE] FROM-MINOR TO-MINOR # 将文件系统复制到另一个分区 
help [COMMAND]                       # 打印通用求助信息,或关于 COMMAND 的信息 
mklabel 标签类型                       # 创建新的磁盘标签 (分区表) 
mkfs MINOR 文件系统类型                 # 在 MINOR 创建类型为“文件系统类型”的文件系统 
mkpart 分区类型 [文件系统类型] 起始点 终止点    # 创建一个分区 
move MINOR 起始点 终止点               # 移动编号为 MINOR 的分区 
name MINOR 名称                       # 将编号为 MINOR 的分区命名为“名称” 
print [MINOR]                        # 打印分区表,或者分区 
quit                                 # 退出程序 
rescue 起始点 终止点                   # 挽救临近“起始点”、“终止点”的遗失的分区 
resize MINOR 起始点 终止点             # 改变位于编号为 MINOR 的分区中文件系统的大小 
rm MINOR                             # 删除编号为 MINOR 的分区 
select 设备                           # 选择要编辑的设备 
set MINOR 标志 状态                    # 改变编号为 MINOR 的分区的标志
点我回顶部

命令示例

非交互式创建分区

# 以下创建分区的方式都是等价的,为 ext4 分区, 或之后再使用 mkfs 命令创建文件系统 
parted /dev/sdb mkpart primary 1 50 
parted -s -- /dev/sdb mkpart shiwei  ext4  50  100
echo "mkpart data ext4 1 50M" | parted /dev/sdb
# 同时创建 3 个分区, 前两个为 ext4 类型, 第 3 个未知
parted /dev/sdb mkpart ext4  1 50 mkpart ext4  50 100 mkpart ext4  100 150

非交互式删除分区

parted /dev/sdb rm 1           # 指定分区编号
parted /dev/sdb rm 2 rm 3 rm 5 # 同时删除多个分区 
# 批量删除 127 个分区,但挺慢 , 一秒一个 
for ddd in `seq 1 127`; do parted /dev/sdb rm ${ddd}; done

打印分区表

parted /dev/sdb p   # parted /dev/sdb print 

修改分区名称

parted /dev/sdb name 1 shiwei  # 需注意指定的为原分区的编号

修改分区大小

# 注意修改分区大小只可缩容 或者是 扩容时利用闲置 柱面, 最后一个参数为柱面号 
parted /dev/sdb resizepart 1 800  # 设置 第一个 分区结束柱面为 800 
点我回顶部

参考网址

Linux磁盘分区--GPT分区

磁盘分区工具------ fdisk

sd代表的是SCSI,SATA接口硬盘
hd代表IDE接口的硬盘
sda和hda最后面的a都代表的是第一块硬盘
sda1和hda1则代表的是该硬盘的第一分区

选项和含义

选线 含义
-l 查看系统分区详细信息

命令flags标记及功能

标记命令 含义
m 输出帮助信息
a 设置启动分区
b 编辑分区标签
d【delete】 删除一个分区
l【list】 列出分区类型
n【new】 创建新的分区
p【print】 打印分区表
w【write】 保存分区表
q【quit】 退出不保存设置
t 改变分区 ID
u 改变显示的单位
o 创建一个新的空白的 Dos 分区表
v 检查验证分区表
点我回顶部

命令示例

展示硬盘详细信息

fdisk -l 
# 单独展示某一个盘详细分区信息
fdisk -l  /dev/sda 

非交互式打印分区表

fdisk /dev/sdc << EOF 
p
q
EOF 
# 第二种方式将命令写入文件
cat commands | fdisk /dev/sdc 

非交互式创建 GPT 格式分区

# 先要创建 GPT 格式分区表, 会自动删除老的分区表,
printf "g\n p\n w\n" | fdisk /dev/sdb
printf "n\n \n \n +100M\n n\n \n \n +100M\n n\n \n \n +100M\n p\n w\n" | fdisk /dev/sdb
# 迅速创建 128 个分区
for ddd in `seq 1 128`;do  printf "n\n \n \n +100M\n  p\n w\n" | fdisk /dev/sdb ; done

非交互式删除分区

# 注意在每个命令的后面都要添加一个换行符,且之间不能有多余的字符,例如:空格等, 命令之间用空格隔开
echo -e  "d\n 3\n d\n 2\n d\n  w\n p\n q" | fdisk /dev/sdb  
printf "d\n 2\n  p\n w\n" | fdisk /dev/sdb
# 迅速删除 127 个分区
for ddd in `seq 1 128`; do  printf "d\n${ddd}\nw\n" | fdisk /dev/sdb ; done
# 第二种方式
echo > fdisk ; for ddd in `seq 1 128`; do  printf "d\n${ddd}\n" ; if [ $ddd -eq 128 ]; then printf "w\n"; fi; done >> fdisk ; wait; cat fdisk | fdisk /dev/sdb ;

迅速挂载 128个分区

# 分区
for ddd in `seq 1 128`;do  printf "n\n \n \n +100M\n  p\n w\n" | fdisk /dev/sdb ; done
# 创建文件系统
for ddd in `seq 1 128`; do mkfs -t ext4 /dev/sdb${ddd}; done
# 挂载
for ddd in `seq 1 128`; do mount -o rw,noatime,nodiratime,nobarrier /dev/sdb${ddd} /data/${ddd}; done
# 配置开机自动挂载
for ddd in `seq 1 128`; do echo -e "/dev/sdb${ddd}\t/data/${ddd}\text4\trw,noatime,nodiratime,nobarrier\t0\t0" >> /etc/fstab ;  done
点我回顶部

磁盘格式化工具 --- mkfs

# 格式化 ext4
mkfs.ext4  <Partition>
# 格式化 btrfs
mkfs.btrfs  <Partition>

# 临时挂载
mount <Partition>  <Point>
# 永久挂载
修改  /etc/fstab 文件
# 查看分区
lsblk, fdisk , parted