本文转载自:https://blog.csdn.net/jhndiuowehu/article/details/50788287

一.基本概念:

     1.block:文件系统中存储数据的最小单元,ext3文件系统中,创建时默认4k,分为存储文件数据的data block和存储目录数据的directory block
     2.inode:又称“索引节点”,每一个inode对应一个文件或目录,记录了文件的大小、所占用的block以及目录的directory block信息。
    3.Inode Bitmap:翻译成中文就是“inode位图”,用二进制的方式记录了inode的使用情况。
    4.Block Bitmap:翻译成中文就是“块位图”,同Inode Bitmap,用二进制方式记录了块的使用情况。
    5.super block:超级块包含了该硬盘或分区上的文件系统的整体信息,如文件系统的大小等。
二.工作原理
    这里使用几个常用的操作来解释这几个文件系统组件的工作机制。
    1.    读取文件
            以读取/tmp/test文件为例,流程如下图:
                                        
             共分为以下几步:
                  (1)启动系统时,自动加载“/”目录的inode。
                  (2)根据该inode,找到“/”目录的directory block,从而定位到“/”目录文件。
                  (3)根据“/”所在的block,定位到“/”目录文件,该文件中记录了"/tmp"目录文件的名称和inode。
                  (4)根据(3)中找到的inode,找到"/tmp"目录文件,其中记录了“test”的文件名和inode。
                  (5)同理,根据(4)中找到的inode,定位到“test”的data block,从而可以访问test文件。
            注:所谓一切皆文件,连目录也是文件,该文件记录了里面的一级子目录和文件的名称和inode,所谓cd进这个目录,其实就是执行该目录文件,ls则读取该目录文件,创建一个文件或子目录,则意味着向该文件中写入有关该文件或目录所对应的条目。
    2.创建文件,删除文件
              (1)  创建文件
                      创建文件,其实就是根据inode位图和block位图,确定哪写inode和block是空闲的,然后分别向这些block中写入数据,同时,将整个文件(可能是多个block) 对应一个空闲的inode。 如下图(这里“1”表示空闲,“0”表示占用,可能不准确~),这样,访问inode"E"定位到A块、C块、E块,实现了访问“test文件”。
                                      
               (2) 删除文件
                        删除文件,其实就是把block位图和inode位图的相关位置成空,相当于不被占用,注意:数据还在,下次创建文件时,覆盖原已清空block位图和inode位图的文件的数据。
            

block(data block,directory block)、inode、块位图、inode位图和super block概念详解【转】的更多相关文章

  1. Linux文件系统属性和权限概念详解(包含inode、block、文件权限、文件软硬链接等)

    Linux中的文件属性 ls -lih 包括:索引节点(inode),文件类型,权限属性,硬链接数,所归属的用户和用户组,文件大小,最近修改时间,文件名等等 索引节点:相当于身份证号,系统唯一,系统读 ...

  2. 【Big Data - Hadoop - MapReduce】通过腾讯shuffle部署对shuffle过程进行详解

    摘要: 通过腾讯shuffle部署对shuffle过程进行详解 摘要:腾讯分布式数据仓库基于开源软件Hadoop和Hive进行构建,TDW计算引擎包括两部分:MapReduce和Spark,两者内部都 ...

  3. (转) html块级元素和内联元素区别详解

    http://blog.csdn.net/chen_zw/article/details/8713205 块级元素(block)特性: 总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显 ...

  4. html块级元素和内联元素区别详解

    块级元素(block)特性: 总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示; 宽度(width).高度(height).内边距(padding)和外边距(margin)都可控制; ...

  5. 监控hdfs 块迁移数量脚本及 metasave 日志内容详解

    把以下脚本配置到 crontab 下 ,10分钟一次,进行打点,记录复制块的进度. 想让节点快速退役(下线)的方法可以参考我的 https://www.cnblogs.com/jiangxiaoxia ...

  6. OpenGL之位图的绘制和gluOrtho2D等函数详解

    位图绘制 先来段代码吧: #include <iostream> #include <gl/glut.h> using namespace std; #pragma comme ...

  7. Linux_僵尸进程、挂载、block块、inode号

    僵尸进程: 基本概念: 进程分为父进程和子进程 父进程一死 子进程都会死 杀死主进程的时候  子进程也会被杀死 僵尸进程:主进程被杀死了  但是子进程还活着    子进程不会占用cpu但还是会占着内存 ...

  8. Oracle corrupt block(坏块) 详解

    转自:http://blog.csdn.net/tianlesoftware/article/details/5024966 一. 坏块说明 1.1 相关链接 在看坏块之前,先看几个相关的链接,在后面 ...

  9. Linux 文件的详解[分类/扩展名/inode/block]

    关于Linux文件的介绍 Linux里文件扩展名和文件类型没有关系,Linux系统中一切皆文件 关于Linux文件分类 纯文本文件(可以cat的)     二进制文件(Linux的可执行文件等,如/b ...

随机推荐

  1. vs2010中显示行号

    vs2010中显示行号 工具-->选项-->文本编辑器-->所有语言-->行号~ok

  2. sourcenav安装

    $ ./configure之后会出现 configure: error: ./configure failed for unixconfigure: error: ./configure failed ...

  3. css 变手

    用css 添加手状样式,鼠标移上去变小手,变小手 用css 添加手状样式,鼠标移上去变小手,变小手 cursor:pointer; 用JS使鼠标变小手onmouseover(鼠标越过的时候) onmo ...

  4. Linux 进程(二):进程关系及其守护进程

    进程关系 进程组 进程组是一个或多个进程的集合.通常,它们是在同一作业中结合起来的,同一进程组中的各进程接收来自同一终端的各种信号,每个进程组有一个唯一的进程组ID.每个进程组有一个组长进程,该组长进 ...

  5. 从网上搜索到的一些关于pcap源代码,入门级的

    /*pcap_1.c*/ #include <stdio.h>#include <stdlib.h>#include <pcap.h>  /* 如果没有pcap的系 ...

  6. docker-compose安装confluence

    1.首先安装docker-compose   pip install docker-compose       安装完成提示:         2.编写mysql-confluence-compose ...

  7. 自制的几个jquery插件

    1.颜色插件,比用css方便些 //1.插件编写 ;(function ($) { $.fn.extend({ "color":function(value){ return th ...

  8. 你意识到苹果公司已经抛弃了GC吗?

    为什么移动Web应用程序很慢(译) - tangzhnju - 博客园 http://www.cnblogs.com/codemood/p/3213459.html

  9. 【python】-- Django Form

    Django  Form Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容(自定义样式) 一.F ...

  10. Nuxt使用element-ui

    废话不多说,在Nuxt中引入Nuxt其实很简单,分下面几步 一.安装element-ui依赖 打开nuxt项目以后,在Terminal中通过 npm i element-ui -S 即可安装eleme ...