fdisk,parted使用非交互式方式对磁盘进行分区操作
文章发布较早,内容可能过时,阅读注意甄别。
磁盘分区的时候,平常都是使用交互式的方式进行,但是交互式有时候对一些批量的,或者脚本式的,就不那么友好了,今天刚好要对一批设备初始化进行分区操作,几百 G 的以及十来 T 的都有,因此两个分区命令的非交互式这里一并拿下了。
# 1,fdisk 分区
直接进入正题,关于两种分区方式的选型等问题,这里不做讨论。
创建如下交互文本:
$ cat fdisk.txt
n
w
1
2
3
4
5
6
7
2
3
4
5
6
7
注意:
文件内容就两步,一个 n
,一个 w
,但是注意中间有 4 个换行,表示分区过程选项保持默认,如此分配整个磁盘为一个分区。
fdisk /dev/vdb < ./fdisk.txt
fdisk /dev/vdc < ./fdisk.txt
1
2
2
接下来就是格式化,挂载的事情了,比较常规,下边会给出例子,这里不多赘述。
# 2,parted 风格
debian 系统默认没有 parted 命令,需要先安装:
apt-get update
apt-get -y install parted
1
2
2
然后创建如下交互文本:
$cat parted.txt
mklabel gpt
yes
mkpart
1
ext4
0
100%
Ignore
q
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
文本内也都是格式化过程中需要的步骤,同样是将整块磁盘分给一个分区。
然后进行分区:
parted /dev/vdd < ./parted.txt
parted /dev/vde < ./parted.txt
parted /dev/vdf < ./parted.txt
parted /dev/vdg < ./parted.txt
parted /dev/vdh < ./parted.txt
parted /dev/vdi < ./parted.txt
parted /dev/vdj < ./parted.txt
parted /dev/vdk < ./parted.txt
parted /dev/vdl < ./parted.txt
parted /dev/vdm < ./parted.txt
parted /dev/vdn < ./parted.txt
parted /dev/vdo < ./parted.txt
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
然后对如上分区进行格式化:
mkfs.ext4 /dev/vdb1
mkfs.ext4 /dev/vdc1
mkfs.ext4 /dev/vdd1
mkfs.ext4 /dev/vde1
mkfs.ext4 /dev/vdf1
mkfs.ext4 /dev/vdg1
mkfs.ext4 /dev/vdh1
mkfs.ext4 /dev/vdi1
mkfs.ext4 /dev/vdj1
mkfs.ext4 /dev/vdk1
mkfs.ext4 /dev/vdl1
mkfs.ext4 /dev/vdm1
mkfs.ext4 /dev/vdn1
mkfs.ext4 /dev/vdo1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
接着创建需要挂载的目录:
cd /
mkdir data00 data01 data02 data03 data04 data05 data06 data07 data08 data09 data10 data11 data12 data13
1
2
2
然后将自动挂载写入配置:
echo "/dev/vdb1 /data00 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vdc1 /data01 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vdd1 /data02 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vde1 /data03 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vdf1 /data04 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vdg1 /data05 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vdh1 /data06 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vdi1 /data07 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vdj1 /data08 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vdk1 /data09 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vdl1 /data10 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vdm1 /data11 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vdn1 /data12 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/vdo1 /data13 ext4 defaults 0 0" >> /etc/fstab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
执行加载命令,查看是否正常。
mount -a
1
记录两个常用分区命令的非交互方式,方便日常的操作。
# 3,插曲
过程中还遇到过一个插曲,vdc
磁盘应该按照 fdisk 风格来分区即可,因为这个磁盘并没有超过 2T,可以直接分区,但是当时搞错了分区名称,于是误把此分区给搞成了 gpt 风格的,这个时候想要改回 mbr 分区类型,发现并不太容易。
parted /dev/vdc
(parted)mktable
New disk label type? msdos
Warning: The existing disk label on /dev/vdc will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No?Yes
1
2
3
4
5
6
2
3
4
5
6
注意:
这个地方在重新定义分区类型的时候,并不能写 mbr,或者形如其他分区写成 dos,如果写成这些,命令行将会一直报错,正确的应该是 msdos
,然后在保存退出,这个时候此分区就变回所谓的 mbr 分区了。
上次更新: 2024/11/19, 23:11:42