FHS
FHS,Filesystem Hierarchy Standard(文件系统目录标准),多数Linux版本采用这种文件组织形式。FHS的重点在于规范每个特定的目录下应该要放置什么样的数据。
##根目录的意义及内容
根目录是整个系统最重要的一个目录,所有的目录都是由根目录衍生而来,同时根目录也与开机/还原/系统修复的动作有关。由于系统开机时需要特定的开机软件,核心文件,开机所需程序,函数库等等文件数据,若系统出现错误时,根目录也必须含有能够修复文件系统的程序。
因此FHS标准建议:根目录所在的分区槽应该越小越好,如此不但效能较佳,根目录所在的文件系统也不容易发生问题。
综上,FHS建议根目录下必须有这些文件才好,即使没有实体目录,也应该至少有连结档。
FHS建议必须要存在的目录:
/bin:
系统有很多放置执行文件的目录,但/bin比较特殊。/bin放置的是在单人维护模式下还能够被操作的指令。在/bin下的指令可以被root与一般用户所使用,主要有:cat,chmod,chown,date,mv,mkdir,cp,bash。
/boot:
这个目录下主要是放置一些开机时所需要的文件,包括Linux核心文件以及开机选单与开机所需配置文件等。**Linux kernel常用的文档名是:vmlinuz。如果使用的是grub2这个开机程序,还会存在grub目录。
/dev:
在Linux系统中,一切皆文件。任何装置与接口设备都是以文件的形式存在于这个目录当中的。
设备文件可以简单的分为块设备和字符设备两种。
- 块设备:有缓冲随机存取。如磁盘,硬盘。
- 字符设备:无缓冲完成线性存取。如鼠标,显示屏。。
我们可以看到第5列,以前我们会认为它是文件所占空间的大小,但对于这些设备文件,这两个数字代表设备号,第一个是主设备号,第二个是次设备号,在此不深究。
在这个目录下比较重要的文件有/dev/null,/dev/zero,/dev/tty,/dev/loop*,/dev/sd*。
/etc:
系统主要的配置文件几乎都放置在这个目录中,例如人员的账号密码文件,各种服务的启始档等。一般这些配置文件普通用户能读但不可修改。**FHS建议这个目录下不要放置可执行文件。
/lib:
系统的函数库非常多,**/lib下放的则是在开机时会用到的函数库,以及在/bin或者/sbin底下的指令会呼叫的函数库而已。
/media:
这个目录下放着可移动装置,软盘,光盘,DVD等一般都挂载于此。
/mnt:
如果要暂时挂载一些额外装置,一般可以挂载到这个目录下。
####/opt:
给第三方软件放置的目录。
/run:
早期的FHS规定系统开机后所产生的各项信息应该要放在/var/run/目录下,新版的FHS则规范到/run下。/run可以使用内存来仿真。
/sbin:
管理员用来设定系统的命令,其他用户只能查看。/sbin下的为开机过程中所需要的,里面包括了开机,修复,还原系统所需要的指令。
/srv:
一些网络服务启动之后,这些服务所需要取用的数据目录。常见的服务比如WWW,FTP等。
/tmp:
放置暂时文件的地方,会定时删除。
/usr:
里面放置的数据属于可分享不可变动的。usr(unix software resource),unix操作系统系统软件资源。
- /usr/bin:所有一般用户能够使用的指令。
- /usr/sbin:非系统正常运作所需要的系统指令。
- /usr/lib:与/lib功能相同。
- /usr/local:第三方软件储存。
- /usr/share:主要放置只读架构的数据文件,当然也包括共享文件,在这个目录下放置的数据几乎是不分硬件架构均可读取的数据,因为几乎都是文本文件。
/var:
系统运作后慢慢占用磁盘容量,主要针对常态性变动文件,包括快取,日志,以及某些软件运作所产生的文件,包括程序文件,或者例如数据库文件等。
- /var/cache:应用程序本身运作过程中会产生的一些暂存档。
- /var/lib:程序本身执行过程中,需要使用到的数据文件放置目录。在此目录下各自的软件应该要有自己的目录。
- /var/lock:
- /var/log:日志文件的防止目录。
- /var/mail:
- /var/run:某些程序或服务启动后,会将他们的PID放在这里。
- /var/spool:队列数据。
FHS建议可以存在的目录
/home:
其下存放着普通用户的家目录。
/lib< qual>:
用来存放与/lib不同格式的二进制函数库,例如支持64位的/lib64函数库等。
/root:
系统管理员的家目录。如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分区槽中。
其他目录:
####/lost+found:
这个目录是使用标准的EXT2/EXT3/EXT4文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时,将一些遗失的片段放置到这个目录下。不过使用的如果是xfs文件系统的话就不会存在这个目录了。
/proc:
这个目录本身就是一个虚拟文件系统,他放置的数据都是在内存当中,例如系统核心,行程信息,周边装置的状态及网络状态等等。因为这个目录下的数据都是在内存当中,所以本身并不占用任何磁盘空间。
/sys:
也是一个虚拟文件系统,主要也是记录核心与系统硬件信息较相关的信息。包括目前已加载的核心模块与核心侦测到的硬件装置信息等。
#RHEL7目前的变化
FHS仅仅定义出了/以及/usr,/var的目录应该要放置的文件或者目录数据。下面列出RHEL7在目录的编排上与先前不同的地方:
- /bin—->/usr/bin
- /sbin—–>/usr/sbin
- /lib——>/usr/lib
- /lib64——>/usr/lib64
- /var/lock—->/run/lock
- /var/run—–>/run
感谢阅读,欢迎指正。