文件系统层次标准(Filesystem Hierarchy Standard,FHS)(for Linux)

设计FHS(Filesystem Hierarchy Standard)的目的主要是为了给Unix-like系统的管理员提供一个管理系统以及目录结构的一个参考。
FHS实际上仅是规范在根目录(/)下面各个主要目录应该放什么样的文件。FHS定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。

基本简介

因为Linux的开发人员实在太多了,如果每个人都使用自己的目录配置方法,那么将可能会带来很多管理问题。你能想象,你进入一个企业之后,所接触到的Linux目录配置方法竟然跟你以前学的完全不同吗?很难想象。所以,后来就有所谓的文件系统层次标准(Filesystem Hierarchy Standard,FHS)出台。

第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。

定义

由于FHS仅是定义出最上层(/)及子层(/usr, /var)的目录内容应该要放置的文件数据,因此,在其他子目录层级内,就可以随开发人员自行配置了。举例来说,FC4的网络设置数据放在/etc/sysconfig/network-script/目录下,但SuSE Server 9则是将网络放在/etc/sysconfig/network/目录下,目录名称是不同的。

另外,在Linux中,所有的文件与目录都由根目录/ 开始。那是所有目录与文件的源头。然后再一个一个分支下来,有点像树状。因此,我们也称这种目录配置方式为:“目录树(directory tree)”。
FHS标准使得众多的Linux发布包有了可以遵循的标准,使得软件和用户可以预测已经安装了的文件和目录的位置。它定义了如下的内容

定义了文件系统中每个区域的用途
定义了所需要的最小构成的文件和目录
给出了例外处理和矛盾的特殊例子

FHS根据文件的可共享、不可共享、静态和动态等特点,将目录树架构分为/、/usr、/var三部分。

/ 根目录是整个系统最重要的一个目录,因为在Linux系统中所有的目录都必须挂载在根目录下,也即所有的目录都是由根目录衍生出来。系统开机是所需要的开机软件、内核文件、函数库等都必须在根目录下。因此FHS也建议根目录不要安装在非常大、数据存取非常活跃的分区上,如此一来就能尽可能地降低系统不必要的错误。建议:根目录越小越好,且应用程序安装目录不要和根目录放置于同一分区。根目录下一般建议由以下耳机子目录:

/bin 供所有用户使用的基本命令程序文件
/sbin 系统管理员使用的工具程序
/boot 引导加载器(bootloader)必须用到的静态文件:kernel、initramfs(initrd)、grub等
/dev 存储特殊文件或设备文件: 字符设备(线性设备)、块设备(随机设备)
/etc 系统程序的配置文件(只能为静态的,不能是二进制)
/lib、/lib64 为系统启动或根文件系统上的应用程序(/bin, /sbin)提供共享库(libc.so.* ld*),以及为内核提供内核模块(modules)
/media 便携式设备的挂载点,cdrom、floopy等
/mnt 其他文件系统的临时挂载点
/opt 第三方程序的安装位置,可选路径;
/srv 当前主机为服务提供的数据
/tmp 为那些会产生临时文件的程序提供的用于存储临时文件的目录
/usr user hierarchy 全局共享只读数据路径
/var var hierarchy存储常发生变化的文件
/proc 内核级进程存储其相关信息,多为内核参数,例如net.ipv4.ipforward虚拟为net/ipv4/ipforward,存储于/proc/sys
/sys sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;为管理内核提供了一种统一模型的接口
/usr 根据FHS建议软件安装后将他们的数据合理地分别放置到这个目录下,而不要自行新建该软件自己的独立目录。/usr放置的数据属于可分享的且不可变动的,/usr可分享给局域网内的其他主机来使用。

/usr/bin
/usr/sbin
/usr/lib
/usr/lib64
/usr/include C程序头文件
/usr/share 命令手册页和自带文档等
/usr/local 另一个层级结构,让系统管理员安装本地应用程序,通常用于安装第三方软件
/usr/src 程序的源码
/var 主要存储常变化的文件,包括缓存(cache)、登录文件(logfile)以及某些软件运行所产生的文件,包括程序文件(lock file, run file),或者例如MySQL数据库的文件等。
/var/cache 应用程序产生的缓存文件
/var/lib 程序执行过程中,需要用到的数据文件放置的目录。此目录下各自的软件应该要有各自的目录。
/var/lib 某些设备或者文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该设备时,就可能产生一些错误,因此就得要将该设备或文件上锁(lock),以确保该文件或设备只给一个程序使用。
/var/log 登录文件 /var/log/messages, /var/log/wtmp
/var/mail 个人电子邮箱目录,通常与/var/spool/mail/目录互为链接
/var/run 与运行中的进程相关的数据,PID等
/var/spool 存放等待其他程序使用的数据
/var/tmp 下次启动前会被删除的临时数据

猜你喜欢

转载自blog.csdn.net/yangyuCISCO/article/details/84240570