linux目录管理遵循FHS标准,主要目标是希望让使用者可以了解已安装软件通常放置于哪个目录上,所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都遵循FHS的标准。也就是说FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。
事实上,FHS是根据过去的经验一直在持续改版的,FHS依据文件系统的使用的频繁与否是否允许使用者随意改动,而将目录定义为四种交互作用的形态,用其表格来说:
上表中的目录就是一些代表性的目录,四个类型解释如下:
- 可分享的:可以分享给其它系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载的目录;
- 不可分享的:自己机器上面运作的装置档案或者是与程序运行有关的socket档案等,由于仅与自身机器有关,所以不能分享给其他主机;
- 不变的:有些数据是不会经常变动的,跟随着distribution而不变动。例如函式库、文件说明文件、系统管理员所管理的主机服务配制文件等等;
- 可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。
事实上,FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是以下三个目录:
- /(根目录):与开机系统有关;
- /usr(unix software resource):与软件安装、执行有关;
- /var(variable):与系统运作过程有关。
以下是三个目录的详细解释:
- 根目录的意义与内容:
根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机、还原、系统修复等动作有关。由于系统开机时需要特定的软件、核心档案、开机所需程序、函数库等档案数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行。因为根目录是这么重要,所以FHS的要求方面,他希望根目录不要放在非常大的分割槽内,因为越大的分割槽放入的数据就会越多,如此一来,出现问题的机会就越大,因此FHS标准建议:根目录所在的分割槽越小越好,且应用程序所装的软件最好不要与根目录放在同一分割槽内,保持目录越小越好,有鉴于上述说明,FHS标准定义出根目录底下应该存在以下目录,如下表:
除了这些目录内容之外,另外需要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载,其他分割槽则是在开机完成之后才会持续进行挂载,因此根目录下与开机过程有关的目录不能与根目录放到不同的分割槽中,哪些目录不能放到不同的分割槽中去,有以下这些:
1. /etc:配制文件
2. /bin:重要执行文件
3. / dev:所需要的装置档案
4. /lib:执行档所需要的函数库与检核心所需要的模块
5. /sbin:重要的系统执行文件
以上五个目录千万不可与根目录分开在不同的分割槽。 - /usr的意义与内容
依据FHS定义,/usr里放置的数据属于可分享与不可变动的,如果你知道如何通过网络进行分割槽的挂载,那么/usr确实可以分享给局域网内的其它主机来使用。usr是Unix Software Resource的缩写,也就是:Unix操作系统软件资源所放置的目录,而不是用户的数据。FHS建议软件开发者应该将他们的数据合理的分别放置在这个目录下的次目录,而不是要自行建立该软件独立的目录。因为是所有系统默认的软件都会放置在/usr目录里,因此这个目录有点类似Windows系统的C:Program Files和C:Windows,系统刚装完时,这个目录会占用最多的硬盘容量。一般来说,/usr的次目录建议有以下这些: - /var的意义与内容
如果/usr是安装时会占用较大硬盘容量的目录,那么/var就是在系统运行后才会逐渐占用硬盘容量的目录。因为/var目录主要针对常态性变动的档案,包括缓存(cache)、登录档(log file)及某些软件运行所产生的档案,包括程序档案(lock file,run file),或者例如MySql数据库档案等待。/var包含以下目录: