Ext4系统从设计上就认为数据局部性是文件系统的文件系统的一个理想品质。

在机械硬盘上,相关联的数据存放在相近的blocks上,可以使得在访问数据时减少磁头驱动器的移动距离,从而加快IO访问。

在SSD上,没有像磁头一样的移动组件。但是数据局部性可以增大请求大小从而降低请求数量。同时可以尽可能的集中擦写块,从而提高重写速度。对减少碎片也很有帮助。

Ext4解决碎片问题的第一个方法是,multi-block allocator。当创建文件时,块分配器会分配8K的磁盘空间给文件,当然,这样做有个假定——8K空间很快被写数据。当文件被关闭后,没有使用的空间会被释放掉。但是,如果这种推测(就是刚才的假定)是正确的,那么这块数据就被写入了这个简单的extent(8K空间)中。

Ext4解决碎片问题的第二个方法是,delayed allocation。根据这个策略,当文件需要更多的块进行写操作时,文件系统会推迟确定在磁盘上的写入位置,直到脏数据要写入磁盘。除非必要,否则不写入磁盘(Timeout或sync或内核out of memory)。这样可以更好的是文件进行位置决策。

Ext4解决碎片问题的第三个方法是,尽可能使得一个文件的数据和其inode在相同的块组中。这种方法减少了data寻址耗时。特别是刚刚读取inode后就访问数据这种场景。

Ext4解决碎片问题的第四个方法是,整个卷被分割为大小为128M的groups。这样可以最大限度的保证数据局部性。然而,当在根目录创建文件时,inode分配器会扫描块组,从inode最空闲的group中分配inode空间。这种方式会扫描整个卷。但是一般而言,都是按照顺序往下创建的。

转载于:https://www.cnblogs.com/youngerchina/p/5624481.html

[ext4]07 磁盘布局 - 块/inode分配策略相关推荐

  1. EXT4文件系统磁盘分布和部分特性介绍

    1.ext4 磁盘布局 先说一下使用的emmc配置:大小:30253514752bytes,28G,块大小4096.以下布局皆以此为基础 2.sparse_super 效果为:超级块和GDT备份只出现 ...

  2. 《深入理解Java虚拟机》-----第3章 垃圾收集器与内存分配策略

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的"高墙",墙外面的人想进去,墙里面的人却想出来. 3.1 概述 说起垃圾收集(Garbage Collection,G ...

  3. 第三章 垃圾收集器与内存分配策略

    第三章 垃圾收集器与内存分配策略 前言: 3.1 概述 3.2 对象已死? 3.2.1 引用计数算法 3.2.2 可达性分析算法 3.2.3 再谈引用,四种引用类型 3.2.4 生存还是死亡 3.3 ...

  4. Linux入门之磁盘管理与inode表和group表(详解)(CentOS)

    磁盘管理 设备分类 字符设备 块设备 硬盘分类 机械硬盘 固态硬盘 区别 磁盘分区 分区方式 MBR分区 示例 GPT分区 BIOS+MBR与UEFI+GPT 文件系统 文件系统分类 mkfs命令 i ...

  5. Kafka 原理以及分区分配策略剖析

    欢迎关注方志朋的博客,回复"666"获面试宝典 ‍ ‍一.简介‍ ‍ Apache Kafka 是一个分布式的流处理平台(分布式的基于发布/订阅模式的消息队列[Message Qu ...

  6. Memcache 内存分配策略和性能(使用)状态检查

    一直在使用Memcache,但是对其内部的问题,如它内存是怎么样被使用的,使用一段时间后想看看一些状态怎么样?一直都不清楚,查了又忘记,现在整理出该篇文章,方便自己查阅.本文不涉及安装.操作.有兴趣的 ...

  7. 操作系统:第三章 内存管理2 - 详解虚拟内存,页面置换算法,页面分配策略

    本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...

  8. JAVA虚拟机之垃圾收集与内存分配策略

    最近再看<深入理解JAVA虚拟机>周志明写的第二版.现将学习笔记分享出来,方便日后复习,理解有误的地方欢迎指正! 1.运行时数据区: 程序计数器:一块较小的内存空间,保存当前线程所执行的字 ...

  9. JVM垃圾收集器与内存分配策略学习总结

    方法区: 1.线程共享 2.储存类信息,常量,静态变量,编译器编译后的代码 3.非堆(别名)用于区分Java堆 4.不需要连续的内存 5.可以固定或可扩张 6.选择不实现垃圾回收//这个区域很少进行垃 ...

最新文章

  1. 【FFmpeg】使用过的命令汇总(持续更新中...)
  2. 10.基于Tomcat的SmartUplaod文件上传
  3. 090_块元素行内元素行内块元素空元素
  4. win11安装chocolatey软件包管理工具(win版)
  5. 探究java-JVM的五步(三步)类加载机制(包含类加载过程的一些代码书写,如类加载代码)
  6. OSGi Bundle之Hello World
  7. NMOS管和PMOS管开关控制电路原理及应用
  8. Medusa(美杜莎)--参数及常见命令
  9. ARM CHI总线笔记
  10. 史上最通俗易懂的理解云计算
  11. java登录无线路由器_路由器的使用
  12. veu3.0 入门到精通
  13. 配置完python环境后输入命令显示缺少python27.dll解决办法
  14. Spring Boot DAY03 配置文件的注入
  15. JVM 年轻代和年老代 大小设置
  16. xls文件的上传和下载
  17. 又一国产开源项目走向世界,百度RPC框架Apache bRPC正式成为ASF顶级项目
  18. 深圳软件测试培训:DOM节点
  19. 动态库与静态库的区别是什么
  20. webpack的devtool

热门文章

  1. 关于学生信息录入(文件操作)的心得体会
  2. java 微信转账_实现微信转账功能
  3. java 获取包名类名_获取指定包名下的所有类的类名(全名)
  4. 判断文件是否损坏_判断Excel文件是否已打开
  5. 002_JSONObject、JSONArray和JsonConfig对象简单使用
  6. 007_JavaScript关键字和保留字
  7. 066_xhtml简介
  8. 修改php.ini参数,为何建议用ini_set()代替直接修改php.ini参数
  9. linux系统在硬盘上安装程序,在硬盘中安装Linux操作系统最简单的方法
  10. java 等待_Java并发之等待/通知机制