ERROR: This RRD was created on another architecture

By | 05/01/2021

Last Updated on 10/01/2021 by administrator

ERROR: This RRD was created on another architecture

Motivace:

Hláška ERROR: This RRD was created on another architecture pravděpodobně vyvstane vždy při přenášení souborů RRDtool (.rrd) z mezi různými architektury počítačů (tedy např. z 32-bit na 64-bit).

Hlavní motivací bylo zachovat, a přenést všechny soubory .rrd, které se používaly pro vykreslení grafů ze softwaru SmokePing monitorující síťovou odezvu. Tyto soubory byly prakticky přeneseny z Ubuntu 12.04.5 LTS 32-bit verze na Ubuntu 20.04 LTS 64-bit verzi. Avšak při reloadu softwaru SmokePing na Ubuntu 20.04 LTS 64-bit verzi se objevila hláška výše.

Celá hláška při rebootu aplikace Smokeping zde:

smokeping[2514]: RRDs::info /var/lib/smokeping/DNS/Cisco-resolver3-opendns.rrd: ERROR: This RRD was created on another architecture at /usr/share/perl5/Smokeping/RRDtools.pm line 113.

Implementace a řešení [1]:

Aktualizace seznamu balíčků z repozitářů:

sudo apt-get update

Instalace RRDtool:

sudo apt-get install RRDtool

Funkce dump vypíše obsah souboru stats.rrd do formátu XML. Tento XML soubor bude následně uložen jako stats.xml příkazem níže:

rrdtool dump stats.rrd > stats.xml

Přesunout soubor stats.xml na nový server (v tomto případě byl soubor převeden z 32bit na 64bit architekturu) a převést jej zpátky na RRD formát, pomocí příkazu:

rrdtool restore -f stats.xml stats.rrd

Zda nový server dokáže přečíst soubor stats.rrd se provede příkazem:

rrdtool info stats.rrd

TIP – automatizace scriptem:

Při konvertování více souborů do XML formátu ve složce je možné použít script níže:

for f in *.rrd; do rrdtool dump ${f} > ${f%%.rrd}.xml; done

Zpětná konverze všech XML souborů do RRD formátu se provede scriptem níže:

for f in *.xml; do rrdtool restore ${f} ${f%%.xml}.rrd; done

Pozn. script v původním článku [1] nefungoval dobře, nicméně tyto scripty výše by zafungovat měly.

Jak bylo postupováno při migraci grafů pro Smokeping:

Ubuntu 12.04.5 LTS 32-bit:

Konvert všech RRD souborů ve složce smokeping:

for f in /var/lib/smokeping/*/*.rrd; do rrdtool dump ${f} > ${f%%.rrd}.xml; done

Přejít do složky /var/lib/:

cd /var/lib/

Přenesení složky smokeping na nový server Ubuntu 20.04 LTS 64-bit, běžící pod IP adresou 192.168.0.7 do složky tmp:

scp -r /var/lib/smokeping uzivatel@192.168.0.7:/tmp/

Ubuntu 20.04 LTS 64-bit:

Zastavení aplikace smokeping:

service smokeping stop

Změnit původního vlastníka (owner) a skupinu (group) smokeping složky na smokeping:

chown -R smokeping:smokeping /tmp/smokeping/

Nakopíruje složku smokeping do složky /var/lib/:

cp -r /tmp/smokeping /var/lib/

Před zpětným konvertem do RRD je nutné vymazat původní .rrd soubory (pokud nějaké existují):

rm -r /var/lib/smokeping/*/*.rrd

Zpětná konverze do RRD formátu:

for f in /var/lib/smokeping/*/*.xml; do rrdtool restore ${f} ${f%%.xml}.rrd; done

Drobná úprava je jen pro původní složku __cgi , která měla nastavenou skupinu(group) na www-data:

chown smokeping:www-data /var/lib/smokeping/__cgi

Restart služby Smokeping:

service smokeping restart

Ubuntu 20.04 LTS 64-bit + Ubuntu 12.04.5 LTS 32-bit:

Nyní je možné vymazat nepotřebné soubory XML ve složce /var/lib/smokeping/:

rm -r /var/lib/smokeping/*/*.xml

Hotovo!

Zdroj:

[1] https://blog.remibergsma.com/2012/04/30/rrdtool-moving-data-between-32bit-and-64bit-architectures/

Leave a Reply

Your email address will not be published. Required fields are marked *