理论

每块硬盘都分为若干个分区,每个分区都有自己的文件系统。您可能已经注意到,Windows® 为这些文件系统各自指定了一个字母(当然只是为了便于识别)。不过 GNU/Linux 使用唯一的树形结构来管理文件,而每个文件系统都挂载于树形结构的某个位置。

正如 Windows® 需要有 C: 驱动器一样,GNU/Linux 必须能够将根文件系统挂载于文件树的根(/)上。当根挂载完成之后,您就可以将其它文件系统挂载于树形结构各种挂载点上。根结构下的任何目录都可以作为挂载点,而您也可以将同一文件系统同时挂载于不同的挂载点上。

这样的方式可以显著增强配置的灵活性。例如,如果我们想要配置一台 Web 服务器,那么很可能会将包含 Web 服务器数据的目录分配在独立的分区中。通常包含数据的目录是 /var/www,即该分区的挂载点。与此同时,如果您计划下载大容量软件的话,还应该考虑创建较大的 /home 分区。您可以在图 8.1 “尚未挂载文件系统”图 8.2 “已挂载文件系统”中看到系统在挂载文件系统前后的区别。

图 8.1. 尚未挂载文件系统

尚未挂载文件系统

图 8.2. 已挂载文件系统

已挂载文件系统

您应该可以想象得到这么做的好处:树形结构总是相同的,不管它是在单一的文件系统中还是涵盖多个文件系统。这种灵活性允许您在磁盘空间紧张时将树形结构的关键部分移至另外的分区,这也正是我们接下来要进行的操作。

关于挂载点,您需要知道两件事:

  1. 作为挂载点的目录必须存在。

  2. 此目录最好为空:如果选作挂载点的目录已经包含了文件和子目录,则新挂载文件系统之后这些文件和子目录将被隐藏起来。文件不会被删除,但是除非您释放挂载点,否则您无法访问这些文件。

[Tip]提示

实际上,您还是有办法访问被新挂载的文件系统所隐藏起来的数据的。您只需用 --bind 选项挂载隐藏的目录。例如,如果您刚刚在 /hidden/directory/ 中挂载了一个文件系统,并且想在 /new/directory 中访问该目录的原始内容,您就可以运行:

mount --bind /hidden/directory/ /new/directory