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)

……

Linux根文件系统结构再认识相关推荐

  1. linux+网络根文件系统,认识Linux根文件系统结构

    INTRO 认识Linux根文件系统结构,尽管Linux的根文件系统在形式表现上是一体的(所有数据目录均为根目录下的子目录),但实际它们是多个不同的[逻辑主体](为了实现不同的逻辑 功能)组合在一起的 ...

  2. 4、Linux的文件系统结构(目录树结构)

    2019独角兽企业重金招聘Python工程师标准>>> Linux的文件系统结构 顶端的"/"这个称为根目录,逻辑上所有东西都隶属于根目录 但是存储空间可以另外划 ...

  3. linux根文件系统配置,嵌入式Linux的Cramfs根文件系统配置的解决方案

    1 引言 随着电子产业的不断发展,基于 ARM 技术的系统设计和开发平台越来越多地在控制 类.消费类.通信类等电子产品中广泛应用.从软件角度上看,构建基于ARM 技术的linux 系统要涉及到引导加载 ...

  4. Linux 根文件系统目录结构与功能,4.Linux根文件系统和目录结构及bash特性

    4.1Linux目录结构和根文件系统全面讲解 Linux文件系统: Linux:glibc 程序编译方式: 动态链接 静态编译 进程的类型: 终端:硬件设备, 关联一个用户接口 与终端相关:通过终端启 ...

  5. Linux的文件系统结构

    1.硬盘结构 磁盘的内部并不是真空的,只是空气很干净:利于散热 文件系统结构,理解文件系统,就得从文件存储说起 磁盘的专业术语 磁盘的内部是金属片,将原型的盘片分成若干个扇形区域, 若干个扇区就组成一 ...

  6. Linux根文件系统介绍

    系统 根文件系统首先是一种文件系统,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后 ...

  7. linux根文件系统目录结构

    一.介绍 linux根文件系统也就是我们平时所说的rootfs,所有的文件都要在文件系统下才能被识别,包括所有的配置文件,这里介绍一下根文件系统目录结构 二.总统结构 /bin:linux的常用命令 ...

  8. linux根文件系统配置,Linux学习笔记__ Linux根文件系统详解

    Linux根文件系统详解 文件系统: rootfs:根文件系统 FHS:Linux boot:系统启动相关的文件,如内核.initrd.以及grub(bootloader) /dev: 设备文件 块 ...

  9. linux根文件分析,Linux根文件系统详解

    文件系统: rootfs:#根文件系统 FHS:Linux /boot:#系统启动相关的文件,如内核.initrd,以及grub(bootloader) /dev:#设备文件 块设备:随机访问,数据块 ...

最新文章

  1. TinyML:下一轮人工智能革命
  2. 微软经典案例系列课程(视频课程讲师:杨丹)
  3. curl 支持ws吗_curl 支持 http2
  4. Little Sub and AA
  5. 安装mysql 图_如何在Windows下安装MYSQL,并截图说明
  6. java实用教程——组件及事件处理——对话框(颜色对话框,自定义对话框)
  7. Java 并发编程之可重入锁 ReentrantLock
  8. matlab中K=[K,temp]含义
  9. 抽象代数的人间烟火——北航李尚志
  10. WPS和Office 字体乱码问题
  11. 淘宝宝贝商家编码 管理好你的宝贝
  12. 推荐一款免费的万能电子书格式转换工具电子书转换器NeatConverter
  13. selenium IED安装
  14. tipask 不能正常解析
  15. ros中的velocity smoother详细分析
  16. Dbeaver Phoenix 各种报错
  17. 弹跳蚂蚱 Jumping Grasshopper
  18. 华为FreeBuds Pro2+和pro2区别哪个好
  19. IntelliJ IDEA 自动导包设置以及idea import导包顺序Java
  20. winscp 进入mysql命令_WinSCP命令行操作

热门文章

  1. classpath: spring 中的查找方式
  2. 软件工程进度条-第十五周
  3. 在UltraEdit的查找和替换中使用正则表达式 (转)
  4. Angularjs controller之间的通信
  5. layout_gravity
  6. MySQL关联left join 条件on与where不同
  7. 以ThreadStart方式实现多线程
  8. 124angular1实现无限表单(仅供自己看)
  9. unity深度查找某个子物体和遍历所有子物体方法
  10. Redis学习笔记--Redis数据过期策略详解==转