Linux根文件系统结构再认识

Linux根文件系统结构再认识
刘建文(http://blog.csdn.net/keminlau )

INTRO

尽管Linux的根文件系统在形式表现上是一体的(所有数据目录均为根目录下的子目录),但实际它们是多个不同的【逻辑主体】(为了实现不同的逻辑功能)组合在一起的,参见下图。这也解释了为什么有些节点(如/var)可以挂接到不同磁盘分区上。划分这些逻辑部分对清晰把握根文件系统结构,以及整个系统的行为都有很大的好处。在划分之前,先看看“文件系统结构标准”。

 

文件系统结构标准

文件系统结构标准 (Filesystem Hierarchy Standard,下称FHS)定立的目标之一是,程序可按用途性质被安装到指定的位置,用户也能预知程序的安装的文件和目录的位置。FHS通过定义文件系统各部分的涵义、用途,再加上列举所有的特殊情况,如历史遗留问题,达到了这个目标。

LINUX系统的数据文件可以根据【双重标准】来对它们分类:共享的与独享的(shareable vs. unshareable)、变化的和静态的(variable vs. static)。如果数据文件无法按照双重标准分类,它们必须另起目录存放,这样做的原因是可以把不同【使用性质】(usage characteristics)的数据文件分开不同文件系统(磁盘分区)存放。

  • “共享的” (Shareable)是指数据与平台不相关的,如/usr;相反“独享的”(Unshareable)指数据是平台相关的,如配置数据/etc。
  • “静态的”数据是相对非管理员用户而言的,没有更变的权限;而“变化的”则相反。分隔静态与动态数据的目的是为了可把静态数据安装到一个单独的只读的介质(文件系统)中,不必与动态数据一起做频繁的事务管理,比如定期备份。

与数据的【静动态性】面向“用户”不同,数据的【共享专用性】是面向“主机”而言,也就是说,有些数据是本机专用的,而另外一些是多个主机(可是本地的FHS兼容主机,可以是远程主机)共享的。比如根目录分区是本机专用的,而/usr所在分区可共享给多个FHS兼容主机。

双重标准是发展而来的,被纳入FHS,为了支持这个标准,过去默认存放在/usr 、/var、 /etc 等目录的数据都做了相应的调整。

Linux根文件系统逻辑组成

参照FHS,Linux系统按照逻辑功能大致分为以下目录(以具体目录表现逻辑功能,有意思):

  • /
  • /usr
  • /var
  • /opt
  • /home

P.S. 以上目录均可单独安装到一个分区上,最终挂接入根下。

/ (专用的静态的)

根目录的功能由其名可略知,根目录是系统的根本所在(Essential),是系统之所以为本系统的特征表现。也可这样理解,根目录的内容不是可选的,是系统基本功能必备部分。

P.S.如何理解“根本所在”?

我们知道,Linux系统有内核,还会有shell,有gred,还有吗?有vi吧,有GCC吧,有ifconfig吧,还有可能X下大量应用程序。所谓“根本所在”,在内容表现上,就是包括最基本的最通用的部分。当然这部分内容还可能有一些是可选的,这个取决你如何定义基本系统。

根目录的逻辑功能分为两层,第一层是应用的,第二层是管理(administration)的。应用层在上面说了,它用来组成基本系统,包括常用工具(如 ls,放置于/bin),和一些共享库等。第二层是管理用的,对系统进行启动、恢复、修复和配置等。由于根目录是系统的“根本所在”,管理目的,并且是 HOST相关的,如果可以应单独安装在一个尽可能小的分区上。

如何定义基本系统?

由于计算系统基本上是逻辑的,基本系统的定义取决计算任务,而计算任务本身是交错复杂和多样的,所以只能用一个特殊的例子来说明。比如要进行启动、恢复、修复和配置的系统需要些什么?

  • To boot a system, enough must be present on the root partition to mount other filesystems. This includes utilities, configuration, boot loader information, and other essential start-up data.
  • To enable recovery and/or repair of a system, those utilities needed by an experienced maintainer to diagnose and reconstruct a damaged system must be present on the root filesystem.
  • To restore a system, those utilities needed to restore from system backups (on floppy, tape, etc.) must be present on the root filesystem

 

根目录必选组成目录

  • /bin 基本工具或命令
  • /sbin 系统管理工具或命令
  • /etc 主机相关(Host-specific)的配置数据
  • /lib 基本共享库和内核模块
  • /dev 设备文件
  • /boot 引导程序
  • /root 管理员的工作目录
  • /mnt 系统管理员的临时挂接点
  • /tmp 系统级临时文件
  • /media 移动设备挂接点

/usr (共享的静态的)

/usr 目录是系统的一大组成部分。很难用一句说明/usr的用途。不过我们可以透过/usr 的双重标准性质与/和/var对比来理解/usr在系统中的角色。首先,与/相同,/usr是静态的,也就是说/usr下的数据普通用户是不能更改的;但与/不同的是,/usr是共享的,也就可知,/usr下的数据与主机平台不相关的。我们大概知道,/usr与/类似安装有二进制程序、共享库和配置数据,那么从/usr 的双重标准性质可推理得,这些数据及代码都是独立于运行主机的。

而与/var对比呢?/var基本上是动态的和共享的(少量是主机相关的,如/var/log)。/var保存大部分是程序运行期的动态生成数据。

/usr必选组成目录

  • /usr/bin Most user commands
  • /usr/include Header files included by C programs
  • /usr/blib Libraries
  • /usr/local Local hierarchy (empty after main installation)
  • /usr/sbin Non-vital system binaries
  • /usr/share Architecture-independent data

/var

……

/home : User home directories (optional)

……


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Window10上使用Ubuntu终端

在Windows10上使用Ubuntu终端 习惯了ubuntu的开发,回到windows的command可以说是很绝望了。之前偶尔用windows时一直用git-bash来代替。但是发现windows已经添加了对ubuntu子系统的支持,那直接用不是更爽。 1.安装 进入控制面板,开启适用于Li…

为静态博客生成器WDTP移植了一款美美哒主题

前言 关于这个主题的移植后公布,我已经联系了主题作者并取得同意,这个主题是一夜涕所写的Sgreen,预览图见下 关于WDTP 就是一个很方便很便携很快速的cpp编写的带gui跨平台的开源的静态博客生成器,软件作者更新记录在V站可以找到,软…

TCP/IP数据包结构分析

一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解 网络数据包的结构,以及协议分析。如:网络监控,故障排查等…… IP包是不安全的&am…

世界杯快到了,看我用Python爬虫实现(伪)球迷速成!

还有4天就世界杯了,作为一个资深(伪)球迷,必须要实时关注世界杯相关新闻,了解各个球队动态,这样才能在一堆球迷中如(大)鱼(吹)得(特)水…

Bootstrap学习笔记(四)-----Bootstrap每天必学之表单

本文主要讲解的是表单,这个其实对于做过网站的人来说,并不陌生,而且可以说是最为常用的提交数据的Form表单。本文主要来讲解一下内容: 1.基本案例2.内联表单3.水平排列的表单4.被支持的控件5.静态控件6.控件状态7.控件尺寸8.帮助文…

服务器租用单线、双线、bgp 相比有哪些区别优势?

2019独角兽企业重金招聘Python工程师标准>>> 在IDC行业中,服务器的稳定性、安全性是考核服务商的主要指标,影响这两个指标的因素有很多,其中比较重要的有三个,分别是服务器的配置、机房骨干网宽带和机房的线路。我们常…

SQL Server 数据库的维护(四)__游标(cursor)

--维护数据库-- --游标(cursor)-- --概述: 注:使用select语句查询结果的结果集是一个整体,如果想每次处理一行或一部分行数据,游标可以提供这种处理机制。可以将游标理解为指针。指针指向哪条记录,哪条记录即是被操作记…

关于在unity中动态获取字符串后在InputField上进行判断的BUG

今天想做一个简单的密码锁定控制功能,但是出现了问题。我是在游戏开始时读取streamingAsset中的text中的文本,其实就是密码如下图密码是123456789 然后我在程序中输入了该密码出现错误,居然错了。 然后我打印读取的文本信息是什么、没错啊。然…

转载 调用xvid 实现解码

2011-06-01 00:26:14) 转载view plaincopy to clipboardprint? /// intinit_decoder() { intret; xvid_gbl_init_t xvid_gbl_init; xvid_dec_create_txvid_dec_create; memset(&xvid_gbl_init, 0,sizeof(xvid_gbl_init_t)); memset(…

创业感悟:技术兄弟为什么一直没有起来(1)

相信很多做技术的朋友,看到“人脉”两个字,就显得有些敏感,有人甚至产生一种“抵触”的心理。 因为在很多人的心中,会自动的把“人脉”和“关系”关联起来,会把“人脉”与“走后门”,甚至会和“酒桌文化”&…

京东入职一周感悟:4个匹配和4个观点

入职一周啦,随便写点。一、京东之缘1、我和京东之间的4点匹配Ⅰ技术2008年9月到2016年9月,一直坚持自学技术。京东,是一家商业化的互联网公司,有技术积淀,有发挥空间。作为技术人员,职业匹配。Ⅱ读书大学的…

01_SQlite数据库简介

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7023014.html

开发人员MySQL调优-理论篇

2019独角兽企业重金招聘Python工程师标准>>> 修改字符集 查看字符集 show variables like character% show variables like %char% 上面的两个命令都可以,我一般使用的下面的,会出来如下几个字符集设定的选项: character_set_clie…

通过ProGet搭建一个内部的Nuget服务器

.NET Core项目完全使用Nuget 管理组件之间的依赖关系,Nuget已经成为.NET 生态系统中不可或缺的一个组件,从项目角度,将项目中各种组件的引用统统交给NuGet,添加组件/删除组件/以及更新组件即可一键完成,大大提升工作效…

unity官方教程-TANKS(一)

unity官方教程TANKS,难度系数中阶。跟着官方教程学习Unity,通过本教程你可以学会使用Unity开发游戏的基本流程。 一、环境 Unity 版本 > 5.2Asset Store 里面搜索 Tanks!Tutorial ,下载导入 二、项目设置 为了便于开发,很多时候我们选用的…

VS配置本地IIS以域名访问

1.IIS下配置自己的网站,添加主机名 2.修改hosts文件(C://Windows/System32/drivers/etc) 3.VS中配置项目Web服务器(选择外部主机) 转载于:https://www.cnblogs.com/zuimeideshi520/p/7028544.html

Spark RDD/Core 编程 API入门系列 之rdd实战(rdd基本操作实战及transformation和action流程图)(源码)(三)...

本博文的主要内容是: 1、rdd基本操作实战 2、transformation和action流程图 3、典型的transformation和action RDD有3种操作: 1、 Trandformation 对数据状态的转换,即所谓算子的转换 2、 Action 触发作业,即所谓得结果…

灯塔的出现给那些有想法,有能力而又缺乏资金的社区人士提供了一条途径

2019独角兽企业重金招聘Python工程师标准>>> 在上个月,BCH社区传出基于比特币现金的众筹平台Lighthouse(灯塔)正在复活的消息,并且有网友在论坛上贴出了部分网站图片。当消息被证实为真,官网和项目的审核细…

PID 算法理解

PID 算法 使用环境:受到外界的影响不能按照理想状态发展。如小车的速度不稳定的调节,尽快达到目标速度。 条件:闭环系统->有反馈 要求:快准狠 分类:位置式、增量式 增量式 输入:前次速度、前前次速度、前…