问题描述
在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?