一、什么是根文件系统
在传统的Windows机器的目录结构中,可能会包括C:盘或者D:盘,而他们一般就称之为特定逻辑磁盘的根目录。从文件系统的层面来说,每一个分区都包含了一个根目录区,也即系统中存在多个根目录。但是在Linux系统中,目录结构与Windows上有较大的不同。系统中只有一个根目录,路径是"/",而其它的分区只是挂载在根目录中的一个文件夹,如"/proc"和"system"等等,这里的"/"就是Linux中的根目录。
对应根目录也就存在一个根目录文件系统的概念,我们可以将某一个分区挂载为根目录文件系统。简单的来说,根目录文件系统就是一种目录结构,包括了Linux启动的时候所必须的一些目录结构和重要文件。根文件系统有两种,一种是虚拟根文件系统,另外一种是真实的根文件系统。在Kernel启动的初始阶段,首先去创建虚拟的根文件系统(rootfs),接下来再去调用do_mount来加载真正的文件系统,并将根文件系统切换到真正的文件系统。
二、根文件系统基本目录结构
2-1、根文件系统基本目录结构详解
搜狗截图20190503214525.png-
/boot:存放系统启动相关的文件,如内核、initrd,以及grub(bootloader)。
-
/dev:Device(设备)的缩写,存放Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
-
/etc:存放系统管理所需要的配置文件和子目录。
-
/home:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
-
/lost+found:该目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件,用于寻找丢失的数据。
-
/media:u盘、移动硬盘等移动设备挂载点目录。
-
/mnt:光驱等临时文件系统挂载点目录。
-
/opt:可选目录,第三方程序的安装目录,例如Oracle数据库等等,现在通常不会将第三方程序安装在此。
-
/proc:虚拟文件系统。存放内核映射文件,我们可以通过直接访问这个目录来获取系统信息。在这里修改内核参数,可以进行系统调优和系统状态监控。
-
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
-
/srv:service缩写,该目录存放一些服务启动之后需要提取的数据。
-
/sys:虚拟文件系统,跟硬件设备相关的属性映射文件,在这可以查看磁盘IO情况等等。
-
/tmp:临时文件,任何用户都可以在此创建文件,但是只能删除自己创建的文件。有脚本定时(默认一个月)删除里面的文件。
-
/var:存放经常被修改的目录,包括各种日志文件。
-
/bin: 是Binary的缩写,存放内核提供的系统启动、运行或修复所必需的命令。
-
/sbin:s就是Super User的意思,存放引导系统运行所必需的命令,通常只有root用户可用。
-
/lib:系统运行所需要最基本的动态连接共享库(内核级别的库文件),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
- /lib/modules:内核模块文件。
- 静态库:软件源码直接包含库文件,便于移植和文件管理。
- 动态库: .dll, .so (shared object)等等,只会在内存存在一份,多个软件使用时可节省内存。但是多个主机时要注意要保证库依赖。
-
/usr:usr是指Unix System Resource,而不是User。
- /usr/bin:存放系统预装的和系统启动、运行或修复无关的可执行程序,例如cd、ls、chmod等等,普通用户可用,会随着系统升级而改变。
- /usr/sbin:存放系统预装的和系统启动、运行或修复无关的系统管理程序,例如shutdown,reboot等等,通常只有root用户可用,会随着系统升级而改变。
- /usr/lib:存放系统预装的库文件。
-
/usr/local:第三方软件安装目录。
- /usr/local/bin:普通用户可用的与本地机器运行无关的第三方程序,不会被系统升级而覆盖同名文件。
- /usr/local/sbin:root用户可用的与本地机器运行无关的第三方系统管理程序,不会被系统升级而覆盖同名文件。
- /usr/local/liblocal/lib:用户自己安装、编译的库文件。
2-2、/bin /sbin /lib和/usr/bin /usr/sbin /usr/lib以及/usr/local/bin /usr/local/sbin /usr/local/lib的区别
搬运于官方文档
/bin This directory contains executable programs which are needed in single user mode and to bring the sys‐
tem up or repair it.
/sbin Like /bin, this directory holds commands needed to boot the system, but which are usually not executed
by normal users.
/usr/bin
This is the primary directory for executable programs. Most programs executed by normal users which
are not needed for booting or for repairing the system and which are not installed locally should be
placed in this directory.
/usr/sbin
This directory contains program binaries for system administration which are not essential for the boot
process, for mounting /usr, or for system repair.
/usr/local/bin
Binaries for programs local to the site.
/usr/local/sbin
Locally installed programs for system administration.
现在有一些变化,在大约五年前,大量Linux系统都将/bin、/lib弄成/usr/bin、/usr/lib的符号链接。此外,不同系统还会有很多的细微区别,比如Redhat系喜欢把32位的库放在/lib、/usr/lib,64位的库放在/lib64、/usr/lib64,而Debian系喜欢把平台相关的那层名字放在/lib、/usr/lib的子目录里,比如/usr/lib/x86_64-linux-gnu/。然后,各种配置文件的文件名、路径也会有区别,比如ssh服务器的配置文件可能叫/etc/ssh/sshd.conf,也可能叫/etc/ssh/sshd_config。。。
分成三块的最早的渊源,据说是这样的:
- Unix开发者的机器的硬盘不够了,新加了一块,挂在/usr上;
- 又TM不够了,再加一块,挂在/usr/local上;
- 不知怎么,就变成规范了。。。。
网友评论