Linux文件系统

文件是什么?
存储空间内存储的有边界的一段流式数据,对数据可以做到按名存取。
众多文件是如何有效的组织起来?
1.  平面化
把众多文件放在一起。当想查找某个文件时,需要遍历所有文件,当文件数目足够多的时候,查找一个文件将会非常慢,效率极低。
2.  层级结构化
根据后续查找文件的筛选条件进行分类,逐层放置,通常要查找一个文件,只需要从最高层级开始,逐层进行查找,最后在底层层级的存储单元内进行文件遍历,极大的提升了文件查找效率。

总结
从上述两种管理方式的对比来看,针对于海量文件的管理来讲,层级结构化管理,无疑是最适合的方式,Linux也采用了这种文件管理理念。

FHS(Filesystem Hierarchy Standard):文件系统层级结构标准
为了规范各Linux发行版的文件系统层级结构设定,FHS出现了,对目录层级结构做出了如下定义:

目录 | 目录存在的目的
—— | ———————
/bin | 所有用户可用的基本命令程序文件
/sbin | 供系统管理使用的工具程序
/boot | 引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等
/dev | 存储特殊文件或设备文件(包括字符设备、块设备)
/etc | 系统程序的静态配置文件,只能是静态的,不存放二进制可执行文件
/home | 普通用户的家目录的集中位置
/lib | 为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块(/lib/modules目录)
/lib64 | 64位系统特有的存放64位共享库的路径
/media | 便携式设备挂载点,例如:cdrom, floppy等
/mnt | 其他文件系统的临时挂载点
/opt | 附加应用程序的安装位置
/root | root用户的家目录
/srv | 当前主机为服务提供的数据
/tmp | 为那些会产生临时文件的程序提供的用于存储临时文件的目录,可供所有用户执行写入操作,有特殊权限
/usr | 全局共享的只读数据路径,自己本身是一个层级结构
/var | 存储经常发生变化的数据的目录,自己本身是一个层级结构
/proc | 虚拟文件系统,为内核和进程存储其相关信息,多为内核参数,例如:net.ipv4.ip_forward,虚拟为/proc/sys/net/ipv4/ip_forward
/sys | sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径,其主要作用在于为管理Linux设备提供了一种统一模型的接口
 

设备文件包含字符设备和块设备,其中

设备名 | 意义
———— | ———
字符设备      | 线性设备,有次序的,以字符为单位,比如键盘
块设备          | 随机访问设备,可以实现随机访问,被分为指定大小的数据块,比如磁盘

/lib目录下的共享库文件中

库名类型 | 意义
———— | —–
libc.so.*  | C语言的动态链接库
ld*          | 运行时链接器或加载器
modules | 存放内核模块的目录

/usr目录层级结构

目录 | 目录存在的目的 | 是否必选
—— | ——————— | ————
bin | 大多数用户命令 | 是
include | C程序用到的头文件 | 是
lib | 库文件 | 是
local | 让系统管理员安装本地应用程序,也通常用于安装第三方应用程序,也是一个层级目录 | 是
sbin | 非系统自身运行和维护需要用到的管理命令 | 是
share | 与架构无关的数据,例如命令帮助文件,命令自带说明文件 | 是
X11R6 | X Windows程序的安装位置,11是版本,6是发行号 | 否
games | 游戏和有关教育的二进制程序文件 | 否
lib64 | 其他可选库文件 | 否
src | 源码 | 否

/usr/local目录层级结构

目录 | 目录存在的目的 
—— | ———————
bin | 本地二进制程序文件 
etc | 本地程序文件的配置文件存放目录
games | 本地游戏程序文件
include | 本地C语言程序头文件
lib | 本地库文件
man | 本地在线帮助文档
sbin | 本地系统程序文件
share | 本地与架构无关的层级目录
src | 本地源码

/var目录层级机构

目录 | 目录存在的目的 
—— | ———————
cache | 应用缓存数据
lib | 变量状态信息
local | /usr/local目录的变量数据
lock | 锁文件
log | 日志文件和目录
opt | /opt目录的变量数据
run | 正在运行进程的相关数据
spool | 应用程序的假脱机数据
tmp | 系统重新启动时保存的临时文件

/sys目录的层级结构

目录 | 目录存在的目的 
—— | ———————
devices | 这是内核对系统中所有设备的分层次表达模型,也是/sys文件系统管理设备的最重要的目录结构
dev | 这个目录下维护一个按字符设备和块设备的主次号码(major.minor)连接到真实的设备(/sys/devices下)的符号链接文件,它是在内核2.6.26首次引入
bus | 这是内核设备按总线类型分层放置的目录结构,devices中的所有设备都是连接于某种总线之下,在这里的每一种具体总线之下可以找到每一个具体设备的符号链接,它也是构成Linux统一设备模型的一部分
class | 这是按照设备功能分类的设备模型,如系统所有输入设备都会出现在/sys/class/input之下,而不论它们是以何种总线连接到系统,它也是构成Linux统一设备模型的一部分
block | 这里是系统中当前所有的块设备所在,从2.6.22开始已经标记为过时
firmware | 这里是系统加载固件机制的对用户控件的接口,关于固件有专用于固件加载的一套API
fs | 这里按照设计是用于描述系统中所有文件系统,包括文件系统本身和按文件系统分类存放的已挂载点,但目前只有fuse, gfs2等少数文件系统支持sysfs接口
kernel | 这里是内核所有可调整参数的位置
module | 这里有系统中所有模块的信息
power | 这里是系统中电源选项,这个目录下有几个属性文件可以用于控制整个机器的电源状态,如可以向其中写入控制命令让机器关机、重启等

原创文章,作者:N27_sapbcs,如若转载,请注明出处:http://www.178linux.com/86313

(0)
N27_sapbcsN27_sapbcs
上一篇 2017-09-05 09:46
下一篇 2017-09-05 21:41

相关推荐

  • Linux之函数

      Linux之函数     函数介绍函数function是由若干条shell命令组成的语句块,实现代码重用和模块化编程。它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell程序的一部分。函数和shell程序比较相似,区别在于:Shell程序在子Shell中运行而Shell函数在…

    Linux干货 2016-08-25
  • Linux用户及权限管理

    Linux用户及权限管理 当我们用ls -al查看一个文件的详细信息的时候会显示出一个有七个字段的文件详细信息,现在我们来了解下这七个字段各自代表的意义 drwxr-xr-x 18 root root 4096 12月 16 15:25 .config 我们先来说明这七段分别表示什么每个字段我们用 | 隔开 drwxr-xr-x | 18 | root | …

    Linux干货 2016-12-19
  • vim小结

    1. 简介 Vim(Vi[Improved])编辑器是功能强大的跨平台文本文件编辑工具,继承自Unix系统的Vi编辑器,支持Linux/Mac OS X/Windows系统,利用它可以建立、修改文本文件。进入Vim编辑程序,可以在终端输入下面的命令: $vim [filename] 其中filename是要编辑器的文件的路径名。如果文件不存在,它将…

    Linux干货 2016-08-12
  • 正则表达式常用元字符

    正则表达式的使用需要借助于工具程序来实现,我们使用grep来演示正则表达式元字符的使用。     grep使用方法             grep是一种文本搜索工具,根据用户指定的文本模式(搜索条件…

    Linux干货 2015-03-10
  • Linux 文件系统权限

    一、简述权限  文件系统的权限管理机制的建立,约束了用户对数据的操作。 1、对系统安全而言  管理员的操作权限非常大,足以破坏系统,权限机制将管理员与普通用户之间区分开,防止系统被随意破坏。 2、对用户而言  Linux是一个多用户的操作系统,不同用户间为了防止其他人破坏数据或访问数据,文件系统的权限管理是非常必要的。 二、文件…

    Linux干货 2016-08-04
  • LVM——如何让你的磁盘空间可大可小

    逻辑卷管理器(LVM) 允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小 允许在多个物理设备间重新组织文件系统          将设备指定为物理卷          用一个或者多个物理卷来创…

    Linux干货 2016-08-29