https://mp.weixin.qq.com/s/UuSRX2r-HagSfmNWpGkbuw
在 Linux 中,最直观、最可见的部分就是 文件系统(file system)
。下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想。这些思想中有一些来源于 MULTICS,现在已经被 Windows 等其他操作系统使用。Linux 的设计理念就是 小的就是好的(Small is Beautiful)
。虽然 Linux 只是使用了最简单的机制和少量的系统调用,但是 Linux 却提供了强大而优雅的文件系统。
Linux 文件系统基本概念
Linux 在最初的设计是 MINIX1 文件系统,它只支持 14 字节的文件名,它的最大文件只支持到 64 MB。在 MINIX 1 之后的文件系统是 ext 文件系统。ext 系统相较于 MINIX 1 来说,在支持字节大小和文件大小上均有很大提升,但是 ext 的速度仍没有 MINIX 1 快,于是,ext 2 被开发出来,它能够支持长文件名和大文件,而且具有比 MINIX 1 更好的性能。这使他成为 Linux 的主要文件系统。只不过 Linux 会使用 VFS
曾支持多种文件系统。在 Linux 链接时,用户可以动态的将不同的文件系统挂载倒 VFS 上。
Linux 中的文件是一个任意长度的字节序列,Linux 中的文件可以包含任意信息,比如 ASCII 码、二进制文件和其他类型的文件是不加区分的。
为了方便起见,文件可以被组织在一个目录中,目录存储成文件的形式在很大程度上可以作为文件处理。目录可以有子目录,这样形成有层次的文件系统,Linux 系统下面的根目录是 /
,它通常包含了多个子目录。字符 /
还用于对目录名进行区分,例如 /usr/cxuan 表示的就是根目录下面的 usr 目录,其中有一个叫做 cxuan 的子目录。
下面我们介绍一下 Linux 系统根目录下面的目录名
-
/bin
,它是重要的二进制应用程序,包含二进制文件,系统的所有用户使用的命令都在这里 -
/boot
,启动包含引导加载程序的相关文件 -
/dev
,包含设备文件,终端文件,USB 或者连接到系统的任何设备 -
/etc
,配置文件,启动脚本等,包含所有程序所需要的配置文件,也包含了启动/停止单个应用程序的启动和关闭 shell 脚本 -
/home
,本地主要路径,所有用户用 home 目录存储个人信息 -
/lib
,系统库文件,包含支持位于 /bin 和 /sbin 下的二进制库文件 -
/lost+found
,在根目录下提供一个遗失+查找系统,必须在 root 用户下才能查看当前目录下的内容 -
/media
,挂载可移动介质 -
/mnt
,挂载文件系统 -
/opt
,提供一个可选的应用程序安装目录 -
/proc
,特殊的动态目录,用于维护系统信息和状态,包括当前运行中进程信息 -
/root
,root 用户的主要目录文件夹 -
/sbin
,重要的二进制系统文件 -
/tmp
, 系统和用户创建的临时文件,系统重启时,这