Linux文件系统

    不同于windows,在linux中,文件可以称为是一个有名称的数据集合。文件可以是任意源,有一个名称,可以从中获取数据;文件也可以是任意目标,有一个名称,向其写入数据。

文件类型:

     常规文件:

                     在存储介质上占用存储空间,分为

                      二进制文件

                     文本文件

    目录:

              类似于常规文件,在存储介质上也是占用空间的。不过不同于常规文件的是,目录是用于组织和访问文件的。而且,目录是可以包含目录的,从而组成一个文件系统树

    伪文件:

             不同于常规文件和目录,伪文件并不用来存储数据。所以文件本身是不占用存储空间的。伪文件的目的是用来提供一种服务,这种服务采取和常规文件相同的访问方式进行访问。linux将所有的特殊文件存放在/dev目录下。主要分文设备文件,命名管道和proc文件

            设备文件:是物理设备在linux系统中的内部表示.

                             /dev/fd0:软盘

                             /dev/hda:硬盘

                            /dev/hda1:硬盘:第1分区

                            /dev/lp0:打印机

                            /dev/tty:当前终端

                            /dev/tty1:控制台/虚拟控制台

                            /dev/pts/0:伪终端

                            /dev/ttyp0:伪终端

                            /dev/null:输入不返回内容(返回eof信号)

                            /dev/zero:输入返回null

                           /dev/random:生成随机数

                           /dev/urandom:生成随机数

                            

            命名管道:用于进程间通信

            proc文件:用于访问内核信息的伪文件

Linux文件系统按照FHS管理文件结构,根目录的一般结构为:

/bin:存放最重要的系统程序,系统程序均为二进制文件,命名为bin,也就是存放二进制(binary)文件的位置

/sbin:system binaries。存放用于系统管理的程序。通常该目录中的程序必须由root用户执行

/lib:当程序运行时必须要调用库,Linux提供了大量的库,以允许程序访问操作系统提供的服务。该目录下包含运行/bin和/sbin目录中的程序所需的基本库

/boot:系统引导过程中所需全部文件的位置。内核必须位于这个目录或者根目录中

/dev:所有的特殊文件都位于这个目录中

/etc:存放的是配置文件(程序启动时需要读取的文本文件,其中包含有影响程序操作的命令或信息)

/home:存放个人文件和目录的位置。home目录的名称与用户标识相同

/root:root的home目录,其他所有home目录都位于/home下

/lost+found:用于恢复文件

/media:可移动介质挂载点

/mnt:固定介质挂载点

/opt:安装第三方应用程序的位置

/tmp:用于临时存储。任何人都可以在这个目录中存储文件,但是,最终/tmp中的文件会被自动清除。

/usr:辅助文件系统的根,包含有辅助文件系统的重要子目录。/usr中存储的是静态数据(没有系统管理员干预,不会发生变化的数据)

          /bin:大多数可执行程序的存放位置

          /sbin:包含有系统管理员使用的系统程序

          /include:C程序头文件

          /lib:存放的也是库

          /src:源代码

          /local:为系统管理员准备的,系统管理员使用它来支持本地用户。该目录是用于存放本地程序和文档资料的位置

/var:辅助文件系统的根,包含有辅助文件系统的重要子目录。/usr中存储的是可变数据。和/usr一样,通常驻留于自己的设备

根文件系统:

                      在开机自检之后,一个称为引导加载程序的程序接管计算机,从引导设备(在大多数情况下是本地硬盘驱动器的一个分区,也可以是网络设备,CD等)中读取数据,从而将操作系统加载到内存中。在引导设备的数据中有初始的Unix文件系统,称为根文件系统。根文件系统自动挂载,其中存放着启动unix所需的全部程序和数据文件。同时还包含有系统出现问题时系统管理员需要使用的工具。一旦挂在了跟文件系统,内核也启动完毕,就会自动挂载其他设备文件系统。此类文件系统的信息存放在配置文件/etc/fstab中,该文件可以由系统管理员修改。

虚拟文件系统(virtual file system,VFS):

                       每个设备使用一种适合该设备类型的文件系统,根据设备类型的不同,文件系统在读取和写入数据的细节方面存在巨大的差别。VFS可以充当程序和各种文件系统的中间人。每当程序需要I/O,它就向VFS发送一个请求,VFS定位合适的文件系统,通知设备驱动程序执行I/O并与之进行通信。通过这种方式,VFS允许用户和程序以一个单独的,一致的树形结构协调工作,即使数据实际上来源于各种独立的异构文件系统。

文件大小:

                 在文件系统中,空间以固定大小的组块进行分配,称为块。根据文件系统的不同,块的大小有1KB,2KB,4KB等。当文件写入到磁盘或其他存储介质上时,磁盘存储空间也以固定大小的组块进行分配,称为分配单元或簇(cluster)

                文件系统中的所有数据都组织成块,其中有一个块称为superblock,这是一个特殊的数据区,存放与文件系统本身有关的关键信息,若想查看文件系统块大小,可以使用dumpe2fs程序进行查找

文件权限控制:

           linux为每个文件维护一组权限,分别是:读(r),写(w),执行(x).

其中常规文件:

                       r:读取文件

                       w:修改文件

                       x:执行文件(文本文件不具有该权限)

        目录:

                       r:读取目录

                       w:创建,移动,复制或删除目录条目

                       x:搜索目录

权限是与用户标识关联的,创建文件的用户标识就是文件属主,属主是可以改变文件权限的唯一用户标识;每个文件都有一个组(可以使用groups命令查找)

文件模式:

                unix使用一个紧凑的3位数字的代码表示一个完整的文件权限集,称为文件模式或简称为模式。比如

6=属主的权限

0=组的权限

0=其他所有用户标识的权限

每个数字表示的含义:

0=没有权限

1=执行权限

2=写权限

4=读权限

改变文件权限,可以使用chmod命令,语法为:

chmod 模式 文件名   #只有属主和root才可以改变文件的模式

用户掩码:

                  也是一种模式,由用户设置表明希望限制的权限。使用umask命令。语法为:

umask 模式

链接:

          当unix创建文件时,unix完成两件事情。第一,unix在存储设备上保留一块空间用来存储数据;第二,unix创建一个称为索引节点或i节点的结构来存放文件的基本信息。i节点包含使用文件所需的全部文件系统信息。

          文件系统将所有的i节点存放在一个大表中,称为i节点表。在i节点表中,每个i节点由所谓的索引号或i节点号表示。

          目录只包含有文件的名称以及文件的i节点号,文件名和i节点之间的连接称为链接

          文件的惟一标识符是其i节点号,而不是它的名称。通过使用ln命令建立多重链接

           ln file newname     #file是一个已有普通文件的名称,newname是希望赋予链接的名称

           ln file...directory    #file是已有普通文件的名称,directory是希望放置新链接的目录的名称

           注意:不能为目录创建链接,而且不能为不同文件系统中的文件创建链接

           ln -s :符号链接(又称软链接)。符号链接包含的是不是文件的i节点号,而是源文件的路径名。没当访问符号链接时,unix使用该路径名查找文件

原文地址:https://www.cnblogs.com/carltmf/p/11140496.html