[转载] Linux 文件系统结构介绍

原文: https://linux.cn/article-6132-weibo.html

Linux中的文件是什么?它的文件系统又是什么?那些配置文件又在哪里?我下载好的程序保存在哪里了?在 Linux 中文件系统是标准结构的吗?好了,上图简明地阐释了Linux的文件系统的层次关系。当你苦于寻找配置文件或者二进制文件的时候,这便显得十分有用了。我在下方添加了一些解释以及例子,不过“篇幅较长,可以有空再看”。

另外一种情况便是当你在系统中获取配置以及二进制文件时,出现了不一致性问题,如果你是在一个大型组织中,或者只是一个终端用户,这也有可能会破坏你的系统(比如,二进制文件运行在旧的库文件上了)。若然你在你的Linux系统上做安全审计的话,你将会发现它很容易遭到各种攻击。所以,保持一个清洁的操作系统(无论是Windows还是Linux)都显得十分重要。

Linux的文件是什么?

对于UNIX系统来说(同样适用于Linux),以下便是对文件简单的描述:

在UNIX系统中,一切皆为文件;若非文件,则为进程

这种定义是比较正确的,因为有些特殊的文件不仅仅是普通文件(比如命名管道和套接字),不过为了让事情变的简单,“一切皆为文件”也是一个可以让人接受的说法。Linux系统也像UNIX系统一样,将文件和目录视如同物,因为目录只是一个包含了其他文件名的文件而已。程序、服务、文本、图片等等,都是文件。对于系统来说,输入和输出设备,基本上所有的设备,都被当做是文件。

题图版本历史:

  • Version 2.0 – 17-06-2015

    • – Improved: 添加标题以及版本历史
    • – Improved: 添加/srv,/meida和/proc
    • – Improved: 更新了反映当前的Linux文件系统的描述
    • – Fixed: 多处的打印错误
    • – Fixed: 外观和颜色
  • Version 1.0 – 14-02-2015
    • – Created: 基本的图表
    • – Note: 摒弃更低的版本

下载链接

以下是大图的下载地址。如果你需要其他格式,请跟原作者联系,他会尝试制作并且上传到某个地方以供下载

注意: PDF格式文件是打印的最好选择,因为它画质很高。

Linux 文件系统描述

为了有序地管理那些文件,人们习惯把这些文件当做是硬盘上的有序的树状结构,正如我们熟悉的‘MS-DOS‘(磁盘操作系统)就是一个例子。大的分枝包括更多的分枝,分枝的末梢是树的叶子或者普通的文件。现在我们将会以这树形图为例,但晚点我们会发现为什么这不是一个完全准确的一幅图。

目录 描述
/ 主层次 的根,也是整个文件系统层次结构的根目录
/bin 存放在单用户模式可用的必要命令二进制文件,所有用户都可用,如 cat、ls、cp等等
/boot 存放引导加载程序文件,例如kernels、initrd等
/dev 存放必要的设备文件,例如/dev/null
/etc 存放主机特定的系统级配置文件。其实这里有个关于它名字本身意义上的的争议。在贝尔实验室的UNIX实施文档的早期版本中,/etc表示是“其他(etcetera)目录”,因为从历史上看,这个目录是存放各种不属于其他目录的文件(然而,文件系统目录标准 FSH 限定 /etc 用于存放静态配置文件,这里不该存有二进制文件)。早期文档出版后,这个目录名又重新定义成不同的形式。近期的解释中包含着诸如“可编辑文本配置”或者“额外的工具箱”这样的重定义
/etc/opt 存储着新增包的配置文件 /opt/.
/etc/sgml 存放配置文件,比如 catalogs,用于那些处理SGML(译者注:标准通用标记语言)的软件的配置文件
/etc/X11 X Window 系统11版本的的配置文件
/etc/xml 配置文件,比如catalogs,用于那些处理XML(译者注:可扩展标记语言)的软件的配置文件
/home 用户的主目录,包括保存的文件,个人配置,等等
/lib /bin/ 和 /sbin/中的二进制文件的必需的库文件
/lib<架构位数> 备用格式的必要的库文件。 这样的目录是可选的,但如果他们存在的话肯定是有需要用到它们的程序
/media 可移动的多媒体(如CD-ROMs)的挂载点。(出现于 FHS-2.3)
/mnt 临时挂载的文件系统
/opt 可选的应用程序软件包
/proc 以文件形式提供进程以及内核信息的虚拟文件系统,在Linux中,对应进程文件系统(procfs )的挂载点
/root 根用户的主目录
/sbin 必要的系统级二进制文件,比如, init, ip, mount
/srv 系统提供的站点特定数据
/tmp 临时文件 (另见 /var/tmp). 通常在系统重启后删除
/usr 二级层级存储用户的只读数据; 包含(多)用户主要的公共文件以及应用程序
/usr/bin 非必要的命令二进制文件 (在单用户模式中不需要用到的);用于所有用户
/usr/include 标准的包含文件
/usr/lib 库文件,用于/usr/bin/ 和 /usr/sbin/中的二进制文件
/usr/lib<架构位数> 备用格式库(可选的)
/usr/local 三级层次 用于本地数据,具体到该主机上的。通常会有下一个子目录, 比如, bin/,lib/share/.
/usr/local/sbin 非必要系统的二进制文件,比如用于不同网络服务的守护进程
/usr/share 架构无关的 (共享) 数据.
/usr/src 源代码,比如内核源文件以及与它相关的头文件
/usr/X11R6 X Window系统,版本号:11,发行版本:6
/var 各式各样的(Variable)文件,一些随着系统常规操作而持续改变的文件就放在这里,比如日志文件,脱机文件,还有临时的电子邮件文件
/var/cache 应用程序缓存数据. 这些数据是由耗时的I/O(输入/输出)的或者是运算本地生成的结果。这些应用程序是可以重新生成或者恢复数据的。当没有数据丢失的时候,可以删除缓存文件
/var/lib 状态信息。这些信息随着程序的运行而不停地改变,比如,数据库,软件包系统的元数据等等
/var/lock 锁文件。这些文件用于跟踪正在使用的资源
/var/log 日志文件。包含各种日志。
/var/mail 内含用户邮箱的相关文件
/var/opt 来自附加包的各种数据都会存储在 /var/opt/.
/var/run 存放当前系统上次启动以来的相关信息,例如当前登入的用户以及当前运行的daemons(守护进程).
/var/spool 该spool主要用于存放将要被处理的任务,比如打印队列以及邮件外发队列
/var/mail 过时的位置,用于放置用户邮箱文件
/var/tmp 存放重启后保留的临时文件

Linux的文件类型

大多数文件仅仅是普通文件,他们被称为regular文件;他们包含普通数据,比如,文本、可执行文件、或者程序、程序的输入或输出等等

虽然你可以认为“在Linux中,一切你看到的皆为文件”这个观点相当保险,但这里仍有着一些例外。

  • 目录:由其他文件组成的文件
  • 特殊文件:用于输入和输出的途径。大多数特殊文件都储存在/dev中,我们将会在后面讨论这个问题。
  • 链接文件:让文件或者目录出现在系统文件树结构上多个地方的机制。我们将详细地讨论这个链接文件。
  • (域)套接字:特殊的文件类型,和TCP/IP协议中的套接字有点像,提供进程间网络通讯,并受文件系统的访问控制机制保护。
  • 命名管道 : 或多或少有点像sockets(套接字),提供一个进程间的通信机制,而不用网络套接字协议。

现实中的文件系统

对于大多数用户和常规系统管理任务而言,“文件和目录是一个有序的类树结构”是可以接受的。然而,对于电脑而言,它是不会理解什么是树,或者什么是树结构。

每个分区都有它自己的文件系统。想象一下,如果把那些文件系统想成一个整体,我们可以构思一个关于整个系统的树结构,不过这并没有这么简单。在文件系统中,一个文件代表着一个inode(索引节点),这是一种包含着构建文件的实际数据信息的序列号:这些数据表示文件是属于谁的,还有它在硬盘中的位置。

每个分区都有一套属于他们自己的inode,在一个系统的不同分区中,可以存在有相同inode的文件。

每个inode都表示着一种在硬盘上的数据结构,保存着文件的属性,包括文件数据的物理地址。当硬盘被格式化并用来存储数据时(通常发生在初始系统安装过程,或者是在一个已经存在的系统中添加额外的硬盘),每个分区都会创建固定数量的inode。这个值表示这个分区能够同时存储各类文件的最大数量。我们通常用一个inode去映射2-8k的数据块。当一个新的文件生成后,它就会获得一个空闲的inode。在这个inode里面存储着以下信息:

  • 文件属主和组属主
  • 文件类型(常规文件,目录文件......)
  • 文件权限
  • 创建、最近一次读文件和修改文件的时间
  • inode里该信息被修改的时间
  • 文件的链接数(详见下一章)
  • 文件大小
  • 文件数据的实际地址

唯一不在inode的信息是文件名和目录。它们存储在特殊的目录文件。通过比较文件名和inode的数目,系统能够构造出一个便于用户理解的树结构。用户可以通过ls -i查看inode的数目。在硬盘上,inodes有他们独立的空间。



via: http://www.blackmoreops.com/2015/06/18/linux-file-system-hierarchy-v2-0/

译者:tnuoccalanosrep 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

原文:http://www.blackmoreops.com/2015/06/18/linux-file-system-hierarchy-v2-0/
译文:LCTT  https://linux.cn/article-6132-1.html译者: tnuoccalanosrep

时间: 2024-08-02 15:14:17

[转载] Linux 文件系统结构介绍的相关文章

Linux 文件系统结构介绍

转帖: http://www.codeceo.com/article/linux-file-introduction.html#0-youdao-1-13607-32553cecb956bf88a1550052113e506a Linux中的文件是什么?它的文件系统又是什么?那些配置文件又在哪里?我下载好的程序保存在哪里了?在 Linux 中文件系统是标准结构的吗?好了,上图简明地阐释了Linux的文件系统的层次关系.当你苦于寻找配置文件或者二进制文件的时候,这便显得十分有用了. 另外一种情况便

备忘-linux文件系统结构

用apache的时候总是要进入/var/www, 用久了开始好奇这些个目录都是派什么用处的,简单整理了一下 /bin 存放二进制命令文件,这个目录下面不允许存在子目录/boot bootloader的静态文件,当然OS的文件也必须在这里/dev 设备文件,MAKEDEV命令可以创建设备/etc 特定主机的配置文件,必须是静态文件,非可执行文件: opt, X11, sgml, xml/home 用户目录 /lib 存放主要的共享库和核心模块/media 可移除媒体的挂载点: floppy, cd

linux 文件系统结构及命令

1.linux 文件系统结构 / 根目录 root |--mnt/ | |--sdcard/  挂载点 | |--usb0 | |--cdrom |--home | |--soft01 <- 用户主目录 User Home 2.绝对路径:/开始的路径 绝对路径是从目录开始的位置  相对路径:不是以/开始的路径 相当路径是相对与当前目录的路径位置 cd /etc  cd Desktop  cd /home/soft01/Desktop  cd  .. 改变当前工作目录到..(父目录)  cd 改变

Linux 文件系统结构

一.Linux文件系统结构: Linux下的文件系统为树形结构,入口为/ 树形结构下的文件目录,为文件的根目录:无论哪个版本的Linux系统,都有这些目录,这些目录应该是标准的,不同的Linux发行版本的略有差异,但总体来说大多是一致的. /根目录 ┃ ┏━━┳━━━┳━━━┳━━━╋━━━┳━━━┳━━━┳━━━┓ ┃    ┃      ┃      ┃      ┃      ┃      ┃      ┃      ┃ bin  home   dev     etc     lib   

linux文件系统日志介绍

我们将inode 块与block块称为数据存放区域或普通数据块,superblock.block块位图.inode位图等称为中间数据或者元数据,因为元数据经常变化,会存在与实际数据不一致的情况.所以就有了文件系统日志功能. ext3文件系统日志:首先将待写的块的一个副本放入日志中,当发往日志的IO数据发送到日志中后(将数据提交到日志中),块即将写入文件系统,当发往文件系统的IO数据完毕时,( 把数据提交到了文件系统中),日志中的块副本就丢弃. 事实上,元数据的日志记录可以恢复文件系统结构的一致性

[转载] linux cgroup技术介绍

原文: http://coolshell.cn/articles/17049.html 大名鼎鼎的左耳朵耗子的文章, 非常浅显的介绍了linux cgroup技术, 看完之后一定让你明白cgroup技术 前面,我们介绍了Linux Namespace,但是Namespace解决的问题主要是环境隔离的问题,这只是虚拟化中最最基础的一步,我们还需要解决对计算机资源使用上的隔离.也就是说,虽然你通过Namespace把我Jail到一个特定的环境中去了,但是我在其中的进程使用用CPU.内存.磁盘等这些计

linux文件系统结构和权限

linux文件系统的目录结构 熟话说的好,好记性不如烂笔头,虽然没用笔,但动动手指还是可以的.下面的目录结构都是摘抄过来的,动动手指来加深下印象吧,还能练习下打字速度,哈哈,多好啊. ...突然又改变想法了,还是用图形结构来展示下吧,既形象又生动.. 终于让我画完了...不过看到成果还是不错的. 下面让我们来看下linux文件属性吧. 我们用其中一行来做解释: 关于文件的类型和权限: 文件类型: d 为目录. - 为文件. l 为连结档. b 为块设备. c 为字符设备 权限: r 代表可读(1

Linux 文件系统结构(Filesystem Hierarchy Standard)

Linux 文件系统类似一颗倒置的树状结构,由/根目录开始向下伸展开来,每一个文件是一个节点.值得注意的是目录是一个特殊文件,当然是节点.如果从根开始向下伸展,可能经过数个节点到达终点,不能继续伸展,这个文件也称作叶子节点.从根开始经过数个节点找到所需的最终文件,整个经过的节点串起来,也就是结对路径.如果是从当前目录开始向最终文件所经过的节点的串联,称作相对路径. tree命令查看文件系统层级结构树:tree -L 1 -d  /        -L 选项指定文件系统的层数 -d  选项指定从何

02_Linux图形界面及文件系统结构介绍

一.根目录 /       : 它跟Windows的C.D.E.F不同,在Linux中,所有的文件系统(光驱.U盘.硬盘)都挂载到根目录的某一个文件夹下 bin   : 存放二进制可执行文件 sbin :存放二进制可执行文件,只有root可以访问.系统管理的程序 boot:计算机启动时加载的引导文件:配置引导菜单  /boot/grup/gurp.conf dev :硬件设备目录.比如:cpu.net.disk.pts(终端) etc: 所有的配置文件所放置的目录(约定俗成) home:非roo