在前面章节已经介绍了RRDTool基本知识,RRDTool的存储方式,也很有必要学习。RRDTool的存储方式比较有意思,简单来说,可以将这种存储方式比喻成一个圆钟,数据存储的时间节点就是圆钟上的分钟刻度,圆钟的箭头就好像读取数据的方式,它日复一日,年复一年地不断转动,没有起点和终点,指针可以一直往下走下去。每转动一圈,所有存储了数据的时间节点都会被重用,该循环过程会自动刷新原来的位置。这样的设计可以使存储的数据集不会增大,并且维护起来非常简单。
通过一个形象的例子说明RRDTool的数据存储原理。假设有一个设备需要监控,姑且叫做A设备,A设备运行起来之后会有很多描述运行状态的数据,我们把它想象成一个大型的数据池。RRDTool的工作就是要按照用户的要求获取指定的数据并保存起来。假设需要RRDTool以3种方式来读取数据,即每5分钟采集一次数据、每20分钟(4个5分钟)采集一次数据和每一小时(12个5分钟)采集一次数据。
在3-4图中,RRDTool会每5分钟采集一次数据,并保存在一个rra文件中,当运行到20分钟时,以每5分钟采集一次数据的方式进行到了第4次,这一次的数据不仅会被每5分钟采集数据的策略存储下来,同时它作为一个每20分钟采集数据策略的第一个数据存储下来。以此类推,当每5分钟采集数据进行了12次之后,第一个每小时采集数据的策略也会记录它的第一个数据。
从这个过程中不难发现,对于采集同一指标的数据,RRDTool可以按照时间策略存储多个rra数据文件,并且rra文件采用固定大小来存储,当数据写满之后,之前写过的位置会被系统重用写入新的数据。