Last Updated on 20/07/2022 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) mezi různými architekturami 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/