将 rrd 文件从 32 位 ARM 转换为 x86_64

Convert rrd files from 32 bit ARM to x86_64

我有很多 rrd 文件是在第一代 Cubieboard(1 GHz CPU、1 核、1 GB RAM)上生成的,大约一年前,当我将数据记录器迁移到x86_64 机器,我发现我无法再读取那些旧文件。我不知道它们是特定于平台的。

我知道有一个工作流程,我可以将文件中的数据导出到 XML 文件中,然后将它们导入到其他架构中,但这不是我的第一选择,因为旧板非常慢还有其他重要的工作要做,比如做一个 DNS 服务器。 rrdtool 版本停留在 1.4.7,有 1.4 GB 的文件需要处理。

有没有办法在快速的 Intel 机器或一些基于 x86_64 的工具上模拟 Cubieboard 来转换这些 rrd 文件?

正如您所注意到的,RRD 文件不能在体系结构之间移植。格式不仅取决于 32/64 位整数大小,还取决于 'endian' 特性,甚至取决于带有结构填充的编译器行为。可以在您的新平台上以 32 位模式编译该库,但它仍然不太可能与您的旧 RRD 文件兼容,因为需要考虑其他硬件差异。

简而言之,您最好的选择是(慢慢地?)导出到 XML,然后在新架构中重新导入,正如您已经提到的那样。我以前在大型 RRD 安装上做过这件事,运行 并行了一段时间以避免数据出现间隙,但这需要时间。

我似乎记得 Tobi 曾经计划在 RRD 1.6 中使用一种新的独立于体系结构的 RRD 格式,但即使这成为现实,它也无法帮助您处理遗留数据。