创作

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

Linux中文件系统分类方法

strongerHuang 来源:strongerHuang 作者: ZhengN 2021-02-17 09:30 次阅读

Linux一个重要的哲学是:一切皆文件。而文件与文件系统是密切相关的,本篇笔记我们来一起学习、理清那些令我们眼花缭乱的文件系统。

文件系统粗略的分类:

6821ebb2-507c-11eb-8b86-12bb97331649.png

下面依次进行介绍:

根文件系统

根文件系统(rootfs)是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在根文件系中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。

根文件系统的根目录/下有很多子目录:

68420ffa-507c-11eb-8b86-12bb97331649.png

虚拟文件系统

从上面的分类图中我们可以知道Linux中有很多文件系统,并且是共存的。那么在Linux中是怎么做到让一切都是文件呢?这是由于有一层虚拟文件系统软件抽象层的存在,这个软件抽象层为用户屏蔽了底层文件系统的差异,向上层提供了统一地访问接口。如图:

68a4e3c8-507c-11eb-8b86-12bb97331649.png

(图片来源:野火电子

无论最下层的文件系统是什么,我们最上层的用户端尽管使用系统调用接口(open、write、read等)或glibc接口(fopen、fwrite、fread等)来操作就可访问文件系统里的文件,使得一切都是文件成为可能。

真文件系统

真文件系统其实是实际存储设备的文件系统,挂载于EEPROM、 Nor FLASH、 NAND FLASH、 eMMC 等存储器中。

1、ext2

EXT2第二代扩展文件系统(second extended filesystem,缩写为 ext2),是Linux内核早期所用的文件系统,但是随着技术的发展 ext2 文件系统已经不推荐使用了。ext2是一个非日志文件系统。

2、ext3

EXT3是第三代扩展文件系统(Third extended filesystem,缩写为ext3),是一个日志文件系统。主要特点:

高可用性:系统使用了ext3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。宕机发生后,恢复ext3文件系统的时间只要数十秒钟。

数据完整性:ext3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。

3、ext4

EXT4是第四代扩展文件系统(Fourth extended filesystem,缩写为 ext4)是一个日志文件系统,是ext3文件系统的后继版本。主要特点:

更多的子目录数量:Ext3目前只支持32000个子目录,而Ext4取消了这一限制,理论上支持无限数量的子目录。

更多的块和i-节点数量:Ext3文件系统使用32位空间记录块数量和i-节点数量,而Ext4文件系统将它们扩充到64位。

伪文件系统

Linux内核提供了sysfs、procfs、devtmpfs等伪文件系统,伪文件系统存在于内存,不占用硬盘。以文件地形式向用户提供一些系统信息,用户读写这些文件就可以读取、修改系统的一些信息。

1、procfs

procfs是 进程文件系统的缩写,包含一个伪文件系统(启动时动态生成的文件系统),用于通过内核访问进程信息。这个文件系统通常被挂载到 /proc 目录。

由于 /proc 不是一个真正的文件系统,它也就不占用存储空间,只是占用有限的内存。

/proc目录的内容如下:

690f2a3a-507c-11eb-8b86-12bb97331649.png

其中,这些以数字命名的文件夹就是与进程相关的部分,这些数字就是进程的PID号。

我们可以访问系统信息,如读取CPU相关信息:

69435012-507c-11eb-8b86-12bb97331649.png

查看内核支持的文件系统类型:

69786432-507c-11eb-8b86-12bb97331649.png

可见,内核支持了很多文件系统,我们上面的文件系统汇总只列出了一小部分,感兴趣的朋友可以自己去了解其它的。

我们可以通过/proc目录了解到很多信息,大家可以自行尝试查看其它信息。

2、sysfs

sysfs是一个基于内存的文件系统,它的作用是将内核信息以文件的方式提供给用户程序使用。sysfs 文件系统被挂载在 /sys 挂载点上。/sys目录下的内容如:

69bd3878-507c-11eb-8b86-12bb97331649.png

上一篇分享了《看看你的嵌入式设备CPU温度是多少,能烤肉吗?》中,我们读取/sys/devices/virtual/thermal/thermal_zone0下的temp文件就可以得到cpu的温度。

sysfs 与 proc 相比有很多优点,最重要的莫过于设计上的清晰。sysfs 的设计原则是一个属性文件只做一件事情, sysfs 属性文件一般只有一个值,直接读取或写入。

整个 /proc/scsi目录在2.6内核中已被标记为过时(LEGACY),它的功能已经被相应的 /sys 属性文件所完全取代。新设计的内核机制应该尽量使用 sysfs 机制,而将 proc 保留给纯净的“进程文件系统”。

3、devtmpfs

devtmpfs 的功用是在 Linux 核心 启动早期建立一个初步的 /dev,令一般启动程序不用等待 udev(udev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。),缩短 GNU/Linux 的开机时间。

在devtmpfs出现之前,/dev/下面的设备节点应该都是udev-daemon收到内核的事件后用mknod程序或者直接调mknod()系统调用创建出来的;现在基本上不走udev了,几乎所有的设备文件(比如/dev/sda1)都是内核直接创建的。

我们在之前hello驱动、led驱动实验中,我们动态加载的方式加载我们的驱动程序之后,会在/dev目录下生成相应的节点。我们只要在应用程序中操作这个节点就可以间接地操控我们的led:

69e3ff6c-507c-11eb-8b86-12bb97331649.png

再一次体现了Linux中一切皆文件的概念。

相关笔记推荐:

《嵌入式Linux驱动基础》

《LED驱动实验(总线设备驱动模型)》

网络文件系统

NFS(Network File System) ,即网络文件系统, 能使使用者访问网络上别处的文件就像在使用自己的计算机一样。其工作原理是使用客户端/服务器架构 :

6a011778-507c-11eb-8b86-12bb97331649.png

服务器程序向其他计算机提供对文件系统的访问,其过程称为输出。NFS客户端程序对共享文件系统进行访问时,把它们从NFS服务器中“输送”出来。

文件通常以块为单位进行传输。在我们嵌入式Linux中,NFS的主要应用如:把主机的上文件(比如目标板的可执行文件)共享给目标板,这样目标板就很方便地运行程序。比如我们往期笔记【Linux笔记】挂载网络文件系统中的实验框图:

6a2bda8a-507c-11eb-8b86-12bb97331649.png

以上就是本次的笔记分享,如有错误,欢迎指出,谢谢!本次着重分享了几个重要的文件系统,了解这几个文件系统对我们学习嵌入式Linux有帮助。

责任编辑:xj

原文标题:Linux中文件系统分类,以及基础使用方法

文章出处:【微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

  • Linux
    +关注

    关注

    73

    文章

    7543

    浏览量

    193653
  • 文件系统
    +关注

    关注

    0

    文章

    121

    浏览量

    18369

原文标题:Linux中文件系统分类,以及基础使用方法

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux与Windows文件换行符的区别

    当一个文件在Windows和Linux上交替操作后,经常遇到一些莫名其妙的问题,如shell脚本无法....
    的头像 一口Linux 发表于 06-27 15:18 10次 阅读

    iCore-3568JQ-工具-Linux_Upgrade_Tool_v1.59

    iCore-3568JQ板载 RK3568J 四核 64 位工业级处理器,支持 8GB 大内存;支持....
    发表于 06-27 14:27 3次 阅读
    iCore-3568JQ-工具-Linux_Upgrade_Tool_v1.59

    TI的Sitara AM6442实时网络处理器

      AM6442 的集成 Cortex-A53 内核为 Linux 应用程序提供了理想的计算特性,并....
    发表于 06-27 14:24 86次 阅读
    TI的Sitara AM6442实时网络处理器

    iCore-3568JQ-源代码-Linux_SDK源码包

    iCore-3568JQ板载 RK3568J 四核 64 位工业级处理器,支持 8GB 大内存;支持....
    发表于 06-27 14:23 6次 阅读
    iCore-3568JQ-源代码-Linux_SDK源码包

    iCore-3568JQ-工具-firefly-linux-repack

    iCore-3568JQ板载 RK3568J 四核 64 位工业级处理器,支持 8GB 大内存;支持....
    发表于 06-27 14:18 3次 阅读
    iCore-3568JQ-工具-firefly-linux-repack

    iCore-3568JQ-资源-linux-headers

    iCore-3568JQ板载 RK3568J 四核 64 位工业级处理器,支持 8GB 大内存;支持....
    发表于 06-27 14:13 3次 阅读
    iCore-3568JQ-资源-linux-headers

    基于ANSI C加密库的RTCA DO-178C的DAL A支持

      鉴于与重新启动航空电子系统相关的严格性能要求,wolfSSL 的服务组织随时为希望跟上公司技术的....
    的头像 星星科技指导员 发表于 06-27 14:09 86次 阅读

    嵌入式Linux上的以太网TSN简介

    这些是您可能每天都在使用的各种基于 Linux 的嵌入式系统背后的关键构建块,甚至可能不知道它们运行....
    的头像 星星科技指导员 发表于 06-27 11:56 109次 阅读
    嵌入式Linux上的以太网TSN简介

    【赛昉科技昉·星光RISC-V单板计算机试用体验】运行边缘AI框架——TFLM

    一、TFLM简介 TFLM是TensorFlow Lite for Microcontrollers项目的简称,全称翻译过来就是“适用于微控制器的Ten...
    发表于 06-26 21:59 171次 阅读
    【赛昉科技昉·星光RISC-V单板计算机试用体验】运行边缘AI框架——TFLM

    【时擎科技AT1000开发板试用体验】官方Linux sdk编译配置

    本来不打算写这个编译配置,只是写给没有使用过linux编译源码的小伙伴说说。Ubuntu版本: Ubuntu 20.04.3 LTS。 在收到时...
    发表于 06-26 17:13 341次 阅读

    【赛昉科技昉·星光RISC-V单板计算机试用体验】Debian系统Wi-Fi联网和国内apt源

    烧写Debian镜像 开始本篇之前,需要先下载、烧录Debian系统镜像。 这里使用了社区**Houge_Langley**大佬最新Debian镜像...
    发表于 06-26 11:07 426次 阅读
    【赛昉科技昉·星光RISC-V单板计算机试用体验】Debian系统Wi-Fi联网和国内apt源

    NVIDIA DOCA数据处理器软件正式开放

    NVIDIA 联合发起 Linux 基金会项目,致力于实现数据中心创新的大众化;进一步向软件提供商、....
    的头像 NVIDIA英伟达 发表于 06-24 15:00 97次 阅读

    求助,可以提供CH343G MAC和Linux的最新驱动吗?

    WCH,您好!可以提供一下CH343G MAC和Linux的最新驱动吗?   ...
    发表于 06-24 12:02 89次 阅读

    Linux内存背后的那些事儿

    当要学习一个新知识点时,比较好的过程是先理解出现这个技术点的背景原因,同期其他解决方案,新技术点解决....
    的头像 一口Linux 发表于 06-24 11:35 178次 阅读

    嵌入式必学!硬件资源接口详解——基于ARM AM335X开发板 (下)

    前 言本文档主要介绍嵌入式初级学习者,在使用核心板/开发板过程中,所做的一些硬件接口资源以及设计注意事项等内容。本篇文章...
    发表于 06-24 10:58 4199次 阅读

    Linux用电功耗调优的笔记分享

    整理一些Linux用电功耗调优的笔记,分享给小伙伴,关于用电调优个人觉得
    的头像 一口Linux 发表于 06-23 15:19 263次 阅读

    go项目怎么让docker镜像体积减小

    go 项目怎么让 docker 镜像体积减小?本文做了详细介绍。
    的头像 马哥Linux运维 发表于 06-23 10:49 117次 阅读

    Vim编辑器的使用学习和使用技巧

    首先我们先理清楚一个概念:编辑器和编译器和调试器!
    的头像 马哥Linux运维 发表于 06-23 10:43 204次 阅读

    PcapPlusPlus网络嗅探和包装分析制作框架

    ./oschina_soft/PcapPlusPlus.zip
    发表于 06-23 10:26 6次 阅读
    PcapPlusPlus网络嗅探和包装分析制作框架

    A13-OLinuXino-MICRO的特征

    描述 带有 A13 ARM SOC 256MB RAM 的嵌入式 Linux 板 - A13-OLinuXino-MICRO 特征 1GHz 的 A13 C...
    发表于 06-23 06:08 38次 阅读

    【赛昉科技昉·星光RISC-V单板计算机试用体验】Debian系统内核编译与安装升级

    在赛昉的RVSPACE社区上,提供了很多当前已经适配的操作系统: 我比较喜欢的是Debian系统,比纯粹稳定,所以这次下载...
    发表于 06-22 20:47 774次 阅读

    香橙派RK3399开发板OrangePi4 LTS在linux上的GPU测试说明

    1、Linux4.4 和 Linux5.10 Debian 系统 GPU 的测试说明 注意,Linux4.4 Debian10 和 Linux5.10 Debian11 系统使用的...
    发表于 06-22 20:17 401次 阅读
    香橙派RK3399开发板OrangePi4 LTS在linux上的GPU测试说明

    虚拟化如何在嵌入式软件开发中展示实力

      所有这些产品和设计优势都表明嵌入式市场虚拟技术的长期、持续趋势。尽管可能需要改变嵌入式设计理念,....
    的头像 星星科技指导员 发表于 06-22 17:06 248次 阅读
    虚拟化如何在嵌入式软件开发中展示实力

    如何判断硬件是否支持嵌入式Linux

      如果该部分不受支持,则值得拥有一份最新的 Linux 内核源代码以进行交叉引用。如果最近添加了支....
    的头像 星星科技指导员 发表于 06-22 16:23 193次 阅读
    如何判断硬件是否支持嵌入式Linux

    关于Google Flutter 3更新内容

    又到了 Flutter 稳定版发布时间,我们无比自豪地宣布推出 Flutter 3!仅 3 个月前,....
    的头像 谷歌开发者 发表于 06-22 16:13 187次 阅读

    提高基于Linux的网络连接系统的安全性

      所描述的服务和方法使用 IPv4 协议。IPv6 协议的安全配置被忽略,这使得保持启用是不安全的....
    的头像 星星科技指导员 发表于 06-22 14:39 100次 阅读

    基于Linux的虚拟交换机Open vSwitch项目

      要点: Open vSwitch 是一个著名的基于 Linux 的虚拟交换机的开源项目。作为 C....
    的头像 星星科技指导员 发表于 06-22 14:31 67次 阅读

    createrepo创建yum源的工具

    ./oschina_soft/createrepo.zip
    发表于 06-22 14:30 6次 阅读
    createrepo创建yum源的工具

    基于Linux的物联网设备的安全案例

      对于物联网产品,在设计之初就将安全性构建到产品中是绝对必要的。如果您不这样做,您的业务的关键部分....
    的头像 星星科技指导员 发表于 06-22 14:28 84次 阅读

    简化SBC的嵌入式Linux软件开发

      在 Eclipse 框架内,EMAC 使用交叉编译来缓解将嵌入式开发环境从标准桌面环境中抽象出来....
    的头像 星星科技指导员 发表于 06-22 11:48 144次 阅读
    简化SBC的嵌入式Linux软件开发

    llvm-mctoll将二进制文件转换为LLVM IR

    ./oschina_soft/llvm-mctoll.zip
    发表于 06-22 11:35 15次 阅读
    llvm-mctoll将二进制文件转换为LLVM IR

    libss7提供SS7协议的应用程序服务

    ./oschina_soft/libss7.zip
    发表于 06-22 11:27 8次 阅读
    libss7提供SS7协议的应用程序服务

    mptcpd多路径TCP守护程序

    ./oschina_soft/mptcpd.zip
    发表于 06-22 11:18 8次 阅读
    mptcpd多路径TCP守护程序

    嵌入式Linux文件系统管理的工具选择

      嵌入式 Linux 开发人员可以使用平台映像生成器等工具获得对构建复杂文件系统的更多控制,这使得....
    的头像 星星科技指导员 发表于 06-22 11:15 313次 阅读
    嵌入式Linux文件系统管理的工具选择

    使用嵌入式Linux的动态电源管理策略

      对电源管理的需求不会消失。相反,它正在成为移动设备设计中越来越重要的特征。采用强大的电源管理策略....
    的头像 星星科技指导员 发表于 06-22 11:07 133次 阅读

    IP平台支持云连接设备开发

      越来越广泛的高度便携应用平台,如 Linux、Android 和复杂的实时操作系统 (RTOS)....
    的头像 星星科技指导员 发表于 06-22 10:59 132次 阅读

    CO是高效的C++基础库

    ./oschina_soft/co.zip
    发表于 06-21 11:08 11次 阅读
    CO是高效的C++基础库

    Multipass轻量级VM管理器

    ./oschina_soft/multipass.zip
    发表于 06-21 10:21 8次 阅读
    Multipass轻量级VM管理器

    LIB-ZC通用C扩展库

    ./oschina_soft/gitee-lib-zc.zip
    发表于 06-21 10:06 6次 阅读
    LIB-ZC通用C扩展库

    sm64超级马里奥64反编译

    ./oschina_soft/sm64.zip
    发表于 06-21 09:44 8次 阅读
    sm64超级马里奥64反编译

    CN0549状态监测平台及如何利用进行应用程序开发

      当云和本地进程之间存在一致的连接时,可以将不同的算法拆分为我们已经讨论过的需要或可以在本地运行的....
    的头像 星星科技指导员 发表于 06-20 16:49 264次 阅读
    CN0549状态监测平台及如何利用进行应用程序开发

    MISRA C在安全和安全编程中的位置

      从本质上讲,MISRA C 追求的所有目标都在 SPARK 中得到了最好的实现,结合了更强大的基....
    的头像 星星科技指导员 发表于 06-20 16:07 130次 阅读
    MISRA C在安全和安全编程中的位置

    libcurl等第三方库的通用编译方法

    libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, te....
    的头像 一口Linux 发表于 06-20 13:38 169次 阅读

    怎么看待汽车操作系统

    操作系统提供计算机硬件和应用程序之间的接口。这通过遵循编程到操作系统中的规则和程序来限制应用程序使用....
    的头像 要长高 发表于 06-20 11:57 762次 阅读
    怎么看待汽车操作系统

    FastCFS基于块存储的通用分布式文件系统

    ./oschina_soft/gitee-FastCFS.zip
    发表于 06-17 15:17 20次 阅读
    FastCFS基于块存储的通用分布式文件系统

    OpenTomb开源古墓丽影1-5引擎重制版

    ./oschina_soft/OpenTomb.zip
    发表于 06-17 15:10 20次 阅读
    OpenTomb开源古墓丽影1-5引擎重制版

    EpicFV面向Verilog的形式化验证工具

    ./oschina_soft/gitee-EpicFV.zip
    发表于 06-17 14:53 14次 阅读
    EpicFV面向Verilog的形式化验证工具

    Latte基于Plasma的Dock

    ./oschina_soft/latte-dock.zip
    发表于 06-17 11:35 11次 阅读
    Latte基于Plasma的Dock

    FlaxEngine开源3D游戏引擎

    ./oschina_soft/FlaxEngine.zip
    发表于 06-17 11:33 16次 阅读
    FlaxEngine开源3D游戏引擎

    OCLint静态代码分析工具

    ./oschina_soft/oclint.zip
    发表于 06-17 11:21 9次 阅读
    OCLint静态代码分析工具

    栈是什么?栈有什么作用?

    大多数的处理器架构,都有实现硬件栈。有专门的栈指针寄存器,以及特定的硬件指令来完成 入栈/出栈 的操....
    的头像 一口Linux 发表于 06-17 11:19 205次 阅读

    SUSE正式发布SUSE Euler Linux2.0

    面对传统网络存储存在的各种性能和可靠性挑战,SUSE Euler Linux 2.0 提供了基于 R....
    的头像 openEuler 发表于 06-17 11:10 204次 阅读

    SUSE正式发布SUSE Euler Linux 2.0

    2022 年 6 月 16 日,SUSE 正式发布 SUSE Euler Linux 2.0。它是基....
    的头像 科技绿洲 发表于 06-17 10:42 235次 阅读

    汽车应用中AGL虚拟化架构的概述

      根据 EE 的特性,通信总线也可以是关键的或非关键的。为了保证隔离、数据安全和隐私,关键总线仅限....
    的头像 星星科技指导员 发表于 06-17 10:33 158次 阅读
    汽车应用中AGL虚拟化架构的概述

    yadcc C++分布式编译系统

    ./oschina_soft/yadcc.zip
    发表于 06-17 10:23 7次 阅读
    yadcc C++分布式编译系统

    Valve Proton Linux上运行Windows游戏

    ./oschina_soft/Proton.zip
    发表于 06-17 09:38 23次 阅读
    Valve Proton Linux上运行Windows游戏

    Amnesia:The Dark Descent冒险类游戏《失忆症:黑暗后裔》

    ./oschina_soft/AmnesiaTheDarkDescent.zip
    发表于 06-17 09:25 14次 阅读
    Amnesia:The Dark Descent冒险类游戏《失忆症:黑暗后裔》

    通向软件定义联网汽车的AGL路径

      对于 AGL,虚拟化是软件定义的联网汽车支持技术,因为它能够同时托管多个(和隔离的)功能的执行,....
    的头像 星星科技指导员 发表于 06-17 09:13 182次 阅读

    rtthread spiflash挂载elmfat文件系统,扇区应该对应block还是page呢?

    这种文件系统有一个扇区的概念,对应flash的扇区。 但问题是,我现在用的这款spiflash,型号GD5F2GQ5,容量2G byte 没有...
    发表于 06-16 09:35 519次 阅读

    开启DFS,文件系统使用littlefs,ROM和RAM会占用多少呢?

    开启DFS,文件系统使用littlefs,ROM和RAM会占用多少呢?哪位大佬有实际测过吗? ...
    发表于 06-13 09:09 803次 阅读

    AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)

    TI AM437x高性能处理器基于ARM Cortex-A9内核。 这些处理器通过3D图形加速得到增强,可实现丰富的图形用户界面,还配备了协处理器,用于进行确定性实时处理(包括EtherCAT,PROFIBUS,EnDat等工业通信协议)。该器件支持高级操作系统(HLOS)。基于Linux的® 可从TI免费获取。其它HLOS可从TI的设计网络和生态系统合作伙伴处获取。 这些器件支持对采用较低性能ARM内核的系统升级,并提供更新外设,包括QSPI-NOR和LPDDR2等存储器选项。 这些处理器包含功能方框图中显示的子系统,并且后跟相应的“说明”中添加了更多信息说明。 处理器子系统基于ARM Cortex-A9内核,PowerVR SGX™图形加速器子系统提供3D图形加速功能以支持显示和高级用户界面。 可编程实时单元子系统和工业通信子系统(PRU-ICSS与ARM内核分离,允许单独操作和计时,以实现更高的效率和灵活性.PRU-ICSS支持更多外设接口和EtherCAT,PROFINET,EtherNet /IP,PROFIBUS,以太网Powerlink,Sercos,EnDat等...
    发表于 09-25 11:51 638次 阅读
    AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)