叠瓦磁记录(英語:,SMR,直译为分层磁记录),是一种用于硬盘驱动器的磁存储数据记录技术,可提高存储密度和每个驱动器的整体存储容量。

本文主要是介绍叠瓦磁记录(英語:,SMR,直译为分层磁记录),是一种用于硬盘驱动器的磁存储数据记录技术,可提高存储密度和每个驱动器的整体存储容量。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

叠瓦磁记录

叠瓦磁记录(英語:,SMR,直译为分层磁记录),是一种用于硬盘驱动器的磁存储数据记录技术,可提高存储密度和每个驱动器的整体存储容量。 常规的硬盘驱动器通过写入彼此平行而不重叠的磁道来记录数据(垂直磁记录,PMR)。而叠瓦磁记录技术的硬盘写入的新磁道则与先前写入的磁道部分重叠,从而使先前的磁道更窄,因此能拥有更高的磁道密度。由此可以看出,使用叠瓦磁技术的磁道相互重叠,与用作屋顶的瓦片堆叠方式类似。我们之所以能这样做,是因为磁盘写入磁头由于物理上的原因比读取磁头宽上许多,因而由正常方式写入的磁道宽度远比读取磁头所需的磁道宽度来得宽。

随机写入SMR较为困难:写入一个磁道会覆盖下一个磁道上的数据。必須要有管理系統來避免重複寫入。

由于磁道存在重叠,叠瓦磁盘的写入过程较为复杂。如果我们随机写入一个磁道,由于写入磁头的宽度比磁道宽,因此写入会影响到临近磁道;如果这个临近磁道有数据,这些数据就也需要重写以免数据被破坏,依此类推。因此,SMR 磁盘一般分成很多块只能追加数据(顺序写入)的区域(),这和固态硬盘的闪存页管理类似。使用“设备管理”()方式的 SMR 磁盘通过内部固件处理了 SMR 磁盘复杂的写入问题,从而对使用者封装了 SMR 磁盘的复杂性,令使用者可以像使用 PMR 硬盘一样随机写入 SMR 硬盘。其他 SMR 磁盘则使用“主机管理”()方式,需要操作系统识别 SMR 磁盘并拥有能对 SMR 磁盘进行正确顺序写入的驱动程序才能被正常使用。

历史

希捷科技从2013年开始出售“由设备管理”的 SMR 磁盘,并声称使用 SMR 技术的磁盘总体容量比普通磁盘的高出25%。2014年,HGST推出了一个容量达10 TB的 SMR 氦气硬盘,不过到2015年12月又推出了10TB的 PMR 氦气硬盘。2018年11月,HGST 推出了14 TB和15 TB的 SMR 硬盘。

鑒於SMR的複雜性,威騰電子、希捷、东芝都曾在或仍在未标明磁盘是否使用 SMR 技术的情况下出售硬盘。这导致了很大的争议:因为 SMR 硬盘在一些情况下显著慢于 PMR 硬盘。无论是面向数据存储(服务器、NAS、冷存储)的硬盘以及面向普通消费者的硬盘有这个问题。由于一些 NAS 设备在使用 SMR 硬盘后出现数据损坏,导致消费者投诉,主要硬盘品牌最终公布了使用 SMR 技术的硬盘产品型号并保证特定系列型号不使用 SMR 技术。

数据管理

SMR 盘上的数据有3种管理模式:

  • 由设备管理()
  • 由主机管理()
  • 主机可感知()

由设备管理

由设备管理的 SMR 硬盘在接口上对主机来说和一般磁盘没有区别。主机不需要使用任何特殊方式来写入磁盘,并且也不需要知道磁盘是否使用了叠瓦存储技术。其连续写入性能较随机写入高。一切关于数据位置的处理由磁盘本身管理。

这类 SMR 硬盘的固件控制机理和固态硬盘类似:主机所使用的 LBA 地址和磁盘实际的物理结构没有直接关系,而是在固件中存在一个“转换层”对两者进行转换。由于在只能追加(顺序写入)的区域里进行随机写入非常慢,所以这类硬盘都会先把数据写到一个 PMR 缓存区,等到空闲的时候再将数据整理进 SMR 区域中。由于硬盘在处理 RAID 重新同步时的写入次数很多,这使得在 RAID 中使用 SMR 硬盘容易使缓存超出,进而导致 SMR 盘不时需要暂停数分钟进行整理。还有些问题固件(如 WD40EFAX)会拒绝读取没有写过的 LBA 地址,并向调用者报告一个错误。SMR 硬盘的这两种处理方式都会导致 RAID 控制器认为磁盘损坏。

SMR 硬盘的分块结构和固件的垃圾回收机制也意味着磁盘存在写入放大的问题,不过这对于硬盘来说写入导致的主要是速度而不是寿命问题。有些 SMR 盘支持Trim命令,以便避免整理不需要的空间。

由主机管理

由主机管理的 SMR 硬盘需要主机严格按照特别的协议流程来写入数据。主机必须顺序写入,以避免破坏已有的数据。磁盘会拒绝执行违反这一协议的命令。

主机可感知

主机可感知是由设备管理和由主机管理两者的组合。磁盘可以处理任意顺序的写入命令,但是主机可以知道磁盘使用了叠瓦存储,也能知道具体的叠瓦空间使用情况。一方面新主机可以尽量顺序写入提高性能,另一方面对旧系统也保持了兼容。

协议

SMR 设备在协议中称为“分区域块设备”(),每个区域的大小一般为 256MiB。在由主机管理和主机可了解的 SMR 盘上,SCSI 的 ZBC 和 SATA 的 ZAC 这两套命令会暴露给主机。这些命令可以让主机了解每个区域的储存科技(SMR/PMR),并对这些区域直接进行访问。 ZBC/ZAC的命令有:

  • 报告区域 REPORT ZONES,用来获得磁盘区域布局和区域情况(包括表示每个顺序区域写了多少的写入指针)
    • SMR这类的区域在由主机管理的磁盘上会标为“必须顺序”(),在主机可了解的磁盘上则是“偏好顺序”()
  • 重设写入指针 RESET WRITE POINTER,用来归零指针,清空顺序区域
  • 打开区域 OPEN ZONE,用来给区域“加锁”,以便独占访问
  • 关闭区域 CLOSE ZONE,用来解锁区域
  • 收尾区域 FINISH ZONE,用来填充区域,并标记为可读

每个区域都有自己的LBA范围。只要遵守了“必须顺序”区域的规定,所有一般的 LBA 命令都可以使用。

SMR 磁盘可以通过以下的方式报告自己的分区域属性::14

  • 由设备管理和主机可了解的磁盘会有一般块设备(SCSI 00h)的标记,方便一般计算机识别。
    • 一个叫做ZONED的字段会显示设备是由主机管理,主机可了解,还是都不是。这个字段处于 SCSI 的块设备特性()VPD 页面和 ATA 的设备能力日志页。
  • 由主机管理的块设备有一个新的设备种类标记(SCSI 14h)。只有支持这些协议的电脑才可以识别。

这套标准的第二版称为 ZAC-2/ZBC-2,截至2020年4月仍在开发中。这类设备引入了一种“领域和范围式分区域块设备”(),支持不连续的 LBA 地址。西部数据的代表提议,要在新标准里移除对 ZONED 字段的描述。

这套分区系统可以对闪存也有意义,有助于降低内部控制器的工作需求,优化写入放大并降低预留空间。NVMe组织也已提供一个类似的接口,称作 ZNS。

软件及应用

叠瓦磁记录的属性介于只能顺序读写的磁带和可以随机的读写的普通硬盘之间:其数据密度较高,可以随机读取,但只能顺序写入。这类硬盘适合写入一般不需要回头修改,但需要经常随机读取的数据。Dropbox 的“魔术口袋”()就是这样一种系统,它把用户的数据存储在只能向后添加的文件里。也有些由设备管理的 SMR 硬盘被当作“存档用磁盘”售卖。

Linux有一些文件系统已经支持 SMR 设备或者可以调整得性能更好:

  • F2FS 本来为闪存设计,现在也有一个分区域块设备()的模式。可以在由主机管理的磁盘上使用,不过需要一块普通区域来随机读写元数据。
  • Btrfs 的 ZBD 支持在 5.12 内核添加,不过这个寫入時複製的文件系统本来就基本上进行顺序写入了。
  • 有调整 Ext4 使其更多进行顺序写入的实验。
  • 对于其他文件系统,需要使用 Linux 设备映射器的 dm-zoned 目标把由主机管理的硬盘映射成一个普通的随机写入硬盘。4.10以上版本的内核不需要 dm 就可以自行映射。

FreeBSD 也有对分区域块设备的协议级支持。截至2020年4月,Windows 和 macOS 都没有支持这些协议。

动态混合SMR

传统的 SMR 盘是在生产时就规定了每一个分块的用途,但新兴的动态混合 SMR 盘可以由顾客随时重新指定分块是当 SMR 用还是当 PMR 用。

参考资料

  1. ^  Anand Lal Shimpi. . AnandTech. September 9, 2013 [February 9, 2015]. (原始内容存档于2020-06-04).
  2. ^  Roger Wood. (PDF). ewh.ieee.org. October 19, 2010 [December 14, 2014]. (原始内容 (PDF)存档于2014-10-04).
  3. ^  . storagereview.com. January 30, 2015 [February 9, 2015]. (原始内容存档于2015-02-09).
  4. ^  Mary Dunn; Timothy Feldman. (PDF). Storage Networking Industry Association. September 22, 2014 [February 9, 2015]. (原始内容 (PDF)存档于2020-06-16).
  5. ^  Jake Edge. . LWN.net. March 26, 2014 [December 14, 2014]. (原始内容存档于2015-02-02).
  6. ^  Geoff Gasior. . The Tech Report. September 9, 2014 [February 9, 2015]. (原始内容存档于2019-03-16).
  7. ^  Sebastian Anthony. . Ars Technica. 3 December 2015 [3 December 2015]. (原始内容存档于2016-07-16).
  8. ^  . www.hgst.com. [30 October 2018]. (原始内容存档于2018-10-31) (英语).
  9. ^  Alcorn, Paul. . Tom’s Hardware  . [17 April 2020].
  10. ^  新浪科技综合. . tech.sina.com.cn. 2020-04-29 [2020-05-23].
  11. ^  . www.pceva.com.cn. [2020-05-23].
  12. ^  (PDF). t10.org. ANSI T10 Committee. [22 January 2018]. (原始内容存档 (PDF)于2020-07-03).
  13. ^  Campello, Jorge. (PDF). 24 September 2015 [22 January 2018]. (原始内容存档 (PDF)于2020-06-16).
  14. ^  Mellor, Chris. . Blocks and Files. 15 April 2020 [2020-04-23]. (原始内容存档于2020-04-23).
  15. ^  Brewer, Eric; Ying, Lawrence; Greenfield, Lawrence; Cypher, Robert; T'so, Theodore. . Proceedings of USENIX FAST 2016. 2016 [2020-04-23]. (原始内容存档于2020-03-10) (英语).
  16. ^  . WD support. [2020-04-23]. (原始内容存档于2020-04-17).
  17. ^  zonectl(8) – FreeBSD系统管理(System Manager's)手册页
  18. ^  . Tom's IT Pro. [2018-03-03]. (原始内容存档于2017-06-11) (英语).
  19. ^  (PDF). [2020-04-25]. (原始内容存档 (PDF)于2018-11-23).
  20. ^  Seagate. (PDF): 472. [2020-04-25]. (原始内容存档 (PDF)于2020-03-12).
  21. ^  T10, 2020.
  22. ^  Weber, Ralph O. (PDF). www.t10.org. April 23, 2020 [2020-04-25]. (原始内容存档 (PDF)于2020-04-24). 无效|url-access=registrationjiangdixierufa (帮助)
  23. ^  . [2022-11-15]. (原始内容存档于2023-01-28).
  24. ^  Magic Pocket Hardware Engineering Teams. . dropbox.tech. [2020-04-23]. (原始内容存档于2020-04-18).
  25. ^  (PDF). Seagate. [2018-03-03]. (原始内容存档 (PDF)于2017-10-11) (英语).
  26. ^  . ZonedStorage.io. [2020-04-23]. (原始内容存档于2020-01-29).
  27. ^  . ZonedStorage.io. [2020-04-23]. (原始内容存档于2020-05-22).
  28. ^  Collins, Brendan. . Western Digital. 13 November 2017 [25 August 2018]. (原始内容存档于2018-08-26).
  29. ^  . blog.google. Google. 13 November 2017 [22 January 2018]. (原始内容存档于2018-05-29).

参见 

  • 熱輔助磁性錄寫 (HAMR)
  • 陣列媒體
  • 二维磁记录
  • 日志结构文件系统,一类为仅添加存储设备优化的文件系统

外部链接

  • LSFMM: A storage technology update(页面存档备份,存于), LWN.net, April 23, 2013, by Jonathan Corbet
  • SMR Impact on Linux Storage Subsystem(页面存档备份,存于), HGST, 2014, by Jorge Campello and Adam Manzanares
  • Layout optimisation for using XFS on host-managed SMR drives(页面存档备份,存于), March 2015
  • SMR in Linux Systems(页面存档备份,存于), Seagate, March 18, 2015, by Adrian Palmer
  • Host-Aware SMR(页面存档备份,存于), Seagate, November 10, 2014, by Timothy Feldman

部分硬盘制造商、NAS制造商和科技社群公布的使用叠瓦磁记录技术的硬盘列表:

  • On WD Red NAS Drives(页面存档备份,存于), Western Digital, April 22, 2020
  • Use of Shingled Magnetic Recording (SMR) technology in Toshiba Consumer Hard Drives(页面存档备份,存于), Toshiba, April 28, 2020
  • List of known SMR drives(页面存档备份,存于), iXsystems Forums, April 16, 2020
  • Synology Products Compatibility List (pre-filtered to SMR HDD), Synology

爭議事件

  • WD 在紅標 NAS 硬碟上使用 SMR 技術,國外消費者準備集體提告 | T客邦(页面存档备份,存于)

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.

这篇关于叠瓦磁记录(英語:,SMR,直译为分层磁记录),是一种用于硬盘驱动器的磁存储数据记录技术,可提高存储密度和每个驱动器的整体存储容量。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/198333

相关文章

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内