Skip to content
Menu
msandor honlapja
  • Bemutatkozás
msandor honlapja

Távoli mentő szerver Raspberry Pi-ból

Posted on 2023.10.11.2024.04.18.

„Menteni, menteni, menteni!”

Mondta Lenin elvtárs 😀

Két fajta ember van: az egyiknek már volt adatvesztése, a másiknak majd lesz.

Velem 20 éve történt, amikor kiesett a kezemből a minden adatomat tartalmazó winchesterem. Leszakadt az író/olvasó fej, esélyem se volt megmenteni az adatokat. Akkor döntöttem el, hogy ezt többé nem szeretném átélni. Ugorjunk az időben, megépítettem a saját NAS-omat, benne 3 db HDD RAID5-ben. Ez már véd a diszk hibák ellen, de ne feledjük, a RAID nem mentés! Ezen a gépen elkülönítettem egy kötetet a mentésnek. Mentésre pedig az rsnapshotot használtam. Ez gyakorlatilag egy fapados deduplikáció.

Ha ellopják a NAS-t visznek mindent…

El se kell lopni, elég, ha becsap a villám a közelünkben, és a túlfeszültség kiégeti mindhárom merevlemezt 🙁

Történt egyszer, hogy a legjobb barátomtól kaptam ajándékba egy első generációs RPI-t. Nem mai csirke, kb 10 éves, akkor sem volt egy kapkodó idegbeteg. Sokáig tanakodtam, hogy mire tudnám használni.

Aztán beugrott. Ebből fogok építeni mentő szervert. Volt egy felesleges 2 TB-os USB-s külső merevlemezem. Letöltöttem a hozzá passzoló oprendszert (raspbian), ami egy Debian, erre optimalizálva.

Feltelepítettem a már bevált rsnapshotot, és, hogy biztonságban közlekedjenek az adatok, egy openvpn klienst is. Az esetleges diszk ellopás ellen pedig merevlemez titkosítással védekeztem (luks). A VPN-nek köszönhetően bárhová elviszem a „cuccot”, be fogok rá tudni lépni ssh-n, nem kell tudnom az aktuális IP címét.

A lehető legbiztonságosabb helyre helyeztem, bevittem a munkahelyem szerverszobájába. Oda csak 3-4 kollégám tud belépni, kamerával megfigyelt, klimatizált helyiség 🙂 És 30 km-re van tőlem, így, ha itthon mindenem megsemmisül, lesz egy másolat egy távoli helyen!

Miért most írok cikket egy ~10 évvel korábban összerakott rendszerről?

Mert úgy egy hónapja megadta magát a merevlemeze, ezért hazahoztam. Élt 12 évet, ami nem is rossz egy 0-24-ben üzemelő diszktől.

Az igazsághoz hozzá tartozik, hogy időközben beleszerettem az RPI-be, és később vettem két 3B modellt is. Az egyikből media playert csináltam a libreelec segítségével, a másik felváltotta a régi rpi-t. A nyugdíjas rpi bekerült a fiókba, ha kitalálok neki valami feladatot, újra elő fogom venni.

Térjünk vissza az eredeti témához, hazahoztam a rossz diszket és az rpit. Volt a fiókban egy 3 TB-os diszk, vettem hozzá egy külső dobozt.

Minek vettem új dobozt, ha már volt egy nekem?

Mert az elromlott Verbatim doboz nem hajlandó nagyobb diszkkel működni!

Amíg kihozta a futár az új USB3-as diszk dobozt, lementettem az SD kártyáról a /etc mappát. Letöltöttem a legfrissebb oprendszert (még csak Debian 11 alapú!), feltettem az SD kártyára, és elkezdtem a telepítést, konfigurálást. Ebben nagy segítségemre volt a raspi-config:

A konfiguráláshoz nincs szükség a külső merevlemezre, szóval nekiálltam a telepítésnek.

A telepítés és konfigurálás gyerekjátéknak ígérkezett, mert 2,5 éve elkészítettem a saját ansible role-omat, ami minden általam használt rsnapshot alapú mentő szerveremet kompletten beállítja.

Aztán jött Murphy, és beleszart a levesembe

Annó az ansible role-omat három operációs rendszerre készítettem el: CentOS 7, Red Hat 8, és Debian 10.

Az ansible role első feladata a szükséges szoftverek feltelepítése. És mint kiderült, kikerült a Debian 11-ből az rsnapshot. Előkaptam a kedvenc keresőmet, és elkezdtem kutatni. Találtam egy hibajegyet, ahol erről fojt a diskurzus. Az a lényeg, hogy a Debian csapata kivette a disztribúcióból az rsnapshot csomagot. Találtam a neten megfelelő csomagot (rsnapshot_1.4.5-1~bpo11+1_all.deb), kézzel feltettem.

Újra lefuttattam az ansible role-t, volt még 1-2 döccenő, ami csak abból fakadt, hogy nem volt felkészítve Debian 11-re. Miután ezt pótoltam, szépen lefutott, és mindent beállított. Pár nap múlva megjött a doboz, beleraktam a porosodó diszkemet. Megcsináltam a titkosítást:

# cryptsetup --verbose --cipher twofish-xts-plain64 --key-size 256 --hash sha256 --verify-passphrase luksFormat /dev/sda1

Tettem rá fájlrendszert (ext4), majd felcsatoltam a végleges helyére /BACKUP .

Jöhet az első próba szinkronizálás.

Egy kis rsnapshot gyorstalpaló: az rsnapshot a háttérben rsync-et használ, ami úgy működik, hogy az első másolás alkalmával mindent, következő alkalommal viszont csak a különbséget másolja át, ezzel időt, és sávszélességet spórol. A másik okossága pedig a hard linkekkel való játék, azaz, ha két mentés között nem változott a fájl, akkor a hard link miatt a másolat nem fog helyet foglalni!

Alig telt el pár perc, elkezdtek a hibaüzenetek ömleni a konzolomra. Beugrott, hogy miért volt a fiók alján ez a diszk. Tele volt szektor hibával 🙂

Nem estem kétségbe, a gugli erre is adott egy ötletet, végig kell vizsgálni a teljes diszket, és a hibás szektorokat ki kell zárni, így ha szerencsém van, évekig el fog ketyegni a már nem fiatal diszk. Ezt a parancsot használtam:

# e2fsck -v -p -c /dev/mapper/luks-b185c834-1c92-44ed-aa15-39e19bbb3cf4

Nem kicsi a diszk, nem túl gyors az rpi usb2 csatlakozója, így magára hagytam, valamikor hajnalban fejezte be. Azóta is hibátlannak látszik, a logok alapján nem keletkezett újabb bad sector.

Gondolhatjátok, hogy keresem a bajt, szándékosan szívatom magam

Mint említettem, ez a mentés mentése, így nem nagy katasztrófa, ha pár évente ki kell cserélnem a diszket, pár nap alatt megvan, ráadásul nem is kerül semmibe, mindig akad itthon 1-1 ehhez hasonló hdd.

Ha még nem zártad be ezt a cikket, megmutatom az rsnapshot.conf fájlomat:

msandor@rpi3:~ $ cat /etc/rsnapshot.conf
################################################################
#            PLEASE BE AWARE OF THE FOLLOWING RULE:            #
#           This file requires tabs between elements           #
################################################################################

config_version  1.2
snapshot_root   /BACKUP/.snapshots/
cmd_cp          /bin/cp
cmd_rm          /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh         /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du          /usr/bin/du
retain  daily   50
retain  monthly 12
verbose         3
loglevel        2
logfile         /BACKUP/.snapshots/log/rsnapshot.log
lockfile        /var/run/rsnapshot.pid
rsync_long_args --delete --numeric-ids --relative --delete-excluded -P -z --skip-compress=7z/avi/bz2/deb/gz/iso/jpeg/jpg/mov/mp[34]/ogg/rpm/tbz/tgz/zip
exclude         lost+found
exclude         *.vdi
exclude         *.vmdk
sync_first              1
use_lazy_deletes        1

#################################
#    BACKUP POINTS / SCRIPTS    #
#        HONNAN        HOVÁ     #
#################################
backup  /etc/                   localhost/
backup  /root/                  localhost/
backup  /var/spool/cron/        localhost/
backup  /var/lib/dpkg/          localhost/
backup  /home/                  localhost/
backup  rsync://rpi3@192.168.5.250/BACKUP/.snapshots/.sync/     NAS/    +rsync_long_args=--password-file=/root/rsyncd.secrets.rpi3

Az aljáról töröltem néhány sort, a lényegen nem változtat, viszont nem publikus.

A legfontosabb tudnivalót a konfig is írja, mindent tabulátorral kell elválasztani egymástól, nem szóközzel!

Szerintem a konfig magáért beszél, de 1-2 dolgot azért kiemelnék:

  • a „retain daily 50” azt jelenti, hogy 50 napi mentést tart meg (daily.0 -> daily.49)
  • a „retain monthly 12” azt jelenti, hogy 12 havi mentést tart meg (monthly.0 -> monthly.11)
  • az „exclude„-al lehet megadni, hogy milyen kiterjesztésű fájlokat hagyjon ki, soronként egyet

A mentett könyvtár struktúra így néz ki 2 szint mélységig (az érzékeny neveket kicsillagoztam):

msandor@rpi3:~ $ tree -a -L 2 /BACKUP/.snapshots/daily.0
/BACKUP/.snapshots/daily.0
├── localhost
│   ├── etc
│   ├── home
│   ├── root
│   └── var
└── NAS
   ├── **********
   ├── **********
   ├── MySQL
   ├── **********
   └── .snapshots

11 directories, 0 files

Hogyan csinálom a napi mentést?

Cronból futtatok egy kis scriptet, ami levelet küld nekem, ha végzett, de ez benne a lényeg, az első sor csinálja a szinkronizálást, a második a napi rotálást, a harmadik a havi rotálást:

# rsnapshot -V sync
# rsnapshot daily
# rsnapshot monthly

A ‘-V” kapcsolót a bővebb logolás miatt használom, nem kötelező.

Ennyi az egész!

Néhány ezer forintból és maradék, felesleges alkatrészekből lehet csinálni egy egyszerű, de nagyon hasznos mentő szervert. Ha beállítod, hogy a Debian frissítéseket automatikusan feltelepítse, akkor hónapokig feléje se kell nézni, teszi a dolgát. Miközben alig fogyaszt áramot. Nyugalmi állapotban az rpi 1,4 W-t fogyaszt, a merevlemez meg kb semmit, ugyanis, ha nem használom, leállítja a motort. Szinkronizálás közben a diszk kb 8-10 W-ot kér (becsült adat), az rpi ekkor is beéri 2W-al.

Végezetül pár fotó a cuccról

Előre is elnézést kérek az igénytelennek látszó szigszalagos megoldás miatt, amíg garis a HDD doboz, nem akarom megfúrni, de legalább egyben tartja a két fő alkatrészt 😀

1 thought on “Távoli mentő szerver Raspberry Pi-ból”

  1. Attila Papp szerint:
    2024.04.18. 11:18

    Nagyon szeretem a Rasspberry-ket, jó sok mindenre lehet használni és ez a leírás is egy új 5letet mutat be.
    Tetszett, hogy hibás HDD-t használtál és a titkosítás bekapcsolása is előremutató a biztonság szempontjából.

    Válasz

Vélemény, hozzászólás? Válasz megszakítása

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Kategóriák

  • ansible
  • docker
  • e-mail
  • git
  • hardware
  • hibakeresés
  • kubernetes
  • ldap
  • Linux
  • MariaDB
  • OpenWrt
  • Proxmox
  • security
  • SNMP
  • Synology
  • teszt
  • Unifi
  • UPS
  • vagrant
  • Virtualbox
  • zabbix
©2025 msandor honlapja | WordPress Theme by Superb WordPress Themes

Adatkezelési tájékoztató || Hibát talált az oldalon? Írja meg nekem. || Impresszum || Powered by WordPress

Oldalunk cookie-kat ("sütiket") használ. Ezen fájlok információkat szolgáltatnak számunkra a felhasználó oldallátogatási szokásairól a legjobb felhasználói élmény nyújtása érdekében, de nem tárolnak személyes információkat, adatokat. Szolgáltatásaink igénybe vételével Ön beleegyezik a cookie-k használatába. Kérjük, hogy kattintson az Elfogadom gombra, amennyiben böngészni szeretné weboldalunkat.ElfogadomAdatvédelmi irányelvek