「Linux」- 磁盘分区工具

问题描述

在Linux中有众多用于磁盘分区的工具,比如fdisk、gdisk、parted等等。它们对分区表的支持程度也不尽相同,有些支持MBR分区表,有些支持GPT分区表。因此,在创建不同类型的分区表时,需要使用不同的工具。

本文将简单梳理这些分区工具,了解其适用场景,以明确何种场景下使用何种工具

注意事项

本文仅列举常用分区工具(即在发行版中常见的磁盘分区管理工具)。因为我们认为发行版中自带的工具具有通用性、普适性,因此我们更倾向于学习发行版中默认自带的工具。“用户友好且高级的工具”不在本文介绍的范畴。

如果分区工具的版本不同,那么功能也会存在差异。在本文中,我们将标注出所介绍工具的版本,请参考对应手册获取准确信息。

常见磁盘分区工具有哪些?

fdisk, gdisk, sfdisk, parted, cfdisk, gparted, …

下面对这些工具进行简单的分类,分类依据为工具能否在脚本中使用

可脚本化的分区工具

该分类下的工具可以在脚本中使用,进行编程。

fdisk

命令版本:fdisk from util-linux 2.34
分区类型:GPT, MBR, Sun, SGI, BSD

旧版(比如fdisk from util-linux 2.23.2版本)可以处理GPT分区表,但是处于实验阶段,因此不建议使用。

gdisk

-「gdisk
用于处理GPT分区表,与fdisk算是兄弟了。

parted

同时支持MBR和GPT分区表,还支持其他多种分区表格式。常用于为新操作系统创建空间、重新组织磁盘使用、将数据复制到新硬盘。
它不是那种类似于fdisk的程序,使用该命令添加和删除分区并不会更改磁盘,它只是告诉内核有关磁盘分区的存在和编号。

sfdisk

从2.26版本起,sfdisk支持MBR (DOS), GPT, SUN和SGI磁盘标签,详细参考sfdisk(8)手册。

关于脚本编程

其中 disk, sfdisk, gdisk 可以用类似于如下的形式,进行脚本编程:

#!/bin/sh

fdisk /dev/sdc <<EOF
g
n
1

+64MiB
n
2


t
1
83
t
2
83
w
EOF

但是 parted 会更好一些,因为 parted 有自己的命令:

#!/bin/sh

parted --script /dev/sdc \
    mklabel gpt \
    mkpart primary ext4 1MiB 65MiB \
    mkpart primary ext4 65MiB 134MB

非脚本化的分区工具

下面的工具也是磁盘分区工具,也可以在命令行中使用,但是它们是“命令行的图形化程序”,不能在Shell编程中使用。

# cfdisk

完全是一个命令行图形界面工具,不能在脚本中使用。

图形化工具

下面是一些图形化的程序,带有GUI界面,操作非常的方便、简单:
Gparted:支持MBR和GPT分区表
GNOME Disks (a.k.a GNOME Disks Utility)
KDE Partition Manager
Qtparted

如果不是系统维护,而是出于学习的话,我们比较推荐Gparted工具。在Gparted中的每个动作对应“详细步骤”,这个“详细步骤”列出了在执行某个用户操作时进行了哪些步骤,每个步骤里执行了系统中的哪些命令,以及这些命令使用了怎样的参数,对于学习非常有帮助。

参考文献

Wikipedia/List of disk partitioning software
Top 6 Partition Managers (CLI + GUI) for Linux
How to create and format a partition using a bash script?
Linux: Script to Partition Disk
Should I use fdisk for partitioning or GPT aware tools?