原理
本节介绍SmartTier的相关概念和实现原理。
相关概念
- 存储层
在同一存储池中,存储层是相同性能的存储介质集合。将不同存储介质按性能高低划分为三个存储层,由高至低分别是高性能层、性能层和容量层。每个存储层分别使用相同的硬盘类型和RAID策略。
存储层层级划分如表1-1所示。
元数据总是优先分配到SSD盘,只有当SSD盘无容量时,才会分配到HDD盘,SmartTier不会改变元数据的分配方式。
表1-1 存储层层级划分层级
硬盘类型
硬盘特点
应用特点
数据特点
高性能层
SSD硬盘
- 高IOPS。
- 任务响应时间短。
- 每单位存储容量成本高。
适合随机读取存储请求密度高的业务负载。
最活跃数据:存储在或迁移至高性能层硬盘且读性能得到很大提升的“繁忙”数据。
性能层
SAS硬盘
- 大量业务负载下具有高带宽。
- 任务响应时间适中。
- 没有被缓冲的数据,写比读慢。
适合存储请求密度适中的业务负载。
热数据:存储在或迁移至性能层硬盘的较活跃数据。
容量层
NL-SAS硬盘
- 低IOPS。
- 任务响应时间长。
- 每单位存储请求处理成本很高。
适合存储请求密度低的业务负载。
冷数据:存储在或迁移至容量层硬盘的“空闲”数据,且数据迁移后,其现有性能不会受到影响。
- 容量初始分配策略
创建文件系统时,存储层为文件系统分配容量的策略。
- 自动分配:按照性能层和容量层的可用容量比自动为该文件系统分配容量。只有当性能层和容量层的容量不足时才从高性能层分配容量。
- 优先从高性能层分配:在高性能层上分配容量,如果高性能层容量不够,则按照规则从其他存储层上分配容量;如果某个存储层容量不足,则按照如下分配调整规则进行分配:性能层 > 容量层。
- 优先从性能层分配:在性能层上分配容量,如果性能层容量不够,则按照规则从其他存储层上分配容量;如果某个存储层容量不足,则按照如下分配调整规则进行分配:容量层 > 高性能层。
- 优先从容量层分配:在容量层上分配容量,如果容量层容量不够,则按照规则从其他存储层上分配容量;如果某个存储层容量不足,则按照如下分配调整规则进行分配:性能层 > 高性能层。
- 文件inode信息
inode包含了文件系统中与各个文件相关的重要信息,比如写入策略、迁移策略以及状态等信息。存储系统通过判断这三种信息来实现文件的迁移。信息解释如下:
- 写入策略:指文件将要写到的介质(SSD/HDD),可以满足写入文件时高性能的要求。
- 迁移策略;指该文件将要迁移到的介质(SSD/HDD),可以提供后续文件变冷后迁移至HDD盘。
- 状态:指文件是否已经完成迁移,包含Complete和Partial两种状态。
原理概述
文件系统SmartTier策略可以帮助文件实现在SSD和HDD(SAS或NL-SAS)盘间的迁移。为了满足业务多样化、配置灵活以及绿色节能的需求,文件系统SmartTier策略设计了两种迁移模式:自动迁移和自定义迁移(包含每周、周期、立即迁移三种调度类型)。
要配置文件系统的SmartTier策略,存储系统中需要包含SSD和HDD(SAS或NL-SAS)两种类型硬盘。
自动迁移
由于用户的业务场景复杂多样,当用户对业务模型和数据状态无法获得足够的信息时,就会面临着迁移策略难以制定的问题。而自动迁移模式简化了用户配置,将文件系统的初始分配策略修改为SSD并对SSD的利用率进行监控,用户无需配置复杂的策略就可以根据文件的冷热程度进行归类:当SSD的利用率较高时,自动将最冷的文件迁移到HDD,热文件保留在SSD;当SSD利用率较低时,将最近3天访问过的文件回迁到SSD。保证SSD的利用率在一个较为合理的水位。并且也会根据系统的负载情况,动态的调节扫描、迁移速度,最大限度的消除对主机业务的影响。自动迁移的具体原理如下:
- 按照文件存放介质和访问时间对文件进行分类。
- SSD上的文件按照访问时间(每3天分为一类,以此类推,180天以上归为一类。)间隔进行分类。
如果用户配置了“强制迁移到HDD”的参数,则存储系统会按照用户设置的文件大小,优先迁移大于该容量的文件。
- HDD上的文件(默认物理大小20MB以下的文件)最近3天访问的归为一类。
- SSD上的文件按照访问时间(每3天分为一类,以此类推,180天以上归为一类。)间隔进行分类。
- 存储系统实时监控SSD利用率,当SSD利用率过高或者过低时启动文件迁移。
- 当SSD利用率超过80%时,SmartTier会按照时间分类由远及近迁移文件,直至SSD利用率降低到60%停止迁移。
- 当SSD利用率低于60%时,SmartTier会根据介质和访问时间把位于HDD盘并且最近三天访问过的文件迁移到SSD(若没有满足条件的文件时,暂不启动回迁,待有文件时再启动回迁),直至SSD利用率提高到60%。
自定义迁移
SmartTier自定义迁移会经历文件扫描、文件策略匹配、文件迁移三个阶段。存储系统可以按照文件的大小、文件名称、文件扩展名、访问时间、修改时间等将文件进行分类。当用户对文件模型以及数据状态比较了解时,可以根据文件分类自定义设置文件迁移的规则,比如将指定大小的文件或者指定文件名称的文件根据实际的业务需求将文件迁移到低速的HDD盘或者高速的SSD盘。若主机下发的文件不满足用户当前制定的条件,文件将按照容量初始分配策略分配到相应的存储层。自定义迁移的流程如下:
存储系统通过inode信息判断写入策略和迁移策略。新建文件时,文件系统会采用用户配置的容量初始分配策略来填充文件的inode信息。文件创建成功后,协议分层模块会异步扫描文件是否匹配用户的配置的规则,如果期望介质与容量初始分配策略一致,则inode的信息保持不变。如果不一致,则根据规则修改inode信息。因为扫描是异步的,因此在修改inode信息之前部分文件数据按照默认的规则分配,后续写入的文件数据按照最新的规则分配。部分文件数据分配在SSD盘,部分文件数据分配在HDD盘,文件状态标记为Partial。当存储系统后台周期扫描触发后,发现文件状态为Partial并且匹配用户指定的规则,空间分层模块完成对部分数据的迁移,并修改文件状态为Complete。
示例:用户为文件系统Filesystem001配置了如下两种策略,
- 策略1:访问时间大于一周动态迁移到HDD盘。
- 策略2:文件扩展名为JPG的文件写到SSD盘。
- 容量初始分配策略:优先从性能层分配,即优先分配到HDD盘。
- 当主机下发一个1.JPG的文件时,文件系统采用默认的容量初始分配策略(HDD)填充inode信息,写入策略和迁移策略都为HDD,状态填充为Complete。
- 文件创建成功后,协议分层模块异步扫描文件,且与策略2匹配,文件系统Filesystem001修改inode信息(写入策略为SSD,迁移策略SSD,状态为Partial)。
- 由于该扫描是异步的,扫描前采用未修改的写入策略写I/O到HDD盘,扫描后采用新的写入策略写I/O到SSD盘。
- 当文件周期扫描启动后发现文件状态为Partial且匹配策略2,则把HDD盘数据迁移至SSD盘,迁移完成后修改inode信息(写入策略SSD,迁移策略SSD,状态为Complete)。
- 一段时间后,文件周期扫描启动并与策略1相匹配,文件迁移至HDD盘,并修改inode信息(写入策略SSD,迁移策略HDD,状态为Complete),以保证新写入数据的性能。
只有当匹配到的条件为访问时间/修改时间/改变时间且设置逻辑为“>”时,写入策略保持不变。否则,写入策略都会改变。
- 新数据写入并按照写入策略SSD分配介质,系统修改inode的信息(写入策略SSD,迁移策略HDD,状态为Partial)。
- 文件周期扫描启动后发现文件已经一周未访问,且状态为Partial、迁移策略为HDD,迁移数据到HDD盘。