Linux的文件系统架构基础

前言

    当今计算机操作系统来说常见功能主要有:进程调度、内存管理、文件系统管理、网络协议栈支持、驱动程序管理、安全功能等。所有对于我们来讲学习Linux文件系统也是一个十分重要的知识,也是学习Linux的必备基础知识,学习好Linux的文件系统知识也是为接下来学习Linux的其他知识奠定良好的基础

关键词

    Linux的哲学思想、Linux的文件和目录、根文件系统、目录树、FHS、绝对路径与相对路径、工作目录、家目录

Linux的哲学思想

    1.一切皆文件(硬件设备亦表现为文件)

    2.由众多目的单一的小程序组成;一个程序只做一件事,并且要做好

    3.组合小程序完成复杂任务

    4.尽可能避免跟用户交互,方便了脚本编程实现自动化运维

    5.使用文本文件保存程序的配置信息,好处是使用一个文本编辑器即可完成系统及服务配置工作

根文件系统

     文件系统是对一个存储设备上的数据和元数据进行组织的进制。根文件系统首先也是一种文件系统,相较于普通的文件系统而言它的特殊之处在于,它是内核启动时所挂载的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本和服务加载到内存中去运行。根目录是整个文件系统最重要的一个目录,所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。借鉴了Unix的思想理念,Linux文件系统管理也是采用根文件系统。

Linux的文件系统结构和目录

 1.Linux文件系统

     Linux由于采用了根文件系统,所以所有其他的目录和文件都是在根之下,根是处于最顶级的位置,由根衍生出文件系统的各种目录和文件。这就好像一棵倒置的树,由树的根开始开出各种分叉,分叉下又有子分叉,到最后是树的叶子;树的分叉就是根下的目录或子目录,而叶子则就是具体的文件了,也叫叶子结点

 2.Linux的目录树

    Linux底下,所有的文件与目录都是由根目录开始的,它是所有目录与文件的源头,然后再一个一个的分支下来,跟树的树状类似,因此也称这种目录配置方式为目录树

    一个目录对于上层的父目录来说它也是父目录下的一个文件,同时该目录下可以有子目录或文件,所以也可以这样说:一个目录就是一个名称空间

    在同一个名称空间内不能有两个相同名称的文件,在不同名称空间内则可以存在两个名称相同的文件。

3.绝对路径与相对路径

    由于所有的目录和文件都是由根开始的,当我们要表示一个文件时,由某一个点开始到指定文件位置的经过就叫路径。Linux中的路径表示法有绝对路径和相对路径。

    绝对路径:由根目录(/)这个顶级名称空间起始到目标位置的文件名或目录名称的路径,例如 /home/magedu/.bashc;

    相对路径:从非顶级空间,由相对于当前位置起始到目标位置的路径,例如 ./home/magedu 或者 ../..  ../home 等等,可以这么说路径开头不是(/)的就是相对路径的写法。

     特殊目录表示方法

    . : 代表当前目录

    .. : 代表当前目录的上一层目录(父目录,例如:

blob.png

 blob.png

Linux目录配置的依据FHS:文件系统层级结构标准

    由于Linux开源软件的特点,利用Linux来开发产品或发布distributions的发行商公司或社群、个人有很多,如果每个人都用自己的想法来组织Linux文件系统结构,则Linux的学习和实际生产环境使用管理可能会造成很多管理上的困扰,所以就有了FHS标准的出炉了

    FHS依据文件系统使用的频繁与否与是否允许使用者随意更改,而将目录定义成为四种交互作用的形态,如下图所示

blob.png

    可分享就是能够分享给网络上的其他主机挂载使用的目录;不可分享如主机上的配置文件,由于仅与本机自身有关不适合分享给其他主机;不变的如函数库、说明文件、系统管理员所管理的主机服务配置文件等;可变动的就是经常改变的数据,如登录文件等

Linux文件结构标准

一般来说由根开始默认Linux有以下几个目录,如下图:

blob.png

目录的详细介绍:

   1. /bin 系统放置执行文件的目录,在/bin底下的命令可以被root与普通管理员等所有用户使用

blob.png

   2. /sbin 只有管理员才可以使用的管理命令的存放路径,Linux有非常多的命令是用来设定系统环境的,这些命令只有root才能够使用,其他用户最多只能查询

   /bin/sbin包含了系统自身启动和运行时可能会用到的核心二进制命令。

blob.png

   3. /lib 共享库文件和内核模块的存放目录,放置的是在开机时会用到的函数库和内核核心相关的模块(如驱动程序)等

   4. /lib64 只在64位系统上有,类似于/lib

blob.png

   5. /etc  存放的是系统和程序的配置文件,系统主要的配置文件几乎都放置在这个目录内,一般来说,这个目录下的各文件的属性是可以让一般使用者查询的,但是只有root有权限修改

blob.png

   6. /usr :Unix Software Resources  unix操作系统软件资源的缩写),所有系统默认的软件(发行商提供的软件)都会放置在该目录下,这个目录有点类似于windows系统的“C:\Windows”和“C:\Program Files”这两个目录的综合体,系统刚安装完毕时这个目录会占用最多的硬盘容量;里面的文件不和特定的用户相关,也不会在正常使用中修改,可以通过网络共享这个目录,这样当管理员在这个目录下安装了新的软件后,所有共享这个目录的计算机均可以使用该新软件

      /usr/bin 绝大部分用户可使用的命令都放在这里,它与/bin的不同之处在于是否与开机过程有关

      /usr/sbin 放置非系统正常动作所需要的核心系统命令

      /usr/lib/usr/lib64 用户使用的和非核心系统命令所依赖的库文件存放路径

      /usr/share 放置共享文件的地方,该目录下的数据不分硬件架构均可读取的数据,常见的有/usr/share/man/usr/share/doc 程序的帮助文件目录

blob.png

   7. /dev  device的简写,在Linux系统上任何装置与接口设备都是以文件的形态存在于这个目录中的,设备文件通常也称为特殊文件,仅有元数据而没有数据的,仅仅做为某个设备的访问入口用于标识一个设备使用的

blob.png

   8. /proc 伪文件系统,该目录本身是一个虚拟文件系统;是系统内存的映射存放的数据都是在内存当中,可直接通过访问这个目录来获取当前系统的相关信息;如系统核心、进程信息、网络状态等,该目录本身不占任何硬盘空间。

blob.png

   9. /sys 该目录与/proc非常类似也是一个虚拟文件系统,主要包括目前已加载的核心模块和内核所识别到的硬件设备信息等

blob.png

   10. /boot 该目录放置开机系统启动引导时会使用到的文件,包括内核和ramdiskCentOS 5:initrdCentOS 6initramfs),grubbootloader 引导加载器)等

blob.png

   11. /mnt 用来临时挂载某些额外的设备,这个目录的用途与/media相同,只是有了/media之后,这个目录就用来作为临时挂载使用了

   12. /media 放置的是可移动或便携的装置,例如软盘、光盘、DVD

   13. /tmp 用户临时文件存放位置,让一般用户或者是正在执行的程序暂时存放文件的目录,这个目录是任何人都能够访问存取的,重要数据不可放置在此目录。

blob.png

   14. /srv  service的缩写,当前系统上一些服务启动之后所用到的数据存放的目录,例如WWW服务所需要的网页资料就可以放置在/srv/www 里面

   15. /opt 第三方应用程序的安装目录为早期Linux版本使用,现在第三方应用程序的安装目录为/usr/local

   16. /var variable的缩写,就是在系统运行后才会逐渐占用硬盘容量的目录,主要放置一些经常变动的文件以及某些软件运行时产生的临时文件等,常见的交目录有:/var/cache/var/lib/var/log/var/mail/var/spool

blob.png

   17. /misc 备用目录,放置杂项不便归档分类的文件

   18. /selinux Security Enhanced Linux 安全加强的Linux功能相关的文件存放目录

blob.png

   19. /lost+found 这个目录在使用ext2/ext3文件系统格式才会产生的一个目录,用于在当文件系统发生错误时,将一些遗失的片段放置到这个目录下,一般位置磁盘分区的根目录下

 

需要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载,因此根目录下与开机过程有关的目录,就不能够与根目录放到不同的磁盘分区中去,有以下5个目录:

/etc  /bin  /dev  /lib  /sbin

工作目录、家目录概念

       由于Linux一切皆文件的哲学思想,当用于登录系统后每时每刻都是处在一个目录中的,而用户当前所处的目录就称为工作目录(working directory),又称为当前目录(current directory),在任何时候命令行模式下可以通过命令pwd 显示当前所处的工作目录

blob.png

     家目录:用户登录系统后默认所处的目录,而root和普通用户家目录有所不同,root管理员的家目录为/root,而普通用户的家目录则是在/home目录下,以当前用户名称命令的一个目录,如普通用户test的家目录就是/home/test这个目录。

blob.png

 

总结:

    要深刻理解Linux的哲学思想;理解根文件系统、Linux层次化结构的文件系统;了解FHS和Linux标准的文件结构下常见的目录

原创文章,作者:厦门-仗剑,如若转载,请注明出处:http://www.178linux.com/3223

评论列表(1条)

  • stanley
    stanley 2015-04-16 22:53

    不错不错,有图有文,有主有次,很有文档功底,赞。另外,关键词写到标签可以增加搜索命中率