如果大伙看到这个标题就觉得这篇文章会给出多么有深刻意义的见解,那我个人觉得您可以移步啦!首先我先澄清下:我写这篇文章目的,纯粹出于对Linux 文件系统结构的一知半解,所以在深入了解学习后出现的一篇文章。
作为一名IT 运维人员的我,在实际工作当中遇到Linux 故障的情形还挺多的,可以经常接触到linux 系统实际生产环境,由于工作的原因接触到Linux ,然后,理所当然开始学习Linux (自学),静下心来慢慢的就进入那种忘我的状态,而且会激发你的求知欲的。现在回想起来整体感觉挺好的,学习一段时间后就会进入瓶颈期,那么就要寻求更快捷、更深入的解决思路— 书籍、前辈及培训等。

一、历史背景
言归正传,在分享关于Linux 系统结构的一些总结前,我想问下正在读这篇文章的你一个问题:你是不是对Linux 的那么多的目录很费解,不明白为什么这样设计?是不是也在死记硬背Linux 中不同目录的区别呢?举例来说:根目录下有一个子目录/bin ,用于存放二进制程序,但是,/usr 子目录下面有个/usr/bin ,也用于存放二进制程序,那它们有什么区别呢?
其实,大家都知道,任何一个事情都有它背后的原因,Linux 目录结构是由历史造成的,简单描述下通过故事形式加深理解。
话说当年它们用的盘只有可怜的1.5M ,随着时间的延续,操作系统(也就是根目录)也会变得越来越大,直到第一块盘已经装不下了。于是,他们这时候只好增加第二块盘,并且指定第一块盘只能用于存放系统程序,而第二块盘只能用于存放用户自己的程序,目录名称/usr 就是这么来的。也就是说,根目录--"/" 挂载在第一块盘,用户程序---"/usr" 目录挂载在第二块盘。除此之外,两块盘的目录结构完全相同,第一块盘的目录(/bin, /sbin, /lib, /tmp... )都在/usr 目录下重新出现一次。渐渐地,第二块盘也满了,他们只好又加了第三块盘,挂载的目录点指定为/home ,同时指定/usr 目录用于存放用户的程序,/home 目录用于存放用户的数据。
随着历史的车轮不断的进步,Linux 目录结构就这么建立起来了。
二、虚拟文件系统(VFS )
Linux 操作系统是由Unix 进化而来,所以它和 UNIX 操作系统一样,是将新的文件系统通过一个称为“挂载”的操作将其挂装到某个目录上,从而能够让不同的文件系统组合成为一个整体。
Linux 操作系统的一个重要特点就是它能够支持许多不同类型的文件系统。Linux 能够支持Ext2 、FAT 、VFAT 、FAT32 、MINIX 等不同类型的文件系统,从而可以方便地和其它操作系统交换数据。Linux 支持不同的文件系统的特性引出一个新的概念--- 虚拟文件系统. (VirtualFileSystem,VFS ):
虚拟文件系统(VFS )是 Linux 内核中非常有用的一个层面,因为它在用户和文件系统之间提供了一个交换层: