使用 GNU Parted 在 Linux 上对驱动器进行分区

学习对新存储设备进行分区的基本知识,然后下载我们的速查表,以便随时掌握信息。
56 位读者喜欢这篇文章。
Blender Hotkey Cheat Sheet

Opensource.com

在 21 世纪,我们往往认为数据存储是理所当然的。我们拥有大量的存储空间,价格相对实惠,而且有许多不同类型的存储可供选择。无论您获得多少免费云存储空间,没有什么比拥有一个物理硬盘来存储真正重要(或者非常大,当您生活在慢速网络上时)的数据更好的了。然而,很少有硬盘在出厂时就能立即使用——至少在理想配置中是这样。无论您是购买新驱动器还是设置具有不同配置的系统,您都需要了解如何在 Linux 上对驱动器进行分区。

本文演示了 GNU Parted,它是用于驱动器分区的最佳工具之一。如果您喜欢使用图形应用程序而不是终端命令,请阅读我关于为 Linux 格式化驱动器的文章。

磁盘标签、分区和文件系统

硬盘在技术上不需要太多软件就可以作为存储设备。但是,在没有现代约定(如分区表和文件系统)的情况下使用驱动器是困难、不切实际且对您的数据不安全的。

您需要了解关于硬盘的三个重要概念

  • 磁盘标签分区表是放置在驱动器开头的元数据,作为计算机读取驱动器时关于可用存储类型及其在驱动器上的位置的线索。
  • 分区是一个边界,用于标识文件系统的位置。例如,如果您有一个 512GB 的驱动器,您可以在该设备上创建一个占用整个驱动器 (512GB) 的分区,或者两个各占用 256GB 的分区,或者三个占用其他大小变体的分区,依此类推。
  • 文件系统是硬盘和计算机之间约定的存储方案。计算机必须知道如何读取文件系统才能将存储在驱动器上的所有数据拼凑在一起,并且必须知道如何将数据写回文件系统以维护数据的完整性。

GNU Parted 应用程序管理前两个概念:磁盘标签和分区。Parted 了解一些文件系统,但它将文件系统实现的细节留给其他工具,如 mkfs

[下载 GNU Parted 速查表]

定位驱动器

在使用 GNU Parted 之前,您必须确定驱动器在系统上的位置。首先,将要格式化的硬盘连接到您的系统,然后使用 parted 命令查看连接到您计算机的设备

$ parted /dev/sda print devices
/dev/sda (2000GB)
/dev/sdb (1000GB)
/dev/sdc (1940MB)

您最近连接的设备获得的名称在字母表中的位置比已连接时间更长的设备靠后。在本例中,/dev/sdc 很可能是我刚刚连接的驱动器。我可以根据其大小来确认这一点,因为我知道我连接的 USB 拇指驱动器只有 2GB(1940MB 足够接近),而我的工作站的主驱动器的大小为 TB 级。如果您不确定,那么您可以获取有关您认为是要分区的驱动器的更多信息

$ parted /dev/sdc print 
Model: Yoyodyne Tiny Drive 1.0 (scsi)    
Disk /dev/sdc: 1940MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2048kB  1024kB  BS           Bloat  Hidden
 2      2049kB  1939MB  1937MB  FAT32        MyDrive

有些驱动器提供的元数据比其他驱动器更多。这个驱动器将自己标识为来自 Yoyodyne 的驱动器,这与物理驱动器上的品牌完全一致。此外,它在驱动器的前端包含一个小型的隐藏分区,其中包含一些 bloatware,然后是一个 Windows 兼容的 FAT32 分区。这绝对是我打算重新格式化的驱动器。

在继续之前,确保您已识别出要分区的正确驱动器。重新分区错误的驱动器会导致数据丢失。 为了安全起见,本文中所有可能具有破坏性的命令都引用 /dev/sdX 设备,您不太可能在系统上拥有该设备。

创建磁盘标签或分区表

要在驱动器上创建分区,驱动器必须具有磁盘标签。磁盘标签也称为分区表,因此 Parted 接受这两个术语。

要创建磁盘标签,请使用 mklabelmktable 子命令

$ parted /dev/sdX mklabel gpt

此命令在位于 /dev/sdX 的驱动器的前端创建一个 gpt 标签,擦除可能存在的任何标签。这是一个快速的过程,因为要替换的只是关于分区的元数据。

创建分区

要在驱动器上创建分区,请使用 mkpart 子命令,后跟分区的可选名称,然后是分区的起点和终点。如果您的驱动器上只需要一个分区,那么调整大小很容易:从 1 开始,到 100% 结束。使用 --align opt 选项允许 Parted 调整分区边界的位置以获得最佳性能

$ parted /dev/sdX --align opt \
mkpart example 1 100%

使用 print 子命令查看您的新分区

$ parted /dev/sdX print
Model: Yoyodyne Tiny Drive 1.0 (scsi)
Disk /dev/sdi: 1940MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size   
 1      1049kB  1939MB  1938MB

您不必将整个磁盘用于一个分区。分区的优点在于,驱动器上可以存在多个文件系统,而不会相互干扰。在调整分区大小时,您可以使用 unit 子命令来设置要使用的测量单位类型。Parted 理解扇区、柱面、磁头、字节、千字节、兆字节、千兆字节、太字节和百分比。

您还可以指定您打算将分区用于哪个文件系统。这不会创建文件系统,但它确实提供了稍后可能对您有用的元数据。

这是一个 50-50 的拆分,一个用于 XFS 文件系统,另一个用于 EXT4 文件系统

$ parted /dev/sdX --align opt \
mkpart xfs 1 50%
$ parted /dev/sdX --align opt \
mkpart ext4 51% 100%

命名分区

除了标记分区用于哪个文件系统之外,您还可以命名每个分区。某些文件管理器和实用程序会读取分区名称,这可以帮助您识别驱动器。例如,我经常在我的媒体工作站上连接几个不同的驱动器,每个驱动器都属于不同的项目。在创建这些驱动器时,我同时命名分区和文件系统,以便无论我如何查看我的系统,包含重要数据的位置都被清晰地标记出来。

要命名分区,您必须知道其编号

$ parted /dev/sdX print
[...]
Number  Start   End     Size   File system  Name     Flags
 1      1049kB  990MB   989MB  xfs          example
 2      1009MB  1939MB  930MB  ext4         noname

要命名分区 1

$ parted /dev/sdX name 1 example
$ parted /dev/sdX print
[...]
Number  Start   End     Size   File system  Name     Flags
 1      1049kB  990MB   989MB  xfs          example
 2      1009MB  1939MB  930MB  ext4         noname

创建文件系统

为了使您的驱动器有用,您必须在新分区中创建一个文件系统。 GNU Parted 不会这样做,因为它只是一个分区管理器。用于在驱动器上创建文件系统的 Linux 命令是 mkfs,但有一些有用的实用程序别名供您用来创建特定类型的文件系统。例如,mkfs.ext4 创建一个 EXT4 文件系统,而 mkfs.xfs 创建一个 XFS 文件系统,依此类推。

您的分区位于驱动器“内部”,因此您不是在 /dev/sdX 上创建文件系统,而是在 /dev/sdX1 中为第一个分区创建文件系统,在 /dev/sdX2 中为第二个分区创建文件系统,依此类推。

这是一个创建 XFS 文件系统的示例

$ sudo mkfs.xfs -L mydrive /dev/sdX1

下载我们的速查表

Parted 是一个灵活而强大的命令。您可以像本文中演示的那样向其发出命令,或激活交互模式,以便您始终“连接”到您指定的驱动器

$ parted /dev/sdX
(parted) print
[...]
Number  Start   End     Size   File system  Name     Flags
 1      1049kB  990MB   989MB  xfs          example
 2      1009MB  1939MB  930MB  ext4         noname

(parted) name 1 mydrive
(parted)

如果您打算经常使用 Parted,下载我们的 GNU Parted 速查表,以便您手头拥有所需的所有子命令。

接下来阅读什么
标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,通常同时在两个行业工作。

评论已关闭。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.