如何解决存储系统的性能下降问题

磁盘在其生命周期的不同时间段内,影响其性能的因素是不同的。

HDD存储性能下降的原因及特征

在新购的HDD磁盘中,从首次写入数据到数据一次写满整个磁盘的这段期间(T1),由于所有的数据写都是分配连续地址块,基本可以把任意数据的写都看着顺序写,因此这段时间磁盘的性能基本是没有下降的。不过这里讨论的是指文件系统相对不怎么变态,对于新数据尽量分配未曾写过的新地址,而有的文件系统的地址分配原则是按照LBA从小到大的顺序查找,一旦查到可用地址空间就直接分配,那么对于这种文件系统,前面所说的“这段时间” 就得修正为从首次写入数据到首次删除非最后一个写入文件的时间段。南瓜哥这里不讨论那些BT的文件系统和应用。

当所有的数据块都被写过数据后,由前面的分析可知,由于holes的随机分布特性,数据也将在磁盘上呈随机分布。小编把从所有数据块被写之后到磁盘和电子元器件出现损坏和老化的这段时间设为T2。在T2的前期,由于数据的持续写入和删除,holes的随机性分布越来越强。那么在T2的这段时间内,导致磁盘性能下降的主要因素就是磁盘碎片。

(硬盘、U盘、光盘、SD卡等存储设备的数据发生了丢失,使用迷你兔数据恢复软件(minitool)进行恢复找回。)

但在T2期间,磁盘的性能并不是一直下降的,或者说下降的幅度是在缩小了,最后会趋于一个相对稳定的值。我们以熟悉的广电存储的数据读写模型为例来进行解释。广电存储的数据主要是一个个的巨大的音视频文件,衡量单位一般是GB。在T2前期,磁盘碎片越来越多,随机分布越来越强,性能会下降得比较厉害,并且下降越来越厉害。但一段时间之后,由于一个电视台的节目产出是相对固定的,每天的素材的采集和删除量也基本在一个稳定的范围内,因此碎片的随机分布会逐渐趋于平衡,从而使得存储的整体性能也会趋于一个平稳的值。这个值是多少呢?测得在FC-SAN+共享文件系统不开碎片整理情况下,该平稳值为65%。不过这不是这篇文章的讨论重点,有机会的话在以后的文章中择机进行分析,也欢迎大家来讨论。从测试的角度来说,这个值才是我们真正应该去测的值,因为它才有真正的指导意义,不过我们一般很难测试。

当性能基本平稳之后,随着使用时间的增加,磁盘可能会发生损坏以及电子元器件的老化,性能会进一步的下降,把这段时间称为T3。这里需要指出的是在T3这段时间内,性能相对于新系统来说,主因还是磁盘碎片,但导致性能进一步下降的主因是磁盘和元器件问题。在T3期间,性能进一步下降的幅度是比较小的,这是由于磁盘会设置一个阈值,在阈值范围之内,磁盘本身有一定的优化处理,超出阈值后,磁盘即不可用,也就寿终正寝了。

如何解决存储系统的性能下降问题?

从前面的分析可知,从ta时刻之后,存储系统的整体性能主要受磁盘碎片的影响,其余的影响是相对比较小的。因此,要提高磁盘的性能,即想增大Pp值,采取的措施主要是降低系统的碎片化率。

一般来说,降低磁盘的碎片化率有两种手段,一是主动方式,二是被动方式。主动方式的思想是加大存储系统的写缓存,使得数据在落盘之前,进行IO优化。写缓存越大,IO的缓存队列就越深,IO优化的可能性就越大。通过相同IO的合并落盘及相关的优化算法,能有效地降低存储的碎片化率。二是被动方式,即定期的通过文件系统做磁盘的碎片整理,将同一文件的数据片强行挪在一起。这样做自然能降低碎片化率,但对系统资源的消耗会比较严重,可能会对业务产生影响,因此在碎片整理的程序设计要求较高,搞不好会适得其反,当然用户也可以在无业务时开启该功能,以避免对业务层的影响。

在性能特别敏感的应用环境,降低磁盘损坏和老化的阈值也是一个可行的办法。前面的分析可知,磁盘损坏和老化均会造成磁盘的大量recorrect计算和重读,损坏和老化越严重,性能就下降得越多。为了使性能能满足业务的需要,一般可以将该阈值降低,提前报废。比如一般的应用环境下,假如磁盘坏块率为5%即报废,那么在性能特别敏感的环境下,可以将坏块率的阈值降低至2%。

(迷你兔数据恢复minitool具有删除恢复”、“格式化恢复”、“硬盘恢复”、“深度恢复”、“移动存储设备恢复”五大功能模块,恢复效率高,安全性有保障。)