CentOS7目录配置
Linux系统有很多种,但他们的目录结构却是大同小异,主要原因是他们都遵循着FHS(Filesystem Hierarchy Standard)标准。FHS重点在于规范每个特定的目录下应该防止什么样子的数据。FHS针对目录树架构,定义出三层目录底下应该放置什么数据:
- /(root,根目录):与开机系统有关;
- /usr(unix software resource):与软件安装/执行有关;
- /var(variable):与系统运作过程有关。
根目录(/)的意义与内容
根目录是整个系统最重要的一个目录,所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。由于系统开机时需要特定的开机软件、核心文件、开机所需程序、函数库等文件数据,若系统出现错误,根目录也必须要包含有能够修复文件系统的程序才行。因为根目录这么重要,所以FHS方面希望根目录不要放在非常大的分区槽内,因为分区槽越大放入的数据越多,如此一来根目录所在的分区槽就可能会有较多发生错误的机会。因此FHS标准建议:根目录(/)所在分区槽应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区槽内,保持根目录越小越好。如此不但效能较佳,根目录所在的文件系统也不容易发生问题。
有鉴于上述的说明,FHS定义出根目录(/)底下应该要有底下这些此目录的存在,即使没有实体目录,FHS也希望至少有连结档(软链接和硬链接)存在。
FHS要求必须存在的目录
| 目录 | 应放置文件内容 |
|---|---|
| /bin | 系统有很多放置执行文件的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被root和一般的账号所使用,主要有:cat,chmod,chown,date,mv,mkdir,cp,bash等常用的指令。 |
| /boot | 这个目录主要放置开机时会使用到的文件,包括Linux核心文件以及开机所需配置文件等等。Linux kernel常用的目录名为vmlinuz,如果使用的是grub2这个开机管理程序,则还会存在/boot/grub2这个目录。 |
| /dev | 在Linux系统中,任何装置与接口设备都以文件的形式存在于这个目录中。你通过存取这个目录下的某个文件,就相当于存取某个装置,比较重要的文件有/dev/null,/dev/zero,/dev/tty,/dev/loop*,dev/sd*等 |
| /etc | 系统的主要配置文件几乎都在这个目录内,如用户的账号密码文件、各种服务的启始档等等。一般来说,这个目录下的各文件属性是可以让普通账号查看的,但只有root有修改权限,FHS建议不要放置可执行文件(binary)在这个目录中。比较重要的文件有:/etc/modprobe.d/,/etc/passwd,/etc/fstab,/etc/issue等等。另外,FHS还规范几个重要的目录最好放在/etc/目录下:①/etc/opt(必要):这个目录放置第三方协力软件/opt的相关配置文件。②/etc/X11/(建议):与X Window有关的各种配置文件都在这里,尤其是xorg.conf这个X Server的配置文件。③/etc/sgml/(建议):与SGML格式有关的各项配置文件。④/etc/xml/(建议):与XML格式有关的各项配置文件 |
| /lib | 系统的函式库非常多,/lib放置的是开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库。什么叫函式库?你可以将他想成外挂,一些指令必须要有这些外挂才能够顺利完成程序的执行。另外,FHS还要求必须存在下面的目录:/lib/modules/:这个目录主要放置可抽换式的核心相关模块(驱动程序) |
| /media | media是媒体的意思,顾名思义,/media底下放置的就是可移除的装置,包括软盘、光盘、DVD等装置都暂时挂载在此,常见的档名有:/media/floppy、/media/cdrom等等 |
| /mnt | 如果想要暂时挂载某些额外的装置,一般建议你可以放置在这个目录中。早期,这个目录的作用于/media相同,后来有了/media,这个目录就用来暂时挂载用了 |
| /opt | 这个是给第三方协力软件放置的目录。什么是第三方协力软件?举例来说,KDE这个桌面管理系统是一个独立的计划,不过他可以安装到Linux中,一次KDE的软件就建议放在此目录下。另外,如果你想要自行安装额外的软件(非原本的distribution提供的),那么也可以将软件安装到这里。不过,以前的Linux系统中,我们习惯把软件放在/usr/local目录下 |
| /run | 早期的FHS规定系统开机后所产生的各项信息应该放在/var/run目录下,新版的FHS则规范到/run下。由于/run可以使用内存来仿真,因此效能上会好很多。 |
| /sbin | Linux有非常多的指令是用来设定系统环境的,这些指令只有root能够用来设定系统,其他用户最多只能用来查询。放在/sbin下的为开机过程中所需要的,包括开机、修复、还原系统所需要的指令。至于某些服务器软件程序,一般放置到/usr/sbin/中。至于本机自行安装的软件所产生的系统执行文件(system binary),则放置到/usr/local/sbin/中,常见的指令包括:fdisk、fsck、ifconfig、mkfs等。 |
| /srv | srv可以视为service的缩写,是一些网络服务启动后,这些服务所需要取用的数据目录。常见的服务如www、ftp等。举例来说,www服务器需要的网页资料就放在/srv/www里面。不过,系统的服务数据如果尚未要提供给因特网任何人浏览的话,预设还是建议放置到/var/lib底下即可。 |
| /tmp | 这是让一般用户或者正在执行的程序暂时存放文件的地方。这个目录是任何用户都能够存取的,所以需要定期清理一下。当然,重要数据不能放在此目录中。因为FHS甚至建议在开机时,应该要将/tmp中的数据都删掉。 |
| /usr | 第二层FHS设定,后续介绍 |
| /var | 第二层FHS设定,主要放置变动性的数据,后续介绍 |
FHS建议可以存在的目录
| 目录 | 应放置文件内容 |
|---|---|
| /home | 系统默认的用户家目录(home directory)。在你新增一个普通账号时,默认会在该目录下生成一个用户目录。家目录有两种表示符号:①~:代表目前这个用户的家目录,②~username:代表username的家目录。 |
| /lib64 | 用来存放于/lib不同格式的二进制函式库,支持64位的函式库 |
| /root | 系统管理员的家目录。之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录 |
根目录下的一些常见目录
FHS对根目录定义的标准就只有以上那些目录,不过以下的目录平时在根目录下也是常见的。
| 目录 | 应放置文件内容 |
|---|---|
| /lost+found | 这个目录是使用标准的ext2/ext3/ext4文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时,将一些遗失的片段放置到这个目录下。如果使用xfs文件系统,是不会存在这个目录的。 |
| /proc | 这个目录本身是一个虚拟文件系统(virtual filesystem)。他放置的数据都是在内存中,例如系统核心、进程信息(process)、周边装置的状态和网络状态等。因为这个目录下的数据都是在内存当中,所以本身不占任何硬盘空间。比较重要的文件有:/proc/cupinfo、/proc/dma、/proc/interrupts、/proc/ioports、/proc/net/*等等 |
| /sys | 这个目录和/proc类似、也是一个虚拟的文件系统,主要记录核心与系统硬件较相关的信息,包括目前已加载的核心模块与核心侦测到的硬件装置信息等。这个目录同样不占用硬盘空间。 |
/usr的意义与内容
依据FHS的定义,/usr里面放置的数据是可分享和不可变动的(shareable,static)。usr是Unix Software Resource的缩写,是Unix操作系统软件资源放置的目录,不是用户的数据。FHS建议所有软件开发者,应该将他们的数据合理的放置到这个目录下的次目录,不要自行建立软件独立的目录。所有系统默认的软件(distribution发布这提供的软件)都会放置到/usr下,因此这个目录有点像Windows系统的C:\Windows\部分目录+C:\Program files的综合体,系统刚安装完毕,这个目录会占用最多的硬盘容量。
FHS要求必须存在的目录
| 目录 | 应放置文件内容 |
|---|---|
| /usr/bin/ | 所有一般用户能够使用的指令都在这个目录下。目前CentOS7已经将所有的用户指令都放置于此,并且使用连结档的方式将/bin连接至此。也就是说,/usr/bin与/bin是一模一样的。另外,FHS要求在此目录下不应该有子目录。 |
| /usr/lib/ | 基本上与/lib的功能相同,所以/lib是链接到此目录的。 |
| /usr/local/ | 系统管理员在本机自行安装自己下载的软件(非distribution默认提供),建议安装到此目录,这样会比较利于管理。举例来说,你的distribution提供的软件较旧,你想安装较新的软件但又不想移除旧版,此时你可以将新版软件安装到/usr/local/目录下,与原先的旧版软件区分开。进入/usr/local查看,可以发现该目录下有bin、etc、include、lib等目录。 |
| /usr/sbin/ | 非系统正常运行所需的系统指令。最常见的就是默写网络服务器软件的服务指令(daemon)。不过基本功能和/sbin差不多,所以目前/sbin就是链接到此目录的。 |
| /usr/share/ | 主要放置只读架构的数据文件,包括共享文件。在这个目录下放置的数据几乎是部分硬件架构均可读取的数据,因为几乎都是文本文件。此目录下常见的此目录有以下这些:①/usr/share/man:联机帮助文件;②/usr/share/doc:软件杂项的文件说明;③/usr/share/zoneinfo:与时区有关的时区文件。 |
FHS建议可以存在的目录
| 目录 | 应放置文件内容 |
|---|---|
| /usr/games/ | 放置与游戏比较相关的数据 |
| /usr/include/ | c/c++等程序语言的档头(header)与包含档(include)放置处,当我们以tarball方式(*.tar.gz的方式安装软件)安装某些数据时,会使用到里面的许多包含档。 |
| /usr/libexec/ | 某些不被一般使用者惯用的执行档或脚本(script)等等,都会放在此目录中。例如大部分X窗口底下的操作指令,很多都是放在此目录下。 |
| /usr/lib64/ | 与/lib64功能相同,/lib64就是链接到此目录。 |
| /usr/src/ | 一般原始码建议放置到这里,src有source的意思。至于核心原始码则建议放置到/usr/src/linux/目录下 |
/var的意义与内容
如果/usr是系统安装时会占用较大硬盘容量的目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录。因为/var目录主要针对常态性变动文件,包括快取(cache)、登录档(log file)以及某些软件运行所产生的文件,包括程序文件(lock file,run file),或者例如MySQL数据库的文件等等。
FHS要求必须存在的目录
| 目录 | 应放置文件内容 |
|---|---|
| /var/cache/ | 应用程序本身运作过程中产生的一些赞存档会保存在这里。 |
| /var/lib/ | 程序本身执行过程中,需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录。举例来说,MySQL的数据库放置到/var/lib/mysql,而rpm的数据库则放到/var/lib/rpm下。 |
| /var/lock/ | 某些装置或者文件资源一次只能被一个应用程序使用,如果同时有两个程序使用该装置时,就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软件使用。举例来说,刻录机正在刻录一块光盘,如果两个人同时刻录,那光盘写入的是谁的资料?所以当第一个人在刻录时,该刻录机会被上锁,第二个人得等到该装置被解除锁定(前一个人使用结束)才能继续使用。目前此目录已挪到/run/lock中。 |
| /var/log/ | 重要到不行!这是登录文件放置的目录,里面比较重要的文件有/var/log/messages、/var/log/wtmp(记录登录者的信息)等等。 |
| /var/mail/ | 放置个人电子邮件信箱的目录,不过这个目录被放置到/var/spool/mail/目录中。通常这两个目录互为链接文件。 |
| /var/run/ | 某些程序或者服务启动后,会将他们的PID放置在这个目录下。与/run相同,这个目录链接到/run目录。 |
| /var/spool/ | 这个目录通常放置一些队列数据,所谓的队列就是排队等候其他程序使用的数据。这些数据被使用后通常都会被删除。举例来说,系统说到新信会放到/var/spool/mail/中,但使用者收下该信后该信原则上会被删除。信件如果暂时寄不出去会被放到/var/spool/mqueue/中,等到被送出后就删除。如果是计划任务(crontab),就会被放置到/var/spool/cron/中。 |
CentOS7的变化
CentOS7在目录的编排上与过去的版本不同,较大的差异就是将许多原本应该要放在根目录(/)的目录,将他内部数据都挪到/usr里面去了,然后进行连结设定。主要包括底下这些:
/bin→/usr/bin/sbin→/usr/sbin/lib→/usr/lib/lib64→/usr/lib64/var/lock→/run/lock/var/run→/run
本文详细介绍了CentOS7中遵循的FHS(Filesystem Hierarchy Standard)标准,强调根目录(/)的重要性及保持其小巧的必要性。文章探讨了根目录下必须存在的目录以及常见的目录,并阐述了/usr和/var目录的功能和内容,以及CentOS7相对于旧版本在目录编排上的变化,如将某些目录内容挪到/usr并创建软链接。
1万+

被折叠的 条评论
为什么被折叠?



