什么是文件系统,引用百科解释:

  操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

文件系统是操作系统核心的组成部分,没有它我们无法完成对文件的增、删、改、查等基本操作

概念

  在了解文件系统之前我们需要了解一些基本概念

  • inode 索引节点 (index node)

  我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block)

  数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息

  在 Linux 中,元数据中的 inode 号才是文件的唯一标识而非文件名,文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块

  • block data(数据块)

    数据块即真正存储用户数据的地方

    每个数据块大小固定相等(1024或者4096)字节

    数据块中主要存储的数据是 文件、目录文件

  • dir_entry(目录结构 / 目录条目 / 目录文件)  

    目录结构实质也是一个数据块,该数据块类似于一个表格,记录当前目录下对应的文件名,和文件名对应的inode

  • block bitmap(块位图)

  在每个分区的数据的储存区是由一个又一个的数据块(data block)组成,在用户需要存储新的数据时需要遍历整个分区的数据块,这显然是非常耗时的,所以每个分区都存在一个快位图,每一个数据块在块位图中都存在一个标识符(1个bit),用于表示该块当前储存状态,在存入新数据时只需要遍历块位图就能快速找到空闲的数据块

  • inode bitmap(inode位图)

    inode在磁盘格式化完成后就已经完成分配,每个inode都有固定且唯一的ID

    inode_map中每一位对应一个inode节点,标识其是否可用,每一位占用一个字节

    inode_map大小通常与一个数据块的大小一样

  • block group(块组)

     文件系统将一个分区逻辑分成多个块组,每个块组都有其独立的 data block区、block bitmap、inode bitmap、inode区

    具体分为多少组取决于分区大小,以及每个数据块大小

    文件可以跨组保存

  • 超级块

    每个分区都有一个数据块来保存当前分区全局信息,每个块组中备份有一个

    超级块中描述了每个分区包含多少块组、每个块组包含多少块、每个块的大小、空闲磁盘块、引用磁盘块、空闲inode、引用inode

  • 块组描述符(GDT : group descrpition table)

      保存着当前分区有多少个块组,每个块组的起始位置

  • boot block (引导块)

    任何分区的第一个块是boot block , 不能被使用

    如果在当前分区装有操作系统,boot load 需要放在 boot block

    开机是由MBR调用

    

那文件系统又是如何查找文件的呢?

例如想要找到 /log/var/log/message 文件,如下图

找到根目录inode(自引用) -- 根目录数据块 -- var目录inode -- var目录数据块 -- log目录inode -- log目录数据块 -- message文件inode -- message文件

虚拟文件系统(VFS)

文件系统(File System)的更多相关文章

  1. 在 Linux 中,最直观、最可见的部分就是 文件系统(file system)

    在 Linux 中,最直观.最可见的部分就是 文件系统(file system).下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想.这些思想中有一些来 ...

  2. [Objective-C] 013_文件系统(File System)

    在前面三篇关于数据持久化,我们都用涉及到文件(plist文件,数据库文件),它们都是把它们存储在document目录下.iOS的文件机制是沙盒机制,应用只能访问自己应用目录下的文件.iOS应用产生的内 ...

  3. 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]

    1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...

  4. [CareerCup] 8.9 An In-memory File System 内存文件系统

    8.9 Explain the data structures and algorithms that you would use to design an in-memory file system ...

  5. KASS分布式文件系统(Kass File System)

    KASS分布式文件系统(Kass File System),简称KFS,是开始公司自主研发的分布式文件存储服务平台.KFS系统架构及功能服务类似Hadoop/GFS/DFS,它通过HTTP-WEB为上 ...

  6. NFS - Network File System网络文件系统

    NFS(Network File System/网络文件系统): 设置Linux系统之间的文件共享(Linux与Windows中间文件共享采用SAMBA服务): NFS只是一种文件系统,本身没有传输功 ...

  7. HTML5之本地文件系统API - File System API

    HTML5之本地文件系统API - File System API 新的HTML5标准给我们带来了大量的新特性和惊喜,例如,画图的画布Canvas,多媒体的audio和video等等.除了上面我们提到 ...

  8. File System 之本地文件系统

    上一篇文章提到了,最近做一个基于 File System/IndexedDB的应用,上一篇是定额和使用的查询. 因为LocalFileSystem只有chrome支持,有点尴尬,如果按需加载又何来尴尬 ...

  9. [LeetCode] Design In-Memory File System 设计内存文件系统

    Design an in-memory file system to simulate the following functions: ls: Given a path in string form ...

  10. 云服务器 linux文件系统异常an error occurren during the file system check导致服务器启动失败

    云服务器 linux文件系统异常an error occurren during the file system check导致服务器启动失败 文件系统宕机,重启后报错,无法启动 处理流程: 1.编辑 ...

随机推荐

  1. [蓝桥杯]ALGO-81.算法训练_动态数组使用

    从键盘读入n个整数,使用动态数组存储所读入的整数,并计算它们的和与平均值分别输出.要求尽可能使用函数实现程序代码.平均值为小数的只保留其整数部分. 样例输入: 样例输出: 样例输入: 样例输出: 题目 ...

  2. SpringSecurity-ConcurrentSessionFilter的作用

    ConcurrentSessionFilter主要有两个功能: (1)每次request时调用SessionRegistry的refreshLastRequest(String)更新session的最 ...

  3. PAT 乙级 1026 程序运行时间(15) C++版

    1026. 程序运行时间(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 要获得一个C语言程序的运行时间, ...

  4. 使用 Spring Cloud 和 Docker 构建微服务架构

    如何使用Spring Boot.Spring Cloud.Docker和Netflix的一些开源工具来构建一个微服务架构. 本文通过使用Spring Boot.Spring Cloud和Docker构 ...

  5. 去除图像中的alpha通道或透明度

    自从appstore提交app改变后,虽然提交的流程还是和原来一样,但是相比以前还是有很大的改动,本来就不太喜欢 English,改版之后很多东西都变了,开发一个app就已经够他妈的蛋疼啦,上传一个a ...

  6. html地址--待更新

    11.学习笔记: 视频直播技术:ijkplayer技术:jni技术: https://www.cnblogs.com/renhui/category/1011048.html: IM:环信, xmpp ...

  7. Android知识点textview加横线的属性

    textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线 textView.getPaint().setAntiAlias(tr ...

  8. AD中常用的命令

    1:查看客户机使用哪台DC进行登录的:在客户端cmd下运行 set命令可以查看使用哪台DC登录. 2:使用命令把客户端加入到域 netdom join  fs01 /domain:contoso.co ...

  9. 关于Element UI中页面样式小问题

    一,修改组件dialog窗口的大小 二,在我使用upload组件上传一张美女图片时,发现当预览图片时,图片是灰色的,点击一下才会变亮,这种效果使我很不舒服,于是我通过添加下面的一条样式,问题解决了(可 ...

  10. Linux聚合网络

    Linux聚合网络 作者:Eric 微信:loveoracle11g 链路聚合 [root@server1 ~]# ifconfig | grep eno [root@server1 ~]# ls / ...