1. 4K扇区

磁盘的高级格式(Advanced Format)使用4K作为扇区的大小(至少,第一代Advanced Format就是指4K扇区)。传统磁盘的扇区大小是512B。有什么问题呢?这得从扇区的结构说起:磁盘上的扇区不是一个接一个紧密排列的,相邻的扇区之间有一个间隙(gap),并且每个扇区前面有一个sync字段和一个address mark字段,接着才是我们所知的512B数据(data),后面还有一个纠错码ECC(error correcting code)。并且: g a p + s y n c + a d d r e s s m a r k = 15 B gap+sync+address mark = 15B gap+sync+addressmark=15B d a t a = 512 B data = 512B data=512B E C C = 50 B ECC = 50B ECC=50B
这样,磁盘空间的利用率是: 512 15 + 512 + 50 = 88.7 % \dfrac{512}{15+512+50}=88.7\% 15+512+50512​=88.7%
显然,增大扇区可以提高空间的利用率。另外,由于纠错码ECC只有50B,纠错算法也受限,无法使用更高级的纠错算法来提高磁盘的可靠性。于是,2010年的时候,International Disk Drive Equipment and Materials Association (IDEMA)完成了一个新的标准:采用4096B作为扇区大小,并且把ECC增大到100B。虽然ECC增大了,但现在一个扇区相当于原来的8个扇区,空间利用率还是提高了: g a p + s y n c + a d d r e s s m a r k = 15 B gap+sync+address mark = 15B gap+sync+addressmark=15B d a t a = 4096 B data = 4096B data=4096B E C C = 100 B ECC = 100B ECC=100B
那么,磁盘空间利用率是: 4096 15 + 4096 + 100 = 97.3 % \dfrac{4096}{15+4096+100} = 97.3\% 15+4096+1004096​=97.3%
从下面一图一表(来自维基百科)我们可以看的更直观。

Description 512B section 4096B sector
gap,sync,address mark 15B 15B
user data 512B 4096B
error correcting code 50B 100B
total 577B 4211B
efficiency 88.7% 97.3%


总结来说:引入4K扇区有两个好处:

  • 提高空间利用率;
  • 可以引入更高级的纠错算法,来提高磁盘的可靠性;

2. 物理扇区和逻辑扇区##

历史原因,又是历史原因,给这个看上去很好的优化带来很多麻烦。因为直到现在,还有很多硬件、软件系统是基于512B的扇区设计的,包括芯片组,操作系统,数据库引擎、磁盘分区工具、文件系统等。为了和现有系统兼容,就引入物理扇区和逻辑扇区的概念。

  • 物理扇区是磁盘驱动器读写的最小单元,也就是说,操作系统读写100B,磁盘驱动器也必须读写一整个扇区。
  • 逻辑扇区是磁盘的firmware模拟出来的操作系统看到的扇区。比如,为了兼容老的软硬件系统,很多4K扇区的磁盘(512e类型,见下文4K扇区磁盘的分类),都模拟512B扇区。

3. 4K扇区磁盘的分类

3.1 4K native

简写为4Kn,这类磁盘firmware里不会把4K的物理扇区模拟成512B的逻辑扇区,也就是说,外部可见的逻辑扇区直接映射到内部的物理扇区。自从2014年开始,企业级的4K native磁盘已经在市场上流通了。这类磁盘的logo如下:

但,由于4Kn不能兼容512B扇区的软硬件系统,它的使用并不广泛。虽然Windows(Windows8和Windows Server 2012)和Linux(自从kernel 2.6.31)都支持4Kn的磁盘,然而很多操作系统不能从4Kn磁盘引导(见这里和这里),这些磁盘通常作为外部存储使用。
3.2 512e

为了向下兼容,磁盘提供商在firmware里模拟512B扇区,目前这也是事实上的标准(见这里)。这类磁盘被叫做Advanced Format 512e, 或者512 emulation磁盘。它的logo如下:

4096B扇区和512B扇区之间的转换是磁盘的firmware完成的,对外界透明,也就是说,可以像读写传统磁盘一样来读写512e磁盘,如下图所示:

比如,操作系统读取512B数据,磁盘驱动器会:

  1. 读取目标扇区4096B;
  2. 从中抽取被读取的512B返回给操作系统;

对于读操作来说,这个过程带来的性能损失很小,可以忽略不计。但是对于写操作,问题就麻烦了。操作系统写512B数据,磁盘驱动器必须采用“读-修改-写”(RMW: Read-Modify-Write)的方式:

  1. 读取目标扇区4096B;
  2. 修改其中的512B;
  3. 把目标扇区写回;

可以预见,这种方式有明显的性能影响。但是,假如操作系统写入的要是整个4K,并且和一个扇区对齐,那么就不必采用RMW的方式了,性能的影响可以规避。

4. 分区对齐##

为了避免RMW带来性能损耗,最好能做到如下两点:

  • 写入大小是4K的整数倍;
  • 写入边界和物理扇区边界对齐;

Linux系统已经作了优化:

  • 尽量写入4K的整数倍;
  • 尽量和分区对齐。

注意第二点,这要求分区和物理扇区是对齐的。假如分区和物理扇区没有对齐,而每个写操作和分区又是对齐的,导致的结果是,每个写操作恰恰和物理扇区没有对齐。如下图所示:

可见,系统IO-1和系统IO-2和分区是对齐的。但是,分区和物理扇区没有对齐,导致磁盘IO-1和磁盘IO-2都没对齐,并且每个磁盘IO需要两次RMW,共4个RMW才能完成。所以,分区和物理扇区的对齐至关重要。parted可以检查已有分区是否对齐;并且在做新分区时,若没对齐,也会得到警告。

Advanced Format (4K扇区) 磁盘相关推荐

  1. linux 4k 原理,linux – mdadm和4k扇区(高级格式)

    Serverfault上有很多关于对齐4k扇区磁盘的问题,但有一件事对我来说还不是很清楚. 我成功对齐了我的RAID1 LVM.我做的一件事是使用mdadm superblock version 1. ...

  2. 浅析 “ 4k扇区” 亲测 “4k对齐” 提升硬盘性能

    转帖请注明太平洋及作者!!! 谢谢 亲身体验"4k对齐"带来硬盘提升快感,分享悲催笔记本经历!(这不是一个教程或测评!但我可以保证他的真实性!并保证是在下原创!)       首先 ...

  3. 扇区 linux,4KB 扇区磁盘上的 Linux:实际建议

    为何更改为 4096 字节扇区? 如果您熟悉磁盘结构,就知道磁盘是被分解成扇区 的,大小通常是 512 字节:所有读写操作均在成倍大小的扇区中进行.仔细查看,就会发现硬盘事实上在扇区之间包括大量额外数 ...

  4. gpt分区 linux 4k对齐,磁盘对齐与4K对齐

    什么是磁盘分区对齐(Disk Alignment.Partition Alignment): Windows的磁盘有一种结构叫做Master Boot Record(MBR), 它的默认大小为63个B ...

  5. 使用DiskGenius进行分区4K扇区对齐检测

    4K对齐相关联的是一个叫做"高级格式化"的分区技术."4K对齐"就是符合"4K扇区"定义格式化过的硬盘,并且按照"4K 扇区&qu ...

  6. 在4k扇区的磁盘上执行dbca会报ORA-27047 错误

    2019独角兽企业重金招聘Python工程师标准>>> 就是在12.2之前版本不支持windows下4k sector原生磁盘,解决办法,修改为非原生磁盘,或等待12.2 具体: D ...

  7. linux内存与扇区,磁盘的基础知识——扇区、柱面、磁道、族

    磁盘的物理结构 磁盘是由若干块坚硬金属材料制成的并涂以磁性介质的盘片压制而成.每个盘有两面,每面各有一个磁头,都可记录信息.要了解硬盘的物理结构,需要弄懂磁道.扇区.柱面.簇等几个概念. 磁道:磁盘上 ...

  8. 高级格式化 4K 扇区硬盘的介绍

    文章目录 背景 硬盘对 AFD 4K 支持 支持AFD分三类 看硬盘上的logo 在OS层检查 网上卖的盘 对缺少 4Kn的困惑 512e的坑 在512e的硬盘上扇区的read-modify-writ ...

  9. 手机4k读写速度测试软件,4K扇区速度测试及读写IOPS_Intel 520_固态硬盘评测-中关村在线...

    AS SSD Benchmark是一个专门为SSD测试而设计的软件.可以测试出固态硬盘的持续读写性能,包括4KB小文件的传输性能等等,成绩显示可以分为两种,一种是MB/S的形式,另一种是IOPS形式. ...

最新文章

  1. window.addeventlistener 不能调用方法_方法入门(基础篇五)
  2. Drozer快速使用指南
  3. WebSocket 是什么原理?为什么可以实现持久连接?什么情况使用WebSocket
  4. mysql limit acs_mysql查询操作
  5. 前端学习(2025)vue之电商管理系统电商系统之渲染订单列表数据
  6. php excel sheet,phpexcel来做表格导出(多个工作sheet)
  7. python缺失值处理 fillna能否用scala来处理_数据清洗(一)丨处理缺失数据
  8. eclipse新建服务器项目,使用eclipse快速新建spirngboot项目的方法
  9. 【彻底解决】django migrate (mysql.W002) 【专治强迫症】
  10. mysql连接不用数据库名称_C++连接MySQL数据库
  11. 继承ActionSupport例子
  12. 2019,边缘计算人在看什么书?
  13. 计算机音乐简谱网红歌曲,2020抖音网红歌曲40首 2020抖音最新歌曲100首BGM
  14. 宝塔面板无法连接FTP空间解决方法(超详细)
  15. outlook qr码在哪里_原平防伪码溯源_橙程(北京)科技有限公司
  16. 2020计算机科学第五轮评估,第五轮学科评估启动,这些非“双一流”建设高校可能获得A+学科...
  17. TO DO ... ...
  18. 【Leetcode-算法】844. 比较含退格的字符串(C++)
  19. Python打印输出的方法
  20. FC12下OKL4编译环境的搭建

热门文章

  1. 简单的照片人物美白教程
  2. 神雕侠侣手游服务器维修到多久,神雕侠侣5月23日更新维护及开服公告!
  3. 吃了大力丸的Ruby 2
  4. 中国建设银行湖南省分行党委委员、副行长戴建军一行到访麒麟信安,进一步推动金融服务合作
  5. 《无线神经调节的微创技术治疗慢性顽固性疼痛:初步观察报告》
  6. python二级考试操作题10_python二级考试试题10.doc
  7. 推荐 8 个支持 Vue3 的前端 UI 组件库,免费开源、漂亮美观,涵盖常用的业务组件
  8. 一个拿来即用的httputil工具类
  9. 球队至少需要多少分可以出线,最多有多少分未出线
  10. 19年上海计算机本科生工资,高校发布2019届毕业生就业质量报告:毕业生薪资普涨...