linux当中的文件系统、根文件系统、虚拟文件系统、rootfs
文件系统
操作系统用来在存储介质(硬盘、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
无论什么文件系统,都会在虚拟文件系统当中转化成以下四个部分
-
超级块对象 (Superblock Object):
作用: 描述整个文件系统的总体信息。 -
索引节点对象 (Inode Object):
作用: 描述一个具体的“文件”或“目录”的元数据(权限、大小、创建时间,以及数据真正在硬盘上的物理位置)。 -
目录项对象 (Dentry Object):
作用: 描述目录结构的层级关系,主要用于路径解析。它将“文件名”和对应的 Inode 绑定起来。VFS 会把频繁访问的目录项缓存在内存中(Dentry Cache),以加快文件查找速度。 -
文件对象 (File Object):
作用: 描述一个正在被进程打开的文件。它记录了哪个进程打开了这个文件,读写到了什么位置(偏移量 offset)。
rootfs
Linux 内核在启动初期挂载的第一个极其基础的、基于内存的文件系统(通常是 ramfs 或 tmpfs 的一个实例)
有时候会和根文件系统的概念混淆,但其实rootfs更加偏向于容器的概念
initramfs (Initial RAM File System,初始内存文件系统)
极致精简版的 Linux 根文件系统,在启动阶段由uboot当作参数传送给内核,在内核当中装载到rootfs当中
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)