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

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_sb_info ext2_sb)可以访问 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_sb.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)

0个人收藏 收藏

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • CloudLinux OS

    CloudLinux,专为共享主机环境设计的操作系统

    CloudLinux是一款专为共享主机环境设计的Linux发行版,主要优势在于提高服务器的稳定性和安全性。通过轻量级虚拟环境(LVE)技术实现资源分配的公平性,CageFS技术保证了隔离安全,同时支持多版本PHP选择。适合那些寻求在共享环境中提供高效、安全托管服务的企业,尤其是需要高度稳定和安全保障的托管服务提供商。
  • Proxmox VE PVE

    Proxmox VE(PVE),开源虚拟机管理平台

    Proxmox VE是一个高效、开源的虚拟化管理平台,融合了KVM和LXC技术,提供简洁的Web管理界面,支持虚拟机和容器管理。它特别适用于中小企业,因其成本效益高、操作简便,能够满足复杂的存储和网络需求。凭借强大的社区支持和灵活的配置选项,Proxmox VE是追求经济实用虚拟化解决方案的理想选择。
  • QNAP QTS

    QNAP QTS,威联通NAS设备专属操作系统

    QNAP QTS是一个高效且功能丰富的NAS操作系统,特别适用于小型至中型企业和家庭用户。提供了强大的文件存储、备份、多媒体服务和虚拟化支持。其直观的用户界面和丰富的应用扩展使得数据管理变得简单高效。在数据安全和性能方面表现出色,虽在某些方面略逊于竞争对手,但在多媒体和虚拟化方面占有优势,是一个综合性强且可靠的选择。
  • Oracle Solaris

    Solaris,为企业级应用设计的Unix操作系统

    Solaris操作系统,以其卓越的稳定性、安全性和高性能著称,主要服务于企业级市场。它在处理高负载任务和数据密集型应用方面表现出色,尤其适合需要高度可靠性和安全性的行业。尽管面临来自Linux等系统的竞争,Solaris凭借其独特优势,在特定企业环境中保持着重要地位。
  • NAS ZFS

    NAS如何选择文件系统

    选择NAS文件系统时关键因素包括性能、数据安全性、容量、兼容性和易用性。主流选项如EXT4、Btrfs、ZFS、NTFS、exFAT各有特点。高性能和并发访问适合EXT4或ZFS,数据安全性重视者应考虑ZFS或Btrfs。大容量存储偏好ZFS和Btrfs,而高兼容性场景适用NTFS或exFAT。
  • ZFS

    Btrfs和ZFS哪个文件系统更适合NAS

    Btrfs和ZFS都是高效的文件系统,适用于NAS。Btrfs操作简单,适合资源有限和需求灵活性的环境。ZFS提供更高的数据完整性和性能,适合硬件资源充足、对数据安全有高要求的场景。选择应基于硬件资源、数据安全需求和性能考虑。