rrd文件及rrd文件与实际数据的对比研究。
一,什么是rrd文件?
所 谓的“Round Robin” 其实是一种存储数据的方式,使用固定大小的空间来存储数据,并有一个指针指向最新的数据的位置。我们可以把用于存储数据的数据库的空间看成一个圆,上面有 很多刻度。这些刻度所在的位置就代表用于存储数据的地方。所谓指针,可以认为是从圆心指向这些刻度的一条直线。指针会随着数据的读写自动移动。要注意的 是,这个圆没有起点和终点,所以指针可以一直移动,而不用担心到达终点后就无法前进的问题。在一段时间后,当所有的空间都存满了数据,就又从头开始存放。 这样整个存储空间的大小就是一个固定的数值。所以RRDtool 就是使用类似的方式来存放数据的工具, RRDtool 所使用的数据库文件的后缀名是'.rrd。如下图,
二,rrd文件的格式解析:
rrd 文件格式大体分为两部分:
1.文件头信息区:
分静态头部,和活动头部两部分。
该区域包含一些版本信息和一些于数据存储区相关的一些信息。例如:RRD的版本号,DS数量,DS名称,DS类型,RRA数量,RRA类型,PDP数据区,CDP数据区,最后更新时间,RRA目前更新到的位置等等信息。
2.数据存储区:
该区域存储了实际的数据。数据的来源是根据在创建RRD文件时DS的类型及相关RRA定义,并通过相关的计算得出的(CF,DST)。注意:数据源(DS)是存储的实体,而RRA是数据存储的载体。在逻辑上,每个RRA都有所有DS的数据(计算)。
三,原始rrd文件与open-falcon的rrd文件对比分析:
(以下对比图:右面的部分是我的通过小米的open-falcon生成的rrd文件。)
1,文件头部区域(包括:静态头部,DS定义域,RRA定义域,活动头部,PDP数据域,CDP数据域)---------> i 静态头部区域的对比分析:
2,文件头部区域(包括:静态头部,DS定义域,RRA定义域,活动头部,PDP数据域,CDP数据域)---------> ii DS定义域:
3,文件头部区域(包括:静态头部,DS定义域,RRA定义域,活动头部,PDP数据域,CDP数据域)--------->iii RRA定义域:
4,文件头部区域(包括:静态头部,DS定义域,RRA定义域,活动头部,PDP数据域,CDP数据域)---------> i 活动头部区域的对比分析:
5,文件头部区域(包括:静态头部,DS定义域,RRA定义域,活动头部,PDP数据域,CDP数据域)---------> iiPDP数据域的对比分析:
6,文件头部区域(包括:静态头部,DS定义域,RRA定义域,活动头部,PDP数据域,CDP数据域)---------> iiiCDP数据域的对比分析: