Linux 中的分区和文件系统——简介

分区和文件系统是每个熟悉计算的人在他们生活中的某个时刻都会遇到的术语之一。 无论是在安装 Linux 系统时创建交换分区、在 MBR 和 GPT 之间混淆,还是只是将笔式驱动器格式化为 FAT32 或 NFTS。 今天我们将深入学习这两个数据管理概念。

Linux 中的分区是什么?

分区是存储设备的一部分,它在逻辑上与设备的其余部分分开。 所有分区都可以像单独的存储设备一样进行管理。 要在设备上存储数据,您需要在设备上至少有 1 个分区。

在设备上拥有多个分区有助于设备更有效地存储数据。 现代文件系统和存储设备不再是这种情况。 一个很好的类比可能是存储设备类似于一块空地。 并且要将您的物品存放在那块空地上,您需要建造房间,也就是隔板。

什么是分区表?

现在我们已经创建了几个分区,我们如何存储每个分区的位置和大小?

这就是分区表发挥作用的地方。 分区表存储每个分区的元数据,即起始位置、结束位置、大小等。

在不同的操作系统中使用了两种主要类型的分区表,MBR(较旧)和 GPT(较新)。

分区表 最大主分区 每个分区的最大大小 安全 操作系统支持
主引导记录 (MBR) 4 2TB 没有这样的安全功能 支持大多数现代操作系统
引导分区表 (GPT) 没有这个限制 18 艾字节 CRC32校验和机制验证文件的完整性 支持大多数现代操作系统

从上表可以清楚地看出为什么 GPT 优于 MBR。

Linux 中的文件系统是什么?

文件系统是我们管理每个分区中数据的方式。 它负责对文件进行索引、存储、检索、命名以及维护文件的元数据(文件所有者、大小、权限等)。 存储在一个分区中。

一个文件保存在多个连续的扇区中,现代每个扇区大约为 4096 字节。 文件系统的工作是识别哪些扇区可以使用,文件必须存储在哪个扇区,以及哪个扇区包含哪个文件。 如果没有这个组织,就不可能检索任何文件,因为系统不知道文件的位置(块)。

文件系统存储此元数据的方式因文件系统而异。 例如,当 FAT 为每个目录/文件夹维护一个表时,NTFS 有一个主文件表,它保存文件系统包含的每个文件的元数据记录,包括表本身。

让我们看看今天使用的主要文件系统:

1. 脂肪

FAT 或文件分配表是微软开发的第一个文件系统。 自从它最初于 1977 年发布以来,已经有多个版本,即 FAT12、FAT16、FAT32,并增加了最大支持的文件大小和驱动器大小。

FAT32 中允许的最大文件大小为 4Gb。 FAT32 是 Windows XP 之前的默认文件系统,之后 NTFS 接管了。 虽然非常基本,但 FAT 支持几乎所有设备和操作系统,这是它没有完全停止使用并且可以在野外被发现的原因之一。

2.NTFS

新技术文件系统是 FAT 的现代版本。 除了支持高达 16 EB(超过 170 亿千兆字节)的驱动器大小和 256TB 的单个文件大小,它还具有 日记系统。

这大致意味着 NTFS 存储了设备上提交的所有更改的日志。 如果有任何中断或崩溃,这可以很容易地恢复到文件系统的先前版本。 (类似于 git 版本控制)。

与 FAT 不同,NTFS 还支持文件权限、文件压缩和加密文件支持. 因此,这是对 FAT32 的重大升级,今天任何运行 Windows 的驱动器都应格式化为 NTFS。

3. 分机/分机2/分机3/分机4

扩展文件系统或 ext 于 1992 年发布,适用于 Linux。 从那时起,我们进行了三个更新 ext2 引入文件属性(文件权限)和 ext3 引入日志。

ext4 引入了与 ext3 和 ext2 的向后兼容性,增加了存储限制,并进行了一些性能调整。 该文件系统可以支持最大 1 EB 的卷和最大 16 TB 的单个文件。

ext4 还引入了延迟分配的概念,当扇区被强制刷新到存储时,它会将扇区分配给文件。 这提高了 CPU 性能并减少了坏扇区。 如今,几乎所有现代 Linux 发行版都使用 ext4 作为默认文件系统。

4.ZFS

Z 文件系统最初是由 Sun Microsystems 作为其 Open Solaris OS 的一部分开发的,但后来被 Oracle 接管。 它后来被移植到 FreeBSD 和 Linux。

ZFS 是一种高级文件系统,支持

  • 磁盘池 (汇集不同的存储设备以使它们作为一个工作)
  • 写时复制 (在覆盖之前将数据复制到不同的扇区)
  • 快照 (跟踪所有文件更改)
  • 数据完整性验证 (验证文件的校验和以验证它们是否已损坏)
  • 袭击-Z(数据冗余,使存储更可靠)。

这些特性使 ZFS 对于生产环境非常可扩展、可靠且安全。

5. Btrfs

Butter文件系统的B-Tree文件系统是Oracle作为ext4的扩展开发的。 它包括数据池、写入时复制、快照和 RAID,就像 ZFS 一样。 除此之外,它还提供 在线碎片整理。

这使其非常适合笔记本电脑和生产服务器等。 事实上,OpenSUSE 自 2015 年以来一直使用 BtrFS 作为主要文件系统。

结论——Linux中的分区和文件系统

结束这篇文章的一个好方法可能是展示一个分区文件系统层次结构的例子。

我有一个 500 GB 的 SSD,具有三个分区(引导、根和主目录),并使用 GPT 作为分区表。

我目前没有任何交换分区。 所有分区都运行 ext4 文件系统,但是您可以根据需要更改文件系统。

在双引导存储设备(Windows 和 Linux)上,除了这些之外,还有几个用于 Windows 的 NTFS 分区。

您可以通过运行以下命令检查任何存储设备上的分区。

lsblk 

要阅读有关分区和文件系统的更多信息,您可以参考以下来源:

  • 如何在 Ubuntu 上安装 ZFS——安装和使用指南
  • Ext4 vs Btrfs 文件系统——你应该选择哪一个?
  • 如何在 Ubuntu 上使用 Btrfs 安装和格式化分区?
  • 关于 ext4 的常见问题

谢谢!