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)
上一篇 2017-09-05 09:46
下一篇 2017-09-05 21:41

相关推荐

  • linux运维

    linux运维大纲,学习路线图

    Linux干货 2017-10-21
  • N23-第一周博客作业

    一、计算机组成 由五大基本部件【运算器 + 控制器 + 储存器 + 输入设备 + 输出设备】组成且遵循冯诺依曼体系,CPU包含运算器和控制器两大部件。 CPU: 核心部件:运算器、控制器 其他部件:寄存器、缓存、等等 存储器:内存,RAM(Random Access Memory)随机访问存储器。 Input(输入设备):下指令,提供数据等,如:硬盘、键盘、…

    Linux干货 2016-09-15
  • Linux下inode理解及软、硬链接初探

    1、Inode是什么? 要理解inode,要从文件储存说起。 文件由元数据和数据构成。 文件储存在硬盘上,最小的存储单位叫做“扇区(Sector)”。每个扇区存储512字节。操作系统读取硬盘时,不会一个扇区一个扇区地读取,这样非常低效;而是一次性连续读取多个扇区,即一次性读取一个“块(block)”。“块”由多个扇区组成,常见的大小有1K、2K、4K等,其中…

    Linux干货 2016-07-29
  • System作业

    1、求每班总成绩和平均成绩 [root@Centos7 bin]# awk '!/^name/{a[$2]++;b[$2]+=$3}END{for(i in a){print i,b[i],b[i]/a[i]}}' f1 4 100 50 5&nbs…

    Linux干货 2016-09-20
  • ACL实现灵活的权限管理

    ACL实现灵活的权限管理 除了文件的所有者,所属组和其它人,可以对更多的用户设置权限 CentOS7当中,无论是操作系统安装时还是之后手工创建的文件系统(xfs、ext4)均会开启ACL功能。 CentOS6及之前的版本,仅操作系统安装时创建的文件系统才会默认开启ACL,手工创建的文件系统,需要手工开启ACL功能。 mount -o acl /dev/sda…

    2017-07-27
  • 实现基于MYSQL验证的vsftpd虚拟用户

    马哥教育面授21期 运维 vsftpd MySQL 说明:本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库服务器 一、安装所需要包和包组: 在数据库服务器上安装包: yum –y install mariadb-server mariadb-devel systemctl start mariad…

    Linux干货 2016-12-21