文件系统

操作系统用来在存储介质(硬盘、U盘、内存、flash、emmc、SD卡等)上组织、存储和检索数据的一种机制和数据结构。

文件系统 所属分类 原生/主力平台 核心特点与技术优势 典型应用场景
ext4 磁盘文件系统 Linux 极度稳定且成熟。支持日志记录(防断电数据丢失),最高支持 1EB 卷和 16TB 单文件。 绝大多数 Linux 发行版(如 Ubuntu, Debian)的默认硬盘根分区。
xfs 磁盘文件系统 Linux / IRIX 擅长高并发与大文件。极为优秀的并行 I/O 性能,格式化速度极快。 企业级服务器、大型数据库、海量视频存储(CentOS/RHEL 的默认文件系统)。
btrfs 磁盘文件系统 Linux 现代高级特性。支持写时复制 (CoW)、系统级秒级快照、数据校验和内置的多设备卷管理。 NAS 存储设备(如群晖)、需要频繁备份回滚的高级 Linux 桌面玩家。
NTFS 磁盘文件系统 Windows Windows 核心基石。支持复杂的 ACL 权限控制、透明压缩和文件加密,突破了大文件限制。 Windows 系统的 C 盘、大容量移动硬盘。
FAT32 磁盘文件系统 跨平台 绝对的兼容之王。几乎所有设备(电脑、相机、车载音响)都能读写,但致命缺点是单文件不能超过 4GB。 小容量 U 盘、SD 存储卡、需要在 Win/Mac/Linux 间频繁插拔交换数据的设备。
NFS 网络文件系统 Linux / Unix Linux 界的局域网标准。通过网络让不同机器共享目录,在客户端看来就像本地硬盘一样。 Linux 服务器集群间的数据共享、Kubernetes 挂载持久化存储。
SMB/CIFS 网络文件系统 Windows 跨操作系统的共享桥梁。原本是 Windows 专属,Linux 通过 Samba 软件完美兼容。 办公室内的局域网文件共享(如 Windows、Mac 和 Linux 互传文件)、家用 NAS 的默认访问协议。
tmpfs 伪文件系统 Linux 纯内存级读写速度。数据直接保存在物理内存(或 Swap)中,断电或重启后数据立刻消失。 系统 /tmp 临时目录、需要极高并发且不需要持久化保存的程序缓存区。
sysfs 伪文件系统 Linux 硬件设备的“控制面板”。挂载在 /sys,以文件形式向用户空间导出内核的硬件设备树。 查询硬件信息(如网卡状态、磁盘拓扑),或动态修改硬件参数(如控制屏幕亮度)。
proc 伪文件系统 Linux 系统进程的“X光片”。挂载在 /proc,包含所有正在运行的进程数据和内核状态。 你常用的 top、ps、free 等系统监控命令,底层数据全部都是从这里实时读取的。

根文件系统

系统运行时挂载在根目录 / 上的文件系统

目录名 英文全称 含义 主要作用(一句话总结) 存放内容示例 / 特性说明
/bin Binaries 基础用户命令 存放所有用户都可以使用的基础可执行命令 例如:ls, cp, cat, bash
/sbin System Binaries 系统管理命令 存放主要由root管理员使用的系统级维护和管理命令 例如:reboot, fdisk, iptables
/boot Bootloader 系统启动核心文件 存放Linux内核、initramfs以及GRUB引导相关文件 vmlinuz内核镜像、initramfs、grub配置
/dev Devices 设备节点文件 Linux一切皆文件,提供硬件设备访问接口 /dev/sda硬盘、/dev/null黑洞设备
/etc Etcetera 系统级配置文件 存放系统与软件全局静态文本配置 /etc/passwd用户列表、/etc/fstab挂载配置
/lib Library 32位系统基础共享库 存放/bin、/sbin命令依赖的动态库与内核模块 类似Windows dll,程序运行依赖的共享库
/lib64 Library 64位系统基础共享库 存放64位程序使用的动态链接库 64bit版本共享库,ARM64平台主要使用该目录
/home Home 普通用户主目录 普通用户私有数据与配置存放位置 每个普通用户拥有同名子目录 /home/username
/root Root 超级管理员主目录 root用户专属家目录,权限隔离不放在/home root的配置、脚本、私有文件
/mnt Mount 临时挂载点 管理员手动临时挂载外部文件系统的空目录 手动挂载硬盘、NFS网络磁盘
/media Media 可移动媒介挂载点 桌面系统自动挂载U盘、光驱等移动设备 U盘、光盘自动挂载到此目录
/opt Optional 第三方可选软件 存放包管理器之外的第三方大型软件 商业软件、自定义编译大型程序
/proc Processes 虚拟进程信息 内存虚拟文件系统,暴露进程与内核运行信息 不占磁盘,/proc/pid、/proc/cpuinfo
/sys System 虚拟内核设备树 内存虚拟文件系统,用于硬件设备查看与配置 内核设备模型、总线、硬件寄存器接口
/tmp Temporary 临时文件 所有用户程序存放临时文件 系统重启一般会清空,可存放短期临时数据
/usr Unix System Resources 用户系统资源 存放用户应用程序、库、文档,次级根目录 /usr/bin、/usr/lib、/usr/share,系统大部分软件在此
/var Variable 动态变化的数据 存放运行时不断变化的数据文件 /var/log日志、缓存、数据库、spool假脱机文件

虚拟文件系统(Virtual File System,VFS)

VFS 是 Linux 内核中的一个软件层,它向上对用户态程序提供统一的文件操作接口,向下兼容并管理各种不同类型的真实文件系统。
屏蔽了底层具体文件系统(ext4, FAT32, NFS 等)的差异。应用程序只需要和 VFS 交流,VFS 会负责把标准命令“翻译”成底层特定文件系统能听懂的指令。
相当于封装了一层API
无论什么文件系统,都会在虚拟文件系统当中转化成以下四个部分

  1. 超级块对象 (Superblock Object):
    作用: 描述整个文件系统的总体信息。

  2. 索引节点对象 (Inode Object):
    作用: 描述一个具体的“文件”或“目录”的元数据(权限、大小、创建时间,以及数据真正在硬盘上的物理位置)。

  3. 目录项对象 (Dentry Object):
    作用: 描述目录结构的层级关系,主要用于路径解析。它将“文件名”和对应的 Inode 绑定起来。VFS 会把频繁访问的目录项缓存在内存中(Dentry Cache),以加快文件查找速度。

  4. 文件对象 (File Object):
    作用: 描述一个正在被进程打开的文件。它记录了哪个进程打开了这个文件,读写到了什么位置(偏移量 offset)。

rootfs

Linux 内核在启动初期挂载的第一个极其基础的、基于内存的文件系统(通常是 ramfs 或 tmpfs 的一个实例)

有时候会和根文件系统的概念混淆,但其实rootfs更加偏向于容器的概念

initramfs (Initial RAM File System,初始内存文件系统)

极致精简版的 Linux 根文件系统,在启动阶段由uboot当作参数传送给内核,在内核当中装载到rootfs当中

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐