Linux文件系统是什么?

来源:TechTMT.Com  作者:整理  日期:2022-02-25 13:53:59

Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有 Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。

Linux 文件系统 Linux file system

创始人

Linus Torvalds

林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)出生于芬兰赫尔辛基市。父亲尼尔斯·托瓦兹(Nils Torvalds)是一名活跃的共产主义者及电台记者。托瓦兹家族属于在芬兰占 6%的少数民族芬兰瑞典人。他毕业于赫尔辛基大学计算机科学系,1997 年至 2003 年在美国加州硅谷任职于全美达公司(Transmeta Corporation)参与该公司芯片的 code morph 技术研发。后受聘于开源码发展实验室(OSDL : Open Source Development Labs,Inc),全力开发 Linux 内核。现任职于 Linux 基金会。

基本介绍

很详细地了解某个操作系统的实际工作方式是非常困难的,因为大多数操作系统的源代码都是严格保密的。在以实际使用为目标的操作系统中,让任何人都可以自由获取系统源代码,无论目的是要了解、学习还是修改,这样的系统并不多。本论文的主题就是这些少数操作系统中的一个:Linux。

Linux 是一个性能稳定、功能强大、效率高的操作系统。它在功能特性方面与 Unix 系统相似,同时又具有多任务、多用户、多平台等若干特性。Linux 的源代码是开放的,阅读 Linux 源代码,无疑是深入学习 Linux 的最好方法。

系统原理

Linux 最早的文件系统是 Minix,但是专门为 Linux 设计的文件系统——扩展文件系统第二版或 EXT2 被设计出来并添加到 Linux 中,这对 Linux 产生了重大影响。EXT2 文件系统功能强大、易扩充、性能上进行了全面优化,也是所有 Linux 发布和安装的标准文件系统类型。

每个实际文件系统从操作系统和系统服务中分离出来,它们之间通过一个接口层:虚拟文件系统或 VFS 来通讯。VFS 使得 Linux 可以支持多个不同的文件系统,每个表示一个 VFS 的通用接口。由于软件将 Linux 文件系统的所有细节进行了转换,所以 Linux 核心的其它部分及系统中运行的程序将看到统一的文件系统。Linux 的虚拟文件系统允许用户同时能透明地安装许多不同的文件系统。

在 Linux 文件系统中,作为一种特殊类型/proc 文件系统只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。/proc 文件系统是一个伪文件系统,用户和应用程序可以通过/proc 得到系统的信息,并可以改变内核的某些参数。

在 Linux 文件系统中,EXT2 文件系统、虚拟文件系统、/proc 文件系统是三个具有代表性的文件系统,本论文试图通过对他们的分析来研究 Linux 文件系统机制。并且在分析这三种文件系统的基础上对 Linux 文件系统操作进行了解、研究(本论文选取了 open 和 close 两种操作进行研究)。在第二部分中将介绍 EXT2 文件系统;第三部分论述虚拟文件系统的特点;第四部分简要介绍/proc 文件系统;最后,介绍两种具体文件系统操作的实现。

文件系统

在 Linux 中普通文件和目录文件保存在称为块物理设备的磁盘或者磁带上。一套 Linux 系统支持若干物理盘,每个物理盘可定义一个或者多个文件系统。(类比于微机磁盘分区)。每个文件系统由逻辑块的序列组成,一个逻辑盘空间一般划分为几个用途各不相同的部分,即引导块、超级块、inode 区以及数据区等。

引导块:在文件系统的开头,通常为一个扇区,其中存放引导程序,用于读入并启动操作系统;超级块:用于记录文件系统的管理信息。特定的文件系统定义了特定的超级块;inode 区(索引节点):一个文件或目录占据一个索引节点。第一个索引节点是该文件系统的根节点。利用根节点,可以把一个文件系统挂在另一个文件系统的非叶节点上;数据区:用于存放文件数据或者管理数据。

Linux 最早引入的文件系统类型是 MINIX。MINIX 文件系统由 MINIX 操作系统定义,有一定的局限性,如文件名最长 14 个字符,文件最长 64M 字节。第一个专门为 Linux 设计的文件系统是 EXT(Extended File System),但目前流行最广的是 EXT4。

第二代扩展文件系统由 Rey Card 设计,其目标是为 Linux 提供一个强大的可扩展文件系统。它同时也是 Linux 界中设计最成功的文件系统。通过 VFS 的超级块(struct ext2_*@#_info ext2_*@#)可以访问 EXT2 的超级块,通过 VFS 的 inode(struct ext2_inode_info ext2_i)可以访问 EXT2 的 inode。

文件系统 EXT2 的源代码在/usr/src/linux/fs/ext2 目录下,它的数据结构在文件/usr/src/linux/include/linux/ext2_fs.h 以及同一目录下的文件 ext2_fs_i.h 和 ext2_fs_*@#.h 中定义。

EXT2 文件系统将它所占用的逻辑分区划分成块组(block group)。

逻辑分区

和很多文件系统一样, EXT2 建立在数据被保存在数据块中的文件内这个前提下。这些数据块长度相等且这个长度可以变化,某个 EXT2 文件系统的块大小在创建(使用 mke2fs)时设置。每个文件的大小和刚好大于它的块大小正数倍相等。如果块大小为 1024 字节而一个 1025 字节长的文件将占据两个 1024 字节大小的块。这样你不得不浪费差不多一半的空间。我们通常需要在 CPU 的内存利用率和磁盘空间使用上进行折中。而大多数操作系统,包括 Linux 在内,为了减少 CPU 的工作负载而被迫选择相对较低的磁盘空间利用率。并不是文件中每个块都包含数据,其中有些块被用来包含描叙此文件系统结构的信息。EXT2 通过一个 inode 结构来描叙文件系统中文件并确定此文件系统的拓扑结构。inode 结构描叙文件中数据占据哪个块以及文件的存取权限、文件修改时间及文件类型。EXT2 文件系统中的每个文件用一个 inode 来表示且每个 inode 有唯一的编号。文件系统中所有的 inode 都被保存在 inode 表中。 EXT2 目录仅是一个包含指向其目录入口指针的特殊文件(也用 inode 表示)。

对文件系统而言文件仅是一系列可读写的数据块。文件系统并不需要了解数据块应该放置到物理介质上什么位置,这些都是设备驱动的任务。无论何时只要文件系统需要从包含它的块设备中读取信息或数据,它将请求底层的设备驱动读取一个基本块大小整数倍的数据块。EXT2 文件系统将它所使用的逻辑分区划分成数据块组。每个数据块组将那些对文件系统完整性最重要的信息复制出来, 同时将实际文件和目录看作信息与数据块。为了发生灾难性事件时文件系统的修复,这些复制非常有必要。

与微软比较

相同点

用户和组

Linux 是多用户多任务操作系统而 Windows 是单用户多任务操作系统。都可以由许多不同的用户来使用,为每个用户提供单独的环境和资源。基于用户身份来控制安全性。都可以以组成员的方式来控制资源的访问权限,这样在用户数目较大时可以不必为每一个帐号设置权限。

用户和组可以集中管理,让多个服务器共享相同的用户和身份验证数据。

文件系统

Linux 和 Windows 都支持多种文件系统。文件资源可以通过 NetBIOS、FTP 或者其他协议与其他客户机共享。可以很灵活地对各个独立的文件系统进行组织,由管理员来决定它们在何处可以以何种方式被访问。

端口和设备

两种操作系统都支持各种物理设备端口,比如并口、串口和 USB 接口。支持各种控制器,比如 IDE 和 SCSI 控制器。Linux 还支持很多“刚刚上市”的标准硬件。

网络

Linux 和 Windows 都支持多种网络协议,比如 TCP/IP、NetBIOS 和 IPX。都支持多种类型的网络适配器。都具备通过网络共享资源的能力,比如共享文件和打印。都可以提供网络服务能力,比如 DHCP 和 DNS。

服务

Linux 和 Windows 都提供服务。所谓服务,指的是那些在后台运行的应用程序,可以为系统和远程调用该服务的计算机提供一些功能。在系统引导的时候可以单独控制并自动启动这些程序。(注意:Linux 中沿用了 Unix 的习惯,称这种应用程序为 daemon)

分类:资讯
编辑:tmt
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。文章版权归原作者所有,内容不代表本站立场!
免责声明: 阁下应知本站所提供的内容不能做为操作依据。本站作为信息内容发布平台,不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考! 如文中内容影响到您的合法权益(含文章中文字、图片等),请及时联系本站,我们会及时删除处理。