Log2RAM: Προστατεύστε την MicroSD σας από το spam των logs


Το άρθρο αυτό αποτελεί μέρος της σειράς Raspberry Pi Server, υποστηριζόμενο από την επίσημη αντιπροσωπία του Raspberry Pi στην Ελλάδα, το nettop.gr το οποίο με προμήθευσε με το Raspberry Pi 5 ώστε να δημιουργήσω περισσότερο περιεχόμενο για τις δυνατότητες και τα Project που μπορούν να τρέξουν self-hosted πάνω στο Raspberry Pi στα Ελληνικά. Ευχαριστώ πάρα πολύ το nettop.gr για την υποστήριξη!!!

Όπως γράφτηκε στο άρθρο για τα byte per byte Backups στο Raspberry Pi, ένα από τα μεγαλύτερα προβλήματα με τις MicroSD είναι η σχετικά μικρή προσδοκώμενη ζωή τους καθώς και η σημαντικότερη πιθανότητα μία MicroSD μας να γίνει corrupted, είτε από κάποια διακοπή ρεύματος είτε από τα πάρα πολλά writes που πραγματοποιούνται πάνω στην MicroSD.

Σε κάθε περίπτωση, θα πρέπει ΠΆΝΤΑ να δημιουργούμε Backups έτσι ώστε να μειώσουμε την πιθανότητα απώλειας δεδομένων.

Αλλά τι και αν, μπορούσαμε να βοηθήσουμε την MicroSD μας να ζήσει λιγάκι περισσότερο;
Αντί να την επιβαρύνουμε με άπειρες επιπλέον εγγραφές σε συστηματική βάση, να γράφαμε μόλις μία φορά την ημέρα τα logs στην MicroSD, και τις υπόλοιπες να τα κρατούσαμε στην μνήμη RAM; Αυτό είναι το log2ram.

Log2Ram

Το Log2Ram πρόκειται για ένα πολύ χρήσιμο εργαλείο το οποίο πρακτικά αποθηκεύει τα logs στην RAM του Raspberry Pi μας, και κατά ένα προκαθορισμένο χρονικό διάστημα, αποθηκεύει τα δεδομένα αυτά στην MicroSD.

Τι κερδίζουμε;

Αντί το σύστημα μας να κάνει συνέχεια εγγραφές και να “σπαμμάρει” την MicroSD με νέα logs, μειώνοντας το long-term του προσδόκιμου ζωής της, με αυτό τον τρόπο, η εγγραφή συμβαίνει μόλις μία φορά την ημέρα.

Στην πραγματικότητα, το Log2Ram δημιουργεί ένα σημείο προσάρτησης του /var/log στη μνήμη RAM.
Δηλαδή, κάνουμε mount στην μνήμη RAM τον φάκελο οπού τοποθετούνται τα logs.
Έτσι, κάθε εγγραφή του αρχείου καταγραφής στο φάκελο /var/log δεν θα γράφεται στην πραγματικότητα στην MicroSD, αλλά απευθείας στη RAM.
Από προεπιλογή, κάθε μέρα με χρήση του cp (ή rsync αν το ενεργοποιήσει ο χρήστης) θα συγχρονίζει τα περιεχόμενα στη μνήμη RAM με το φάκελο που βρίσκεται στην πραγματική MicroSD.
Φυσικά σε αυτό το σημείο θα πρέπει να τονιστεί ότι το log2ram θα αποθηκεύει τα logs από τη RAM στην MicroSD, σε περίπτωση τερματισμού λειτουργίας του Raspberry Pi (ειδικά στο νέο Raspberry Pi 5 που διαθέτει by default poweron/off button), άρα πάλι θα είστε εξασφαλισμένοι.

Στα Αρνητικά:

Φυσικά δεν θα πρέπει να ξεχνάμε όμως ότι σε περιπτωσή διακοπής ρεύματος, τα logs οπού είναι αποθηκευμένα στην μνήμη RAM, θα κάνουν φτερά.
Συνεπώς θα πρέπει να είμαστε πολύ προσεκτικοί πριν κάνουμε αυτή την αλλαγή, ή να ενώσουμε το Raspberry Pi μας σε ένα UPS.

Προσωπικά έχω ενώσει το δικό μου Raspberry Pi 5 με ένα UPS, και δίνει σήμα όταν υπάρχει διακοπή ρεύματος ώστε να κάνει αυτόματα shutdown (άρα και να αποθηκεύσει τα logs από την RAM στην MicroSD).

Επιπλέον θα πρέπει να έχουμε στο μυαλό μας και την διαθέσιμη μνήμη RAM που διαθέτει το Raspberry Pi μας μαζί με τα υπόλοιπα services που τρέχουν, μιας και για να αποθηκεύονται τα logs στην μνήμη RAM, θα χρειαστούμε κάποια MB RAM. (by default είναι 40ΜΒ).

Εγκατάσταση:

Το script του Log2Ram λειτουργεί σε κάθε σύστημα GNU/Linux που διαθέτει systemd, δηλαδή όλες τις γνωστές διανομές GNU/Linux.
Φυσικά ωστόσο, μπορείτε να χρησιμοποιήσετε το Log2Ram και σε ένα σύστημα χωρίς systemd με κάποιες επιπλέον ρυθμίσεις.

Εγκατάσταση σε Debian/RaspberryPiOS/Ubuntu και τα υπόλοιπα APT based λειτουργικά:

Δίνουμε σε ένα τερματικό τα παρακάτω:

echo "deb [signed-by=/usr/share/keyrings/azlux-archive-keyring.gpg] http://packages.azlux.fr/debian/ bookworm main" | sudo tee /etc/apt/sources.list.d/azlux.list
sudo wget -O /usr/share/keyrings/azlux-archive-keyring.gpg  https://azlux.fr/repo.gpg
sudo apt update
sudo apt install log2ram

Eγκατάσταση σε άλλες διανομές Linux:

Δίνουμε σε ένα τερματικό τα παρακάτω:

curl -L https://github.com/azlux/log2ram/archive/master.tar.gz | tar zxf -
cd log2ram-master
chmod +x install.sh && sudo ./install.sh
cd ..
rm -r log2ram-master

Και φυσικά κάνουμε επανεκκίνηση πριν κάνουμε οτιδήποτε άλλο.

Πρώτη εκκίνηση μετά την επανεκκίνηση:

Ελέγχουμε αν το log2ram τρέχει κανονικά:

systemctl status log2ram

Αν γράφει active (loaded) τότε είμαστε έτοιμοι.

Μπορούμε επιλέον να δούμε τον αποθηκευτικό χώρο που καταλαμβάνει στην RAM το log2ram δίνοντας:

df -h | grep log2ram

(OPTIONAL) Περισσότερο Customization

Για τις περισσότερες παραμετροποιήσεις, θα χρειαστεί να τροποποιήσουμε το log2ram.conf.

Ανοίγουμε ένα τερματικό λοιπόν και δίνουμε:

sudo nano /etc/log2ram.conf

Δέσμευση περισσότερης μνήμης RAM στο log2ram:

Πάμε στο log2ram.conf όπως δείξαμε παραπάνω και αλλάζουμε το SIZE οπού by default είναι 40ΜΒ, και το ανεβάζουμε πχ. σε 80ΜΒ.
Παραδοσιακά, θα πρέπει να είμαστε οκει και με τα 40ΜΒ.

Προσωπικά το έβαλα στα 400ΜΒ γιατί κατάφερα και το γέμισα μία φορά στο προηγούμενο όριο που είχα θέσει. Τρέχω όμως άπειρα services από κάτω και από πολλά από αυτά, ήθελα τα logs για να βρίσκω σφάλματα και να τα διορθώνω. Συνεπώς, σε καμία περίπτωση δεν χρειάζεται τόσο μεγάλη δέσμευση χώρου.

Χρήση rsync αντί για του cp:

Πάλι πάμε στο log2ram.conf, και στο USE_RSYNC: να αφαιρέσετε την # το default = true.

Αλλαγή ημερομηνίας αποθήκευσης των logs στην MicroSD:

By Default, το log2ram αποθηκεύει τα δεδομένα καθημερινά.
Ωστόσο, είναι εφικτό να κάνουμε αλλαγή και να ορίσουμε ημερομηνία/ημέρα/ώρα δίνοντας:

systemctl edit log2ram-daily.timer

Και το καθορίζουμε όπως επιθυμούμε: (πχ για να παίρνει κάθε Δευτέρα στις 23:55)

[Timer]
OnCalendar=
OnCalendar=Mon *-*-* 23:55:00

Απεγκατάσταση:

Απεγκατάσταση σε Debian/RaspberryPiOS/Ubuntu και τα υπόλοιπα APT λειτουργικά:

sudo apt remove log2ram

Απεγκατάσταση σε άλλες διανομές GNU/Linux:

chmod +x /usr/local/bin/uninstall-log2ram.sh && sudo /usr/local/bin/uninstall-log2ram.sh
8 «Μου αρέσει»

Aυτό είναι όντως ωραίο, αλλά για τα προηγούμενα rpi. Το 5 μπορεί εύκολα να μπουτάρει και από usb ή σκληρό δίσκο…
Με την κατανάλωση που έχει όμως σε ρεύμα, για εμένα ξεφεύγει από το σκοπό ύπαρξης των sbc και δεν το προτιμώ. Τεσπα…

3 «Μου αρέσει»

Θα κάνω μετρήσεις μέσης χρήσης μεταξύ του 4 και 5 για τα καθημερινά tasks που εκτελούσα από το 4 μαζί με κατανάλωση και θα επανέλθω! Το σίγουρο είναι ότι θες ανεμιστηράκι στο 5 άρα αυτόματα περισσότερη ενέργεια μόνο και μόνο για την ψύξη.

2 «Μου αρέσει»

Έχεις δοκιμάσει κάποια άλλα sbc? Μπορείς να αναφέρεις κάποια ή κάποια εγκυρη πηγή σχετικά με κατανάλωση ρεύματος είτε 24/24 ώρες είτε με μπαταρίες/solar ups;

1 «Μου αρέσει»

Καλωσόρισες @nikos1 !!!

1 «Μου αρέσει»

Τώρα είδα το σχόλιο, συγγνώμη για την καθυστερημένη απάντηση. Μόνο ότι υπάρχει σε rpi0 έχω δοκιμάσει, και τα γουστάρω πολύ, τα οποία φυσικά και έχουν μικρή κατανάλωση ρεύματος. Γενικά είχα δει κάτι συγκριτικούς πίνακες για την κατανάλωση ρεύματος, δε θυμάμαι που, αλλά θα τα βρεις αν ψάξεις λίγο πιστεύω. Με solar panel και powerbank χρησιμοποιεί ένας γνωστός μου ένα rpi3 οπότε γίνεται αλλά δεν ξέρω αν είχε ποτέ κάποιο θέμα ίσως με παρατεταμένη συννεφιά…