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

相关推荐

  • Week2 bash特性及文件相关

    1. 文件类命令及其常用的使用方法 文本查看类命令cat head tail more less 分屏查看命令 more lessmore FILE 翻至最后一页自动退出less FILE -f 翻至最后一页不退出 若有追加内容则立即显示 首尾查看命令head tail head命令: 查看文件前n行 head FILEhead [option] FILEh…

    Linux干货 2016-12-11
  • 通用二进制安装MySQL(MariaDB)

    一、前言     MySQL是一个关系型数据库管理系统,是最流行的关系型数据库管理系统,由于其体积小、速度快、总体拥有成本低,并且之前是完全开源,所以大受欢迎。但由于后面MySQL卖给了SUN,随后SUN被Oracle收购,虽然也有开源免费版本,但是很多功能都需要另外购买商业版本,导致现在MySQL使用份额逐渐减少。所…

    Linux干货 2015-10-15
  • 学而时习之

    1、 Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理类命令 ls, 查看:cat,more,less,tail,head,tac 复制:cp 移动:mv 删除:rm 创建:touch 元数据属性:stat 查看内容类型:file 文本编辑器:nano,vi Linux的文件类型       &…

    Linux干货 2016-09-24
  • Linux运维不想早死的方法 一

    Linux运维不想早死的方法 一 为了提高工作效率,减少工作时间,爱惜生命,远离辐射;务必做好以下几点: 1,一定用快捷键         这里简单的说下几个常用的快捷按键。 Ctrl + l     清屏,相当于clear命令。 Ctrl…

    Linux干货 2017-03-26
  • 马哥教育网络班20期+第5周课程练习

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep '^[[:space:]]\+' /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至…

    系统运维 2016-07-12
  • OpenStack Icehouse私有云实战部署

    前言 相信你一定对“云主机”一词并不陌生吧,通过在Web页面选择所需主机配置,即可快速定制一台属于自己的虚拟主机,并实现登陆操作,大大节省了物理资源。但这一过程是如何实现的呢?本文带来OpenStack Icehouse私有云实战部署。 OpenStack 简介 OpenStack是由网络主机服务商Rackspace和美国宇航局联合推出的一个开源项目,Ope…

    Linux干货 2015-07-29