GBase 8a运维案例分析:在机械磁盘空间快满时性能有明显下降

机械磁盘,当空间使用率超过一定比例,比如80%,会出现比较明显的性能下降,一般是由于磁盘的ZDR技术导致,以及数据文件碎片两方面的原因。

现场

客户反馈,业务性能近期越来越慢,从各个节点的资源看,未看到CPU和内存方面的差异,而只有磁盘空间,已经接近90%(2T的机械磁盘)。

分析

ZDR技术

由于现场使用的大容量磁盘,基本都是机械盘,而这类磁盘,都采用了ZDR技术。也就是磁盘的外圈比内圈要快接近1倍。而分区是从外到内使用的,分区的头部在外圈。

而外圈的性能,在使用了ZDR技术后,比内圈要快1倍。所以随着数据空间的使用,越来越趋向于内圈,性能也就越差。

ZDR技术介绍:来自百度百科 https://baike.baidu.com/item/%E7%A1%AC%E7%9B%98ZDR%E6%8A%80%E6%9C%AF/5856064?fr=aladdin

由于硬盘主轴的工作方式都是CAV(Constant Angular Velocity,恒定角速度,单位时间内放置的角度一致),而盘片最外圈的周长比最内圈的周长要长很多,磁头在最外圈时,虽然放置的角度与在最内圈时一样,但走过的距离就长多了。这样,如果最内圈与最外圈磁道扇区数相同,必将造成极大的存储空间的浪费。为此,硬盘厂商们开发了ZDR技术,即从磁盘的最外圈划分出若干个区域。每个区域内的每磁道扇区一致,但靠内的区域比外侧的区域的每磁道扇区数要少,从而可以根据不同的磁道长度来合理设定扇区的数量,以达到充分利用磁盘存储空间的目的。但设置多少个区域,每个区域的扇区数设定也都是有讲究的。否则会在向内跨区域读写时造成传输率下降过大而影响整体性能。大多数产品划分了16个区域,最外圈的每磁道扇区数正好是最内圈的一倍,与最大的持续传输率的参数基本成比例。

某网友发出的磁盘内外圈性能测试截图。https://bbs.pcbeta.com/viewthread-1533108-1-1.html

某网友发出的磁盘内外圈性能测试截图

磁盘碎片

随着文件的新建,删除,磁盘会出现大量不连续的空间。而随着磁盘使用容量的增加,碎片化的几率越来越高,一个文件的连续读写,会变成磁盘的随机读写。而机械磁盘顺序读写性能是要高于随机读写的。

解决

避免磁盘占用率太高,建议超过60-70%就扩容。另外已经占用内圈的数据,随着数据老化,新数据会逐步迁移到性能较好的外圈。更多的磁盘空闲空间,也极大减少了磁盘碎片的比率。