40. 【Linux教程】文件系统介绍

简介: 40. 【Linux教程】文件系统介绍

从本小节我们将要开始 Linux 中的文件系统,在 Linux 系统中,文件系统都是基于硬盘创建的,Linux 系统支持多种不同类型的文件系统管理文件和目录,本小节介绍几种基本常见的文件系统。


Linux 文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有 Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。在 Linux 中普通文件和目录文件保存在称为块物理设备的磁盘或者磁带上,大多数 Linux 发行版在安装时会提供默认的文件系统。

1. df 命令显示文件系统类型

使用 df -T -h 命令可以查看当前文件系统的类型,命令如下:

df  -T -h

执行结果如下图:

执行结果详解:

  • 第一列 文件系统 表示的含义是 设备的设备文件位置;
  • 第二列 类型 表示的含义是 文件系统类型(图中类型包含 devtmpfs、tmpfs、xfs、ext4、iso9660);
  • 第三列 容量 表示的含义是 能容纳的空间大小;
  • 第四列 已用 表示的含义是 已经用了多少空间大小;
  • 第五列 可用 表示的含义是 还有多少空间大小可用;
  • 第六列 已用% 表示的含义是 已经占用的空间比例
  • 第七列 挂载点 表示的含义是 设备挂载了那个挂载点上

2. ext 文件系统介绍

Linux 操作系统最开始引入的文件系统是扩展文件系统,记作 ext,它可以使用虚拟的目录操作硬件设备。ext 文件系统采用索引节点存放虚拟目录中存储的文件信息,索引节点系统在每个物理设备中创建一个单独的表(称为索引节点表)来存储这些文件信息,存储在虚拟目录中的每一个文件在索引节点表有一个条目。ext 文件系统中的 extended 部分来自其跟踪的每个文件的额外数据,这些数据包括:


文件大小;

文件的属主;

文件的访问权限;

指向存有文件数据的每个硬盘块的指针;

文件名;

文件所在的属组。

Linux 通过唯一的数值(称作索引节点号)来引用索引节点表中的每个索引节点,这个值是创建文件时由文件系统分配的。文件系统通过索引节点号而不是文件全名及路径来标识文件。

3. ext2 文件系统介绍

使用最开始的 ext 文件系统有很多的限制(如文件最大不能超过2GB),所以在 Linux 系统出现后,很快就有了 第二代拓展文件系统,记作 ext2。ext2 文件系统是 ext 文件系统基本功能的一个扩展,而且保持了 ext 文件系统一样的结构,ext2 文件系统扩展了索引节点表的格式来保存系统上每个文件的更多信息。


ext2 的索引节点表为文件添加了创建时间、修改时间和最后一次访问的时间帮助系统来追踪文件的访问情况。ext2 文件系统还将允许的最大文件大小增加到了 32 TB(Linux 2.6 之前是 2TB),以容纳数据库服务器中常见的大文件。除了额外扩展的索引节点外,ext2 文件系统还改变了文件在数据块中存储的方式。ext 文件系统在读取文件时不需要为了数据块查找整个物理设备。



3.1 ext2 文件系统特点

当创建 ext2 文件系统时,系统管理员可以根据预期的文件平均长度来选择最佳的块大小(从1024B~4096B)。例如,当文件的平均长度小于几千字节时,块的大小为 1024B 是最佳的,因为这会产生较少的内部碎片——也就是文件长度与存放块的磁盘分区有较少的不匹配。另一方面,大的块对于 大于几千字节的文件通常比较合合适,因为这样的磁盘传送较少,因而减轻了系统的开销。


当创建 ext2 文件系统时,系统管理员可以根据在给定大小的分区上预计存放的文件数来选择给该分区分配多少个索引节点。这可以有效地利用磁盘的空间。


文件系统把磁盘块分为组。每组包含存放在相邻磁道上的数据块和索引节点。正是这种结构,使得可以用较少的磁盘平均寻道时间对存放在一个单独块组中的文件并行访问。


在磁盘数据块被实际使用之前,文件系统就把这些块预分配给普通文件。因此当文件的大小增加时,因为物理上相邻的几个块已被保留,这就减少了文件的碎片。


支持快速符号链接。如果符号链接表示一个短路径名(小于或等于 60 个字符),就把它存放在索引节点中而不用通过由一个数据块进行转换。

3.2 ext2 文件系统健壮性特点

文件更新策略的谨慎实现将系统崩溃的影响减到最少。我们只举一个例子来体现这个优点:例如,当给文件创建一个硬链接时,首先增加磁盘索引节点中 的硬链接计数器,然后把这个新的名字加到合适的目录中。在这种方式下,如果在更新索引节点后而改变这个目录之前出现一个硬件故障,这样即使索引节点的计数 器产生错误,但目录是一致的。因此,尽管删除文件时无法自动收回文件的数据块,但并不导致灾难性的后果。如果这种处理的顺序相反更新索引节点前改变目录,同样的硬件故障将会导致危险的不一致,删除原始的硬链接就会从磁盘删除它的数据块,但新的目录项将指向一个不存在的索引节点。如果那个索引节点号以 后又被另外的文件所使用,那么向这个旧目录的写操作将毁坏这个新的文件。


在启动时支持对文件系统的状态进行自动的一致性检查。这种检查是由外部程序 e2fsck 完成的,这个外部程序不仅可以在系统崩溃之后被激活,也 可以在一个预定义的文件系统安装数每次安装操作之后对计数器加 1 之后被激活,或者在自从最近检查以来所花的预定义时间之后被激活。


支持不可变 immutable 的文件不能修改、删除和更名和仅追加 append-only 的文件只能把数据追加在文件尾。


既与 Unix System V Release 4(SVR4) 相兼容,也与新文件的用户组 ID 的 BSD 语义相兼容。在 SVR4 中,新文件采用创建它的进程的用户组 ID;而在 BSD 中,新文件继承包含它 的目录的用户组 ID。ext2 包含一个安装选项,由你指定采用哪种语义。

4. 小结

本小节介绍了 Linux 系统中较早期的文件系统 etxext2,使用 df -T -h 可以查看磁盘对应的文件系统类型,CentOs 8 默认的文件系统是 xfs,熟悉了 extext2 文件系统之后,有助于后面熟悉和学习其他文件系统。

相关文章
|
2月前
|
Linux 网络安全 Python
linux centos上安装python3.11.x详细完整教程
这篇文章提供了在CentOS系统上安装Python 3.11.x版本的详细步骤,包括下载、解压、安装依赖、编译配置、解决常见错误以及版本验证。
710 1
linux centos上安装python3.11.x详细完整教程
|
2天前
|
存储 Linux 文件存储
Linux文件系统
Linux文件系统 一切皆文件 在Linux中,“一切皆文件”的概念意味着系统中的所有资源,包括硬件设备、目录及进程等,均被视为文件。这种设计简化了操作和管理,具体包括: 普通文件:存储数据的常规文件。 目录文件:包含其他文件和子目录的文件。 进程文件:在/proc目录下代表系统中运行的进程。 设备文件:位于/dev目录,代表硬件设备。 网络字节流套接字文件:用于网络通信的数据流。 链接文件:指向另一个文件的符号链接或硬链接。 管道文件:用于进程间通信的文件。
25 7
|
1月前
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
266 4
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
1月前
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
325 1
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
|
16天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
152 2
|
1月前
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
172 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
2月前
|
存储 Linux 5G
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
这篇文章介绍了LVM(逻辑卷管理)如何提供灵活的磁盘管理方式,允许动态调整逻辑卷的大小而不会丢失数据。
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
|
1月前
|
Linux 开发工具 Docker
各个类linux服务器安装docker教程
各个类linux服务器安装docker教程
55 0
|
2月前
|
存储 Linux 索引
Linux 下最主流的文件系统格式——ext
【9月更文挑战第8天】硬盘被划分为若干相同大小的块(Block),默认大小为4K,便于灵活管理文件数据。文件数据分散存放于这些块中,提高了数据添加、删除和插入的便利性。
|
3月前
|
存储 人工智能 数据管理
深入理解Linux操作系统之文件系统管理探索人工智能:从理论到实践的旅程
【8月更文挑战第30天】在探索Linux的无限可能时,我们不可避免地会遇到文件系统管理这一核心话题。本文将深入浅出地介绍Linux文件系统的基础知识、操作命令及高级技巧,帮助你更有效地管理和维护你的系统。从基础概念到实践应用,我们将一步步揭开Linux文件系统的神秘面纱。