06. Linux 的目录结构

Par @Martin dans le
Tags :

Linux 的目录结构之前也提了一下, 但总感觉理解的不是很清晰, 所以单独的拿出来再做一篇笔记.

在向下看之前, 先忘记 Linux 的分区和挂载点(文件系统), 就单独的来理解目录结构… Linux 的文件系统是采用级层式树状目录结构, 在此结构中的最上层是根目录”/”, 然后在根目录下再创建出其他的目录. 类似下图:

当 Linux 安装好后, 它就会自动分配了一个根目录, 根目录下又包括: root目录、home目录、bin目录、sbin目录、mnt目录、etc目录、var目录、boot目录、usr目录 等一些比较重要的目录.

root目录: 存放 root 用户的相关文件. home目录: 用户目录, 存放普通用户的相关文件. bin目录: 二进制可执行目录, 存放常用命令的二进制可执行文件, 里面的程序可以直接通过命令行调用. sbin目录: 系统管理员命令存放目录, 存放的是一些具有一定权限才能使用的命令. mnt目录: 默认挂载光驱和软驱的目录. etc目录: 存放配置相关的文件, 比如环境变量的配置、MySql数据的配置等. var目录: 可变数据目录, 例如系统日志. boot目录: 存放系统引导相关的文件. usr目录: 用户安装的软件程序的默认目录, 就像是 Windows 下的 Program Files 目录.

OK, 如果抛开 Linux 分区(文件系统)的概念来单独看这个目录结构还是非常好理解的. 但是关键就是这个目录树结构和文件系统到底是怎么样的关系呢?

假设我们现在有一块硬盘, 没有经过分区直接安装的 Linux 系统. 那么它的文件系统就是像上面的目录结构一样, 往其中的任何目录里写数据都是占用的根目录的空间.

现在问题来了, 现在已经知道 boot 下存放的是系统引导相关的文件. 如果所有目录都是占用根目录的空间, 那么当向根目录里写入了大量数据的时候(或者向其它目录里写入数据, 这都一样, 因为大家都是占用根目录的空间), 可能就会导致 boot 里的文件被影响到..然后系统就启动不了了…

那么怎么办呢? 这种问题当然就需要分区来解决啦, 就像 Windows 下将硬盘分为 c、d、e、f 等区一样. 假设为了解决上面 boot 的问题, 我们把硬盘分为了两个区, 我希望一个区用来单独放 boot 里的文件, 另一个分区用来放其他目录里的文件, 那该怎么做呢, Linux 下可没有盘符这个概念. 好吧, Linux 里虽然没有盘符的概念, 但是它引进了『挂载』这个东西 …, 什么是『挂载』? 所谓的『挂载』就是利用一个目录当成一个分区的进入点, 该目录下的所有数据都被放置在这个分区下, 不再共用根目录的硬盘空间, 同样, 进入该目录就是读取该分区里的数据, 这个动作我们称它为『挂载』, 而那个进入点目录就被称为『挂载点』. 其实在最开始没有分区的时候, 就是将根目录挂载在整个硬盘上… 而分区后的硬盘上的数据分布应该如下:

但是注意, 在目录树结构上看, boot 目录依然属于 / 根目录, 只不过它单独使用一块硬盘空间, 它们之间的关系类似下图: m: