叠瓦磁记录(英語:,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

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red