自动分层存储(ATS)是去年被讨论最多的存储阵列话题之一。它指的是在不同磁盘类型和RAID级别之间迁移数据块的功能,这可满足性能和空间使用之间的适当平衡,并避免所谓的热点。
该领域的先驱者是Compellent(现已被戴尔收购);它从2004年就开始提供这类功能,但现在所有分层领导厂商的产品都已具备了同样的功能。只是EMC、HDS、HP-3Par、IBM和NetApp为该功能赋予的名称不同,且都按照自己的方式来实现,因为他们各自的架构不同,而关于存储级别虚拟化层的理念也不同。因此,本文并不会直接告诉你哪一种ATS最好,而是全方位的考量用于评估不同ATS实现最重要的指标。
LUN或子LUN
早期的一些厂商曾尝试在I/O请求下降至一定阀值时,利用“半自动”功能将LUN从快速磁盘(FC)迁移至低成本高容量磁盘(SATA)。这种方式非常简单,但由于涉及大数据迁移和粒度不足的问题,实际情况下几乎无法使用:其中的风险便是下移一个LUN之后,还需要为一个新I/O峰值再迁移回来…想一想当你在注重IOPS的阵列中拥有一个TB级的LUN时,这将意味着什么!
而现在ATS的子LUN实现相比之前要先进一些:一个LUN被分成多个数据块,而每个数据块可以被放置到不同层级的磁盘中,有时甚至可由不同RAID级别来保护。
引擎和算法
每个厂商都依据时间/事件和/或访问频率,开发了自有的用于迁移层级间数据块的迁移引擎。每种实现方式都依赖于整体架构。但大体上可考虑以下两种方式:“阵列中的全部”或“阵列外的部分”。
当实现的方式为“阵列中全部”的时候,所有监控功能都是位于其控制器和软件内部,所有功能都独立于软件/操作系统。但是,当部分迁移进程是在阵列外部实现的时候(即O/S代理商监控IOPS或外部分析工具),数据迁移就会面临危险,因为该环境更加难以管理并由外部因素所决定。
粒度
粒度意味着效率,效率也意味着更加节省成本:你可以发现数据块的大小不尽相同,512KB至1GB不等(一些厂商已经打算将数据块减少至32KB)!因此,粒度由于以下原因变得非常重要:
你拥有更多的粒度,你就可以在后端移动更少的数据;
小数据块可以向较高或者较低存储层移动,以更好地分布数据分布和快速/粒度更高地进行调整;
而大数据块往往具有以下风险:
在迁移大量数据之前,算法需要在等待的,同时面临迁移数据为时已晚的风险!
如果你拥有少量的活动数据,比如一个大型LUN中几MB的数据,那么就可能有必须将GB级的数据移至更昂贵的上层存储的风险。