SMR研究进展

随着数据量的持续增长,SMR磁盘将会得到广泛应用,其大容量优势和快速的大数据顺序读写等特点非常适合数据备份、 归档存储,以及云存储等领域。

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220422224436355.png

1. 磁盘结构

采用了磁道与磁道间像瓦片一样合理重叠的工艺设 计,以此来减少每个磁道所占用的空间,提高单个盘 片所能容纳的磁道数量以及整个磁盘的存储容量。为什么时部分重叠,而不是正好连接起来?

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220422165321104.png

利 用 读 磁 头 的 宽度可以小于写磁头的宽度这一特点,将每 个 磁 道未被其他磁道覆盖的部分设计成读磁头的宽度, 而整 个 磁 道 的 宽 度 则 设 计 成 写 磁 头 的 宽 度。

2. 写放大问题

在这种结构中,SMR磁盘和传统磁盘的数据读并无差异,但数据写将给SMR磁盘带来严重的写放大问题﹐写性能远远低于传统磁盘。

  • 在写数据时,写磁头要横跨整个磁道﹐而相邻磁道之间存在重叠区﹐因此向某一磁道写数据很可能会覆盖其相邻磁道上的数据﹐导致相邻磁道上的数据被改写。为了保证相邻磁道上数据的正确性﹐需要在写数据之前﹐先将相邻磁道上的数据读出来﹐将其与需要新写的数据一起重新组织后﹐再依次写入磁盘,给磁盘带来严重的数据写放大问题﹐导致数据写性能严重下降。
  • (b)所示的磁道带A,由于其磁道n和磁道n+1之间有部分磁道重叠﹐若向n磁道写数据会覆盖磁道n+1上的数据﹐向磁道n+1写数据会覆盖磁道n十2上的数据。因此﹐为了不影响磁道n十1和磁道n十2上的数据﹐在向磁道n写数据之前﹐需要先将磁道n+1和磁道n+2上已存储的数据读到内存中保存﹐再依次将数据写入到磁道n,磁道n十1和磁道n十2。假设每个磁道的大小是m,磁道n十1和磁道n十2都已存满数据﹐则向磁道n写m大小的数据时﹐需要先执行2m大小的数据读操作,再执行3m大小的写操作﹐数据的写效率仅为20%。

3. 磁盘分类

.1. 驱动管理式SMR

  • 为了提高SMR磁盘写性能﹐并使SMR磁盘与现有的文件系统相互兼容
  • 该磁盘在磁盘内部引入了1个叠瓦式转换软件层(shingle translation layer, STL)。STL通过使用数据映射垃圾回收策略,负责将主机请求的随机写操作转换成顺序写操作, 减少数据写放大问题
  • 驱动管理式SMR磁盘在STL的帮助下,可以屏蔽SMR磁盘内部的写放大问题对主机端的文件系统层应用的影响, 使得SMR磁盘与现有文件系统完全兼容
  • 在 磁盘最外围的区域有一部分非叠瓦式磁道(即 磁 道 与磁道之间不互相重叠的非叠瓦式磁道)构 成 的 持 久缓冲区(persistent cache),该缓冲区主要用来缓存 主机请求 的 随 机 写 操 作。

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220422170636777.png

.2. 主机管理式SMR

  • 在主机端完成随机写操作向顺序写操作的转换﹐提交到SMR磁盘的数据写操作全部为顺序写操作﹐磁盘内部已没有类似驱动管理式SMR磁盘里的 STL层﹐仅是Ⅰ个被动的数据存储设备。
  • 用户可以根据需求设计和定制专用的SMR磁盘
  • 与现有的系统软件不兼容

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220422170943829.png

.3. 主机感知式SMR

  • 既允许在主机端通过修改系统软件将随机写操作转 换成顺序写操 作,也允许主机将少量的随机写操作 直接提交到 SMR 磁盘由磁盘内部的软件层进行 转 换处理
  • 一方面,既能够实现SMR 磁盘与现有系统软件 的兼容;
  • 另一方面用户也能根据应用特性设计定义 应用专属的SMR磁盘,使得数据的存储和管理变得 更加高效。

4. ZAC/ZBC 标准

这2个标准接口均以Zone为基本存储单元, 提供Zone类型和长度的查看﹐以及Zone 的打开与关闭Zone的写地址复位等操作,主要用来支持以Zone为基本存储单元的数据顺序读写操作。ZAC和 ZBC的命令接口标准既包含了对主机管理式设备的支持,也包含了对主机感知式设备的支持。

.1.ZBC

  • ZBC是由INITS的T10组织为SCSI存储设备设立的接口标准;

.2. ZAC

  • ZAC则是由INITS的T13组织为ATA存储设备设立的接口标准。

5. 驱动管理式SMR 现状&问题

.1. 数据更新

  • SMR短块算法:利用SMR磁盘上的缓冲区,将 随机写操作和更新操作首先写入缓冲区,然后重新组织缓冲区 里的数 据,最后顺序写到磁盘上的正确 位置,以此来维持SMR磁盘稳定的随机写性能。 当写请求大时,部分请求无法缓存,数据的随机写性能明显下降
  • 数据异地更新:数据不在原始地址更新,而是被写到1个新的物理地址,然后将物理地址的数据标记为无效。大量的垃圾回收操作,以及逻辑地址与物理地址映射
  • 数据本地更新: 先将数据写到随机访问区,然后从映射表中找到相关联的物理地址,把旧数据读到随机访问区域,再将旧数据与新数据合并,最后在相应的物理地址上写新数据,并刷新旧数据。

.2. 映射机制

  • 静态映射,动态映射,跳跃式映射
  • 跳跃式映射:假设每个磁道带包含4个磁道,则先将逻辑地址顺序映射到所有磁道带的第1磁道﹐然后跳跃到第4磁道,接着跳跃到第3磁道,最后映射的是第2磁道。
    • 当使用率低于0.5时,不会手叠瓦式磁道设计影响
    • 当使用率0.5-0.75之间时,数据存放在第1,2,4磁道,除写1外不会产生放大影响
    • 当使用率0.75-1时,与传统映射方式一样

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220422215238324.png

.3. 空间回收

SMR磁盘的空间回收主要以磁道带为单位。

  • 完整的磁道带清理,即将多个磁道带的数据依次移动到少数几个磁道带上,整理出完整的磁道带空间,例如,如果band 3和band 7 上存有数据﹐使用该清理机制时,便是将band 3和band 7 上的数据全部移动到band 4上存储,释放band 3和band 7的空间。
  • 在单个磁道带上采用循环日志的结构实现单个磁道带的空间整理,磁道带与磁道带之间没有关联。每个band都设有1循环日志,该日志有头,尾2个指针,头指针和尾指针之间保持一定的空白距离(用于写入新数据)
    • 回收时,首先看尾指针是否指向有效地数据,若尾部指针指向的是有效地数据,则将尾部指针指向的数据移动到头指针指向位置,回收尾指针指向空间,若尾指针指向的是无效的数据,则不需要移动数据,直接回收尾指针指向空间。

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220422215742540.png

  • 对数据块进行分类,在空间清理时,通过对不同类型的数据块给予不同的权重来减少所需要移动的数据总量。
    • 热数据块:热点数据,频繁进行更新,清理权重低
    • 空数据块:没有存放任何数据,清理权重高
    • 冷数据块:存有数据,但是使用频率不高。

6. 主机管理式SMR磁盘

通过在主机端对数据随机写操作转化为顺序写操作,解决SMR放大问题,仅仅接受主机段提交的顺序写操作。

.1. 磁道带大小固定

  • 严格追加式的方式提交顺序写请求:每个磁道带都有一个写指针指向磁道带的尾部,用于添加新数据;仅当整个磁道带上的数据都变成无效数据时,才可以重置写指针(指向磁道带的起始位置)
  • 叠瓦式记录数据库SMRDB,有自己的数据读取方式和存储管理模式,不需要SMR磁盘本身提供任何的数据管理,可以被用作单独的数据库引擎。
  • 基于磁盘阵列的叠瓦式磁记录高性能文件系统:HiSMRfs可分离元数据文件数据,将访问频繁的元数据存放在固态盘中,而将文件数据存放在叠瓦式磁道带中﹔可使用文件缓存和替换模块依据文件大小和读取频次来辨别和分离热数据和冷数据﹐并依此将数据分别存放在不同类型的磁道带上;可在整个系统中采用模块化的设计,对不同的功能进行封装﹐各层之间仅需要简单的接口管理等。

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220422221538251.png

.2. 磁道带大小可变化

根据应用需求设定磁道带的大小,提高SMR磁盘的空间利用率以及读写性能。

  • 磁盘非覆盖间距:drive no overlap range, DNOR:对1个逻辑块进行写操作时,与该逻辑块相邻且不会被写操作覆盖的最大逻辑块数。
  • 磁盘孤立间距:drive isolation distance,DID:对1个逻辑块进行写操作时,与该写操作会覆盖的最远逻辑块相隔的逻辑块数。

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220422222906829.png

假设写磁头的宽度是3个磁道(对1个磁道进行写会覆盖与其相邻的2个磁道上的数据),在写逻辑块0时,会覆盖逻辑块23和34,则逻辑块0的DNOR 为22(即逻辑块1、逻辑块2、…、逻辑块22),逻辑块0的DID为34(逻辑块1、逻辑块2、…、逻辑块34)。由于每个逻辑块都有自己的DN-OR和DID值﹐因此对整个磁盘来说﹐磁盘的DNOR值为所有逻辑块的DNOR值中的最小值﹐磁盘的DID为所有逻辑块DNOR值中最大值。

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220422224608317.png

7.Resource

0%