叠瓦磁记录

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

由于磁道存在重叠，叠瓦磁盘的写入过程较为复杂。如果我们随机写入一个磁道，由于写入磁头的宽度比磁道宽，因此写入会影响到临近磁道；如果这个临近磁道有数据，这些数据就也需要重写以免数据被破坏，依此类推。因此，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 磁盘可以通过以下的方式报告自己的分区域属性：
 由设备管理和主机可了解的磁盘会有一般块设备（SCSI 00h）的标记，方便一般计算机识别。
 一个叫做的字段会显示设备是由主机管理，主机可了解，还是都不是。这个字段处于 SCSI 的块设备特性（）VPD 页面和 ATA 的设备能力日志页。
 由主机管理的块设备有一个新的设备种类标记（SCSI 14h）。只有支持这些协议的电脑才可以识别。

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

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

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

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

FreeBSD 也有对分区域块设备的协议级支持。，Windows 和 macOS 都没有支持这些协议。

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

参考资料

参见 
 熱輔助磁性錄寫 (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客邦

電腦儲存技術
硬盘驱动器