LV105-文件系统简介
本文主要是 Linux——文件系统相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正 😃。
文件系统用于组织和管理计算机存储设备上的大量文件,并提供用户交互接口。
一、文件系统类型
linux 是一种兼容性很高的系统,支持很多的文件系统格式,大体可有以下几类:
| 磁盘文件系统 | 指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB 存储器、磁盘阵列等。常见文件系统格式有:autofs、coda、Ext(Extended File sytem,扩展文件系统)、Ext3、Ext4、VFAT、ISO9660(通常是 CD-ROM)、UFS(Unix File System,Unix 文件系统)、FAT、FAT16、FAT32、NTFS 等 |
| 网络文件系统 | 是可以远程访问的文件系统,这种文件系统在服务器端仍是本地的磁盘文件系统,客户机通过网络远程访问数据。常见文件系统格式有:NFS、Samba 等 |
| 专有/虚拟文件系统 | 不驻留在磁盘上的文件系统。常见格式有:TMPFS(临时文件系统)、PROCFS(Process File System,进程文件系统)和 LOOPBACKFS(Loopback File System,回送文件系统) |
目前 Ext4 是 Linux 系统广泛使用的一种文件格式。在 Ext3 基础上,对有效性保护、数据完整性、数据访问速度、向下兼容性等方面做了改进。最大特点是日志文件系统:可将整个磁盘的写入动作完整地记录在磁盘的某个区域上,以便在必要时回溯追踪。
二、分区与目录
在微软 Windows 操作系统,我们会将硬盘上进行分区,并用 A: 、 B: 、 C: 、 D: 等符号标识(也就是盘符)。在存取文件时一定要清楚存放在哪个磁盘的哪个目录下。

Linux 的文件组织模式犹如一颗 倒置的树,所有存储设备作为这颗树的一个子目录。存取文件时只需确定目录就可以了,无需考虑物理存储位置。在 linux 中可以说一切皆文件,并没有盘符这样的概念。
在 Windows 下,目录结构属于分区;在 Linux 下,分区属于目录结构。在 Linux 中,将所有硬件都视为文件来处理,包括硬盘分区、 CD-ROM 、软驱以及其他 USB 移动设备等。为了能够按照统一的方式和方法访问文件资源, Linux 中提供了对每种硬件设备相应的设备文件。一旦 Linux 系统可以访问到硬件,就将其上的文件系统挂载到目录树中的一个子目录中。例如,当我们插入一个 U 盘时, Linux 自动识别后,将其挂载到 /media/disk 目录下。而不像 Windows 系统将 U 盘作为新驱动器,表示为 F: 盘或者其他盘符。
三、基本目录
Linux 是完全开源的软件,各 Linux 发行机构都可以按照自己的需求对文件系统进行裁剪,所以如此众多的 Linux 发行版本的目录结构也不尽相同。为了规范文件目录命名和存放标准,相关组织颁发了文件层次结构标准( FHS,File Hierarchy Standard ), 2004 年发行版本 FHS 2.3 。 Ubuntu Linux 系统同样也遵循这个标准。
| 目录名 | 描述 | ||
| / | Linux 文件系统根目录 | ||
| /bin | 存放系统中最常用的可执行文件(二进制) | ||
| /boot | 存放 Linux 内核和系统启动文件,包括 Grub、lilo 启动器程序 | ||
| /cdrom | 光盘目录,如果插入光盘会出现光盘内容 | ||
| /dev | 存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty 等 | ||
| /etc | 存放系统的所有配置文件,例如 passwd 存放用户账户信息,hostname 存放主机名等 | ||
| /home | 用户主目录的默认位置 | ||
| /initrd | 存放启动时挂载 initrd.img 映像文件的目录,以及载入所需设备模块的目录。 | ||
| /lib | 存放共享的库文件,包含许多被/bin 和/sbin 中程序使用的库文件 | ||
| /lost+found | 存放由 fsck 放置的零散文件 | ||
| /media | Ubuntu 系统自动挂载 CD-ROM、软驱、USB 存储器后,存放临时读入的文件 | ||
| /mnt | 该目录通常用于作为被挂载的文件系统的挂载点 | ||
| /opt | 作为可选文件和程序的存放目录,主要被第三方开发者用来简易地安装和卸装他们的软件包 | ||
| /proc | 存放所有标志为文件的进程,它们是通过进程号或其他的系统动态信息进行标识,例如 cpuinfo 文件存放 CPU 当前工作状态的数据 | ||
| /root | 根用户(超级用户)的主目录 | ||
| /run | 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果系统上有 /var/run 目录,应该让它指向 run。 | ||
| /sbin | 存放更多的可执行文件(二进制),包括系统管理、目录查询等关键命令文件 | ||
| /snap | snap 应用框架的程序文件 | ||
| /srv | 服务目录,存放本地服务的相关文件 | ||
| /sys | 系统目录,存放系统硬件信息的相关文件 | ||
| /tmp | 存放用户和程序的临时文件,所有用户对该目录都有读写权限 | ||
| /usr | 用于存放与系统用户直接有关的文件和目录,例如应用程序及支持它们的库文件。 | ||
| /usr/X11R6 | X Window 系统。 | ||
| /usr/bin | 用户和管理员的标准命令 | ||
| /usr/include | c/C++等各种开发语言环境的标准 include 文件 | ||
| /usr/lib | 应用程序及程序包的连接库 | ||
| /usr/local | 系统管理员安装的应用程序目录 | ||
| /usr/local/share | 系统管理员安装的共享文件 | ||
| /usr/sbin | 用户和管理员的标准命令 | ||
| /usr/share | 存放使用手册等共享文件的目录 | ||
| /usr/share/dict | 存放词表的目录 | ||
| /usr/share/man | 系统使用手册 | ||
| /usr/share/misc | 一般数据 | ||
| /usr/share/sgml | SGML 数据 | ||
| /usr/share/xml | XML 数据 | ||
| /var | 通常用于存放长度可变的文件,例如日志文件和打印机文件。 | ||
| /var/cache | 应用程序缓存目录 | ||
| /var/crash | 系统错误信息 | ||
| /var/games | 游戏数据 | ||
| /var/lib | 各种状态数据 | ||
| /var/lock | 文件锁定纪录 | ||
| /var/log | 日志记录 | ||
| /var/mail | 电子邮件 | ||
| /var/opt | /opt 目录的变量数据 | ||
| /var/run | 进程的标示数据 | ||
| /var/spool | 存放电子邮件,打印任务等的队列目录。 | ||
| /var/tmp | 临时文件目录 | ||