Linux 文件系统 ext4、xfs等详解

明明跟你说过 2024-06-16 14:07:02 阅读 84

🐇明明跟你说过:个人主页

🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅

🔖行路有良友,便是天堂🔖

目录

一、前言

  1、Linux的起源与发展

二、Linux文件系统

1、磁盘的组成

2、磁盘分区表格式

3、Linux文件系统格式 

4、ext4 文件系统重要的概念 

三、数据的存储 

1、目录与文件在文件系统当中如何记录数据

2、挂载点(mount point) 

3、XFS文件系统简介

四、ext4与xfs 


一、前言

  1、Linux的起源与发展

1991年,芬兰赫尔辛基大学的学生林纳斯·托瓦兹(Linus Torvalds)开始编写一个新的操作系统内核,这个内核最初被称为“Freax”。他的初衷只是想学习操作系统内核的开发,并为自己的个人计算机编写一个操作系统。然而,当他将这个内核发布在Internet上并开放源代码后,全球各地的程序员开始参与到这个项目中来,共同完善这个内核。最终,这个内核被命名为Linux,这个名字是由Linus Torvalds的名字和Unix操作系统的名字组合而成的。

Linux从一开始就坚持源代码的公开和免费使用,任何人都可以对其进行修改和分发。这种开放性和自由性吸引了大量的开发者和用户,使得Linux逐渐成长并成熟起来。如今,Linux已经发展成为一个性能稳定、功能强大的多用户网络操作系统,支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。同时,Linux也有上百种不同的发行版,如基于社区开发的Debian、ArchLinux,以及基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。

二、Linux文件系统

1、磁盘的组成

盘片(Platters):通常是由金属或玻璃制成的圆盘,硬盘上通常有多个盘片叠放在一起。数据存储在盘片的表面上,通过磁性材料进行记录和读取。磁头(Read/Write Heads):位于硬盘的读写头部,负责在盘片表面上读取和写入数据。每个盘片上都有一个读写头,它们可以在盘片上移动以访问不同的磁道。磁道(Tracks):盘片的表面被划分为多个同心圆,称为磁道。每个磁道上都存储着一定数量的数据。扇区(Sectors):每个磁道被划分为多个扇区,是硬盘上最小的可寻址单元。通常,一个扇区的大小为512字节或4KB。主轴电机(Spindle Motor):用于旋转盘片的电机,控制盘片的旋转速度。控制电路板(Controller Board):负责控制硬盘的各个部分,包括读写头的移动、数据的读写等。

2、磁盘分区表格式

磁盘分区表是一种数据结构,用于描述硬盘上的分区信息。

常见的磁盘分区表格式有两种:

MBR(Master Boot Record):MBR是传统的磁盘分区表格式,它位于硬盘的第一个扇区(扇区0),通常为512字节大小。MBR分区表最多支持4个主分区,或者3个主分区和1个扩展分区,每个主分区或扩展分区最多可以有2.2TB的容量限制。由于容量限制和其他限制,MBR分区表在现代计算机中已经逐渐被UEFI和GPT取代。GPT(GUID Partition Table):GPT是一种更先进的磁盘分区表格式,它使用全局唯一标识符(GUID)来标识分区和磁盘。GPT分区表支持更大的磁盘容量(超过2TB),并且允许最多128个分区。除了提供更大的容量和更多的分区之外,GPT还提供了数据完整性校验和磁盘备份表等功能,使其在现代计算机系统中更为常见。

选择使用MBR还是GPT分区表格式取决于硬件要求、操作系统支持和数据需求。对于大容量硬盘和新型计算机系统,通常建议使用GPT分区表格式以获取更好的性能和可靠性。

3、Linux文件系统格式 

Linux操作系统支持多种文件系统格式,每种格式都有其特定的用途和优势。

以下是一些常见的Linux文件系统格式:

ext4:ext4是Linux中最常用的文件系统之一,它是ext文件系统的进化版本。ext4提供了更快的文件系统检查和更好的性能,支持更大的文件和分区大小。它是许多Linux发行版的默认文件系统。XFS:XFS是一种高性能的日志文件系统,适用于大容量存储和大文件。它具有快速的读写速度、高效的空间管理和稳定的性能,在处理大文件和大型数据集时效果显著。Btrfs:Btrfs是一种先进的复制文件系统,具有快速的快照、数据压缩、数据校验和数据恢复等功能。它支持在线扩展和压缩,以及快速的检查和修复功能。ZFS:ZFS是一种先进的文件系统和卷管理器,最初由Sun Microsystems开发,现在在许多Linux发行版中可用。ZFS具有强大的数据完整性检查和修复功能,支持快照、压缩和加密等高级功能。ext3:ext3是ext文件系统的一个稳定版本,它与ext4兼容,并提供了可靠的文件系统和数据保护。尽管已经被ext4取代,但在一些较老的系统上仍然广泛使用。F2FS:F2FS(Flash-Friendly File System)是专门为闪存设备设计的文件系统,具有优化的读写性能和存储寿命管理。它适用于嵌入式设备和闪存存储介质。

选择合适的文件系统取决于系统的需求、硬件配置和预期的性能和功能。通常建议根据具体的用途和环境选择最合适的文件系统。

4、ext4 文件系统重要的概念 

inode(索引节点):inode 是文件系统中的一个数据结构,用于存储文件或目录的元数据信息,如文件类型、权限、拥有者、大小、时间戳等。每个文件或目录都有一个对应的 inode 来描述其属性和位置。数据区块:数据区块是用于存储文件内容的实际数据块。当文件被创建或修改时,其内容被存储在数据区块中。ext4 文件系统将文件内容分散存储在多个数据块中,以提高文件系统的效率和性能。超级块:超级块是 ext4 文件系统的关键数据结构之一,它存储了文件系统的元数据信息,如文件系统的大小、inode 数量、数据块数量、挂载选项等。每个文件系统只有一个超级块,位于文件系统的开头位置。块组(Block Group):块组是 ext4 文件系统的逻辑单元,用于组织和管理文件系统中的数据。每个块组包含一组连续的数据块、inode 和位图等。块组有助于提高文件系统的性能和可管理性。位图:位图是用于跟踪数据块和 inode 的使用情况的数据结构。每个块组都有自己的位图,用于标记已分配和未分配的数据块和 inode。

三、数据的存储 

1、目录与文件在文件系统当中如何记录数据

在 Linux 文件系统中,目录和文件都是通过索引节点(inode)来记录和管理的。每个文件和目录都有一个对应的 inode 来描述其属性和位置。当文件系统被创建时,会分配一块区域用于存储 inode,每个 inode 记录了文件或目录的元数据信息,如文件类型、权限、拥有者、大小、时间戳等,以及指向文件数据块的指针。

对于文件来说,inode 中存储了文件的元数据信息以及指向文件数据块的指针。文件数据块则用于存储文件的实际内容。

对于目录来说,inode 中存储了目录的元数据信息,如目录的权限和拥有者等,并包含了一个目录项列表,每个目录项对应一个子文件或子目录的名字和对应的 inode 号。这样的设计实现了目录与文件之间的映射关系。

当用户在文件系统中创建、修改或删除文件和目录时,实际上是在 inode 中进行操作,修改相应的元数据信息或者更新指向数据块的指针。文件系统会根据 inode 中的信息来读取或写入文件的内容,并根据目录项列表来管理目录结构和文件的索引关系。

总的来说,Linux 文件系统通过 inode 来记录和管理文件和目录的元数据信息,并通过指向数据块的指针来存储和访问文件的实际内容,从而实现了文件系统的组织和管理。

2、挂载点(mount point) 

在计算机领域,挂载点(mount point)是指将文件系统连接到文件系统树中的特定位置,使得该文件系统中的内容可以在该位置访问。当文件系统被挂载到一个挂载点上时,该挂载点就成为了该文件系统的访问入口。

在 Linux 和类 Unix 系统中,挂载点通常是一个目录,可以通过 mount 命令将文件系统挂载到指定的目录上。例如:

mount /dev/sdb1 /mnt

上述命令将 /dev/sdb1 设备上的文件系统挂载到 /mnt 目录上,这样就可以通过 /mnt 访问该文件系统中的内容。

挂载点的作用:

扩展文件系统空间:通过将新的文件系统挂载到现有目录下,可以扩展该目录下的文件存储空间。分离文件系统:将不同用途的文件系统挂载到不同的目录下,可以对文件进行分组和管理,提高文件系统的组织性和可管理性。网络文件共享:通过将远程服务器上的文件系统挂载到本地目录下,可以实现网络文件共享和访问。安装新设备:将新设备(如磁盘、光驱等)上的文件系统挂载到系统中,使得系统可以识别和使用该设备上的内容。

挂载点在操作系统中扮演着重要的角色,是文件系统管理和访问的核心概念之一。

3、XFS文件系统简介

XFS(X File System)是一个高性能、高可靠性的日志文件系统,旨在提供对大型存储设备的高效管理。它采用了许多先进的技术,如延迟分配、日志化结构等,以提供出色的读写性能。同时,XFS使用了元数据日志来保证文件系统的一致性和可靠性,避免数据损坏和文件系统崩溃问题。

XFS文件系统具有快速恢复机制,可以在文件系统错误或意外断电后更快地进行修复和恢复。此外,它还支持诸如快照、在线扩容、透明压缩等高级特性,提供了更灵活和强大的功能。

XFS文件系统特别适合用于大型存储设备的管理,例如存储服务器、文件共享服务器等。同时,它也适用于对文件和目录的权限和安全性要求较高的应用场景,如数据库服务器、Web服务器等。XFS文件系统能够满足需要高性能和稳定性的应用需求,例如高负载的应用服务器、高并发的应用程序等。

XFS(eXtended File System)最初由SGI(Silicon Graphics, Inc.)开发,旨在用于 UNIX 类操作系统。它具有以下特点:

高性能: XFS设计用于高性能工作负载,能够处理大型文件和大容量文件系统。大容量支持: XFS支持非常大的文件系统和文件,最大文件系统大小和最大文件大小都非常高。日志功能: XFS使用日志来跟踪文件系统的更改,这使得在意外断电或系统崩溃时可以更快速地恢复文件系统的一致性。高并发性: XFS支持高并发访问,可以有效地处理多个并发读写请求。灵活性: XFS提供了灵活的配置选项,可以根据不同的应用场景进行调整和优化。

 

四、ext4与xfs 

ext4和XFS它们各自具有一些特点和优势,适用于不同的使用场景。

ext4(Fourth Extended File System):

成熟稳定: ext4是Linux中最常见的文件系统之一,它是ext3文件系统的改进版本,因此在Linux系统中被广泛使用。向下兼容: ext4保留了ext3的许多特性,并提供了更高的性能和更大的文件系统支持。易于维护: ext4提供了较好的稳定性和易于维护的特性,适合用于标准的桌面和服务器环境。

XFS(eXtended File System):

高性能: XFS专为高性能工作负载而设计,能够处理大型文件和大容量文件系统,适用于需要高并发和高吞吐量的场景。日志功能: XFS使用日志功能来跟踪文件系统的更改,提高了系统的稳定性和恢复能力。大容量支持: XFS支持非常大的文件系统和文件,适合用于大型服务器和存储环境。

选择使用ext4还是XFS取决于具体的需求和应用场景。一般来说,在标准的桌面和服务器环境中,ext4是一个不错的选择,而在需要处理大型文件和高性能工作负载的情况下,XFS可能更适合。

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Linux的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!! 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。