我正在对磁盘进行分区,目的是在分区上拥有 ext4 文件系统。我正在遵循一个教程,该教程表明需要指定 ext4 文件系统有两个单独的步骤。第一个是创建分区时通过parted:
sudo parted -a opt /dev/sda mkpart primary ext4 0% 100%
第二个是通过 mkfs.ext4 实用程序,它创建文件系统本身:
sudo mkfs.ext4 -L datapartition /dev/sda1
我的问题是:这些工具到底在做什么?为什么创建分区时需要ext4?我本以为分区本身的定义在某种程度上独立于组成的文件系统。
(我正在遵循的教程在这里:https://www.digitalocean.com/community/tutorials/how-to-partition-and-format-storage-devices-in-linux)
答案1
一个分区可以有一个类型。分区类型是一个提示,如“此分区被指定用于服务某种功能”。许多分区类型与某些文件系统相关联,尽管这种关联并不总是严格或明确的。您可以预期类型 0x07 的分区具有 Microsoft 兼容的文件系统(例如 FAT、NTFS 或 exFAT),而 0x83 类型的分区则具有本机 Linux 文件系统(例如 ext2/3/4)。
文件系统的创建确实是一个完全独立且正交的步骤(您可以将任何文件系统放在任何您想要的地方 - 只是不要指望事情可以开箱即用)。
parted
将分区定义为“整个磁盘的一部分”。它实际上不需要知道分区类型(该参数是可选的)。然而,在使用中,如果分区类型未正确提示文件系统,则文件系统的自动检测以及此后的自动安装可能无法正常工作。
分区是严格线性的存储空间。及其mkfs.ext4
变体创建文件系统,以便您可以拥有实际的目录树,您可以在其中方便地存储命名文件。
答案2
mkfs.something
在已经存在的分区上创建文件系统。在你的情况下:
- 查找驱动器的第一个分区
/dev/sda
- 在其上创建一个新的文件系统文件系统类型
ext4
- 给它标签
datapartition
但是:如果
- 该分区不存在
- 它确实存在,但是分割type 设置为不能用于的类型文件系统类型
ext4
。 A分割输入“告诉”系统什么样的文件系统(类型)您可以在分区上使用。设置分区类型不会创建文件系统,它仅告诉您某些文件系统类型是可能的。例如,partitiontype 0x83 适用于文件系统类型 ext2、ext3、ext4、btrfs...,但不适用于 fat、ntfs...
您首先运行的原因parted
是因为您想要完成 未完成的工作mkfs.ext4
。在您的情况下,它会创建一个分区/dev/sda
并将类型设置为支持的类型ext4
。现在您已拥有运行所需的一切mkfs.ext4
您可能会注意到parted
有很多选择。在您的情况下,这些选项告诉parted
您确保分区表设置为磁盘上的最佳布局,分区应填充整个磁盘,并且它应该是主分区而不是逻辑分区。这些选择的原因是针对一个完全不同的问题。做出其他选择是完全可以的,但是对于许多用例来说,所做的选择确实是“理智”的选择