Hogy miért érdekelnek az áramszünetek?

Ma reggel a Spar-ban, a reggeli elemózsiámat begyűjtve várok a soromra a pénztárnál, majd a teljes áruházban hirtelen minden lámpa, kijelző, led elsötétedett nagyjából 2-3mp-re.

Az emberek nyilván megijedtek – ennek hangját is adták -, a pénztárosok meg b*zmegoltak egy jó nagyot. Félreértés ne essék, nem katasztrófatúrista vagyok az ilyen szituációkban, csak kíváncsi vagyok, hogy a jelen, modern korban

  1. hogyan képes az ember és önmagában a társadalmunk villany nélkül boldogulni
  2. milyen óvintézkedéseket tettek a hálózat kiépítésére bízott mérnökök az ilyen helyzeteket lekezelendő.

Ha arról van szó, hogy napközben, vagy este elmegy otthon a lakásban az áram alapesetben annyit érzékelünk belőle, hogy nincs lámpa, nem működik a tv, nincs wifi. Majd kis idő elteltével elkezdünk aggódni a hűtőnk tartalmáért, illetve a villanyt (is) használó kazán miatt.

A kazán dolog áramkimaradás esetén amúgy egy érdekes téma, valamiért a szerelők sosem számolnak azzal a lehetőséggel – főleg falun -, hogy mi történik ha például egy tervezett karbantartás vagy meghibásodás miatti fél napos áramkimaradás van és nincs alternatíva a fűtésre. Mert ugyebár gáz van a fűtéshez, csak villany nincs ami miatt a kazán elektronikája nem működik, keringető szivattyú nem jár, így a fűtés megáll.

Visszatérve Spar-ra.

Miután visszajött az áram – az egy dolog, hogy nem volt vészhelyzeti/tartalék világítás a sötétben – azt kezdtem el figyelni, hogy vajon mely rendszerek lesznek azok amik leálltak, lefagytak, elkezdtek éppen újraindulni.

Meglepő volt – és ahogy figyeltem a kasszás hölgynek is -, hogy a kassza gép nem állt le, el sem veszett az aktuálisan beblokkolt termékek listája, csak várt kb 10 mp-et, gondolom ennyi ideig tartott míg a monitor előtte vissza bekapcsolt és csekkolta, hogy minden ugyanaz maradt-e a képernyőn.

Az előttem lévő fizetett kp-ban, majd következtem én, aki éppen szokásához híven mobillal fizetett (volna), de már sejtettem előre, hogy ez holtbiztos nem fog működni, mert a szalagot irányító/hajtó rendszer is megállt, így kézzel pakolgattuk előrébb rajta a cuccainkat, így már én is készítettem a kp-t. A blokkolás után a terminált a hölgy fordítja elém, odaérintem a telefont és “kapcsolódási hiba”. Még kétszer újrapróbáltuk, semmi változás. Közben egyébként a húspult felől is kiabálnak előre, hogy a szalagnál működik-e a pénztárgép – valszeg hátul a mérleg és hasonló más digitális kütyü bedobta a törülközőt.

A Spar-ban ahogy figyelem a kasszásoknak nincs jogosultságuk a bankkártyás POS terminálok újraindításához, így ha az egyik soron meghibásodik akkor “nem lehet kártyával fizetni” csak a válasz. Ha egy étteremben történik ilyen akkor vagy a terminál menüjében újrakapcsolódást, újraindítást nyomnak, vagy kiveszik az akksit és visszadugják ahhoz, hogy a kütyü visszacsatlakozzon a hálózathoz.

Miért probléma legtöbb esetben az áramszünet?

A válasz banális – az eszközök hardverét és szoftverét nem ugyanaz a csoport fejleszti, így mind a két oldal csak feltételezi azt, hogy a másik megfelelően lekezeli az ilyen kimaradásokat. És ha odafigyelnek is, nem lehet/akarják/tudnak felkészülni az ilyen lehetetlen helyzetekre.

Az áramingadozások, rövid kimaradások terhelhetik az elektronika tápellátását. Előfordulhat az az eset, hogy nem kap rendes üzemi feszültséget a készülék, de olyan időpillanatban tér vissza még a villany, hogy a tápegység nem szűnt meg teljes mértékben működni (kondenzátor kisülés), a készülék ismét áramot kap, de részleges kihagyás miatt részegységek, vagy maga a hardver abnormális állapotba került, így jó eséllyel az eszköz lefagyott.

Ezt a problémát leggyorsabban innentől már csak egy teljes újraindítás oldhatja meg. De ha egy teljes eszközhálózatról van szó – mondjuk a POS terminálról ami internetes hálózaton van és lehet a terminál nem állt meg, de az internethez csatlakozó switch-ek, routerek, szerverek igen – akkor meg kell várni, hogy vagy a hálózat minden komponense vissza helyreáll, ha nem akkor a technikai munkatársaknak kell detektálni mely eszköz esett ki és szorul karbantartásra.

Hogyan lehet ezt a problémát orvosolni akár a saját otthonodban is?

A legtöbb esetben egy szünetmentes tápegység a te barátod. Ez az eszköz arra szolgál, hogy a biztosítandó eszköz és a dugalj (mondjuk fali konnektor) közé beiktasd – van benne egy akkumulátor, általában ezeken vagy számítógépekhez direktbe köthető “monitor tápkábel” csati van, vagy sima, hagyományos, 230V-os aljzat. Ha van “fali áram” az akku benne szépen lassan feltöltődik és közben a rákötött eszközödet is ellátja a fali árammal. Ha áramingadozás lép fel – ebbe beleérthető teljes áramszünet, ingadozás, túláram, fél fázis, sőt akár villám is – a másodperc töredéke alatt átveszi a biztosított eszközöd árammal való táplálását és a saját belső akksijáról működteti azt tovább míg a rendes fali áram helyre nem áll.

Érdemes tudni, hogy a szünetmentes tápegységek esetén árban nagyon nagy a szórás – minél olcsóbb annál rövidebb ideig bírja a saját akkuról való ellátást, illetve kisebb teljesítményű eszközöket fog csak meghajtani.

Ezenkívül azt is fontos tudni, hogy a nem ipari kategóriájú, egyszerűbb, olcsóbb szünetmentesek négyszögjelgenerátorral rendelkezdnek, így az akksiból nyert és átalakított áram nem szabályos szinuszhullám lesz, ami a nem kapcsolóüzemű tápegységekkel nem fog – vagy legalábbis nem érdemes – működni, működtetni.

Így az ilyenekre ne köss kazánszivattyút, ventilátort, hangfalat. Annál inkább köthetsz rá jellemzően olyat, aminek adaptere van, mint például a legtöbb led lámpa, router, modem, számítógép és esetleg tévé. Ez az utóbbi csak egy nagy esetleg, mert egy tévének általában igen nagy a fogyasztása, cserébe szerintem áramszünet során hiánya elviselhető.

Egy ilyen eszköz a legtöbb műszaki, informatikai boltban kapható/rendelhető, villanyszerelő a beüzemeléséhez nem szükséges, viszont érdemes észben tartani, hogy vészhelyzet esetén (például lakástűz) a hatóságokat intézkedés megkezdése előtt ennek meglétéről tájékoztatni szükséges.

Raspberry Pi 4: boot from usb

A helyzet a következő.

Raspberry Pi 4-en jelen pillanatban stable firmware-el még nem elérhető usb boot. Ez azt jelenti, hogy csak microSD kártyát bedugva képes üzemelni a bankkártya méretű kis számítógép.

Probléma lehet még továbbá az is, hogy ha kifogyunk a memóriából akkor a rendszer elkezd akadni, megállni és – mivel nem tud, nem lehet mindent kilőni – kb a használhatatlanságig lassul. Nyilván ezt a problémát lehet orvosolni azzal, hogy egy nagyobb memóriával rendelkező Raspi4-et veszel, de ha esetleg abból is kifogynál még mindig van cserehely (swap) ahova az oprendszer a memóriából a nem használt dolgokat ki tudja lapozni.

Igen ám, a probléma viszont ott kezdődik, hogy a kis gépecske alapesetben sd kártyáról üzemel ami nem a gyors/sok írás-olvasásra lett kitalálva, magyarán szólva a gépünk marhára lassú lesz az SD kártya miatt.

Ezért (és a nagyobb tárkapacitásért) érdemesebb venni egy SSD-t és egy usb 3.0-s sata átalakítót és a Raspbian-t átköltöztetni rá.

Jelen leírásomban nem azt mutatom be, hogy hogyan tud abszolút SD kártya nélkül üzemelni a bébi, hanem azt, hogy egy már meglévő alap, buta, lassú sd kártya mellé hogyan lehet ssd-re átköltöztetni és belakni a teljes alaprendszert.

Összetevők

  • minimum 8G-os sd kártya
  • sata csatolós SSD
  • sata-usb 3.0 átalakító, vagy beépítőkeret 2.5″-os meghajtóhoz
    nem szükséges külső táposat venni, az ssd-t és lényegében a legtöbb hdd-t is képes a rpi üzembiztosan a saját hivatalos tápegységével meghajtani

Alaprendszer telepítése

Töltsd le az aktuális legújabb Raspbian-t (ez egyébként a 10-es Debian-nal egyenértékű), írd ki az sd kártyára, dugd be a raspi-ba, hálózatot is adj neki, indítsd el, hagyd, hogy összeszedje magát.

Ha megvan

sudo su

raspi-config 

paranccsal az Interfacing Options alatt engedélyezd az ssh-t. Ezek után már monitor nélkül egy másik számítógépről is rácsatlakozhatsz PuTTY-ot használva.

Előkészítés

Miután már él az ssh kapcsolat az összerakott usb-s ssd-t csatlakoztasd a raspi kék színű aljzatához. A kék színű aljzat a 3.0-s csatoló.

Konzolon (putty) csekkold le, hogy látja-e az ssd-t a raspi:

fdisk -l

/dev/sda-ként meg kellene jelenjen.

Ha nem egy lsusb paranccsal nézd meg biztosan megfelelő-e a csatlakozás, ellenőrizd a kábeleket, nézd meg pc-re dugva az ssd-t, hogy okés-e vagy sem.

Ha az fdisk-ben látható a /dev/sda akkor nyert ügyed van, mehetünk tovább.

A másolást megelőzően le kell formáznunk az ssd-t, figyelj oda, nehogy fontos adatokat tárolj rajta!

fdisk /dev/sda
> o
> n
> p
> enter, enter, enter
> p
(ezután kellene láss /dev/sda1-et)
> w

mkfs.ext4 /dev/sda1

Nyitottunk egy új partíciós táblát, létrehoztunk egy partíciót, majd ext4-re formáztuk.

Költözés

mkdir /mnt/ssd

mount /dev/sda1 /mnt/ssd

rsync --exclude="mnt" --exclude="lost+found" --exclude="sys" --exclude="proc" --exclude="cdrom" --exclude="media" --exclude="swapfile" -aP / /mnt/ssd/

mkdir /mnt/ssd/{mnt,proc,sys} 

Megtörtént az ssd felcsatolása, és a gyökér fájlrendszer tükrözése. Fontos, hogy e művelet közben semmi mást ne csináljon a raspi. Igazából élő rendszeren nem is egészséges ilyet csinálni, mert inkonzisztencia léphet fel a másolt/cél fájlrendszerben, de mivel egy zsír új rendszerről van szó nagy kár nem történhet, max újrakezdjük.

Ha sikeresen lefutott a másolás akkor rá kell vennünk a raspi-t, hogy a gyökér fájlrendszert ne az sd kártyán keresse hanem a csatlakoztatott usb meghajtón.

Kérdezzük le először is az ssd-n lévő partuuid-ját:

blkid /dev/sda1

Ilyesmi fog fogadni:

/dev/sda1: UUID="b1b85e84-6440-4b65-8dd7-35ee51314143" TYPE="ext4" PARTUUID="3ea0d1f6-01"

Ebből nekünk a PARTUUID fog kelleni, másoljuk ki az értékét valahova jegyzettömbbe.

Ezután jön az a rész, hogy megmondjuk a raspi-nak, hogy ez a partuuid lesz az ő root-ja a jövőben.

nano /etc/fstab

Illetve

nano /mnt/ssd/etc/fstab

helyeken keressük meg azt a sort ahol a második “oszlop” csak egy “/”

Itt a PARTUUID= utáni értéket módosítsuk az ssd partuuid-jára, majd

nano /boot/cmdline.txt

Itt egyetlen sort találsz, keresd meg benne a root=PARTUUID=… részt, itt is módosítsd az értéket az ssd-d id-jára. Ha ezzel is megvagyunk akkor kb végeztünk is, nézzük meg sikerrel jártunk-e:

df -h

Ha a “Mounted on” oszlopot figyeljük és megkeressük a /-t akkor az “Avail” oszlopban látható az sd kártyánk mérete. A rendszer ekkor még nem ssd-t használja.

Indítsuk újra a raspi-t:

reboot

Bejelentkezést követően ismét nézzük meg a csatolt lemezeket és tadam:

root@winben:/home/winben# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       880G   21G  815G   3% /
devtmpfs        358M     0  358M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M   31M  456M   7% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/mmcblk0p1  253M   53M  200M  21% /boot
tmpfs            98M     0   98M   0% /run/user/1001
root@winben:/home/winben#

Ha az Avail oszlopban látható az ssd nagyobb kapacitása sikerrel jártunk.

Swap beállítása

Alapból 100Mb default cserehely/swap van egy raspbian-on beállítva, ez pont elég ahhoz, hogy az alkalmazások elinduljanak és közben ne egye meg az sd kártyát, de nekünk egy gyors ssd-nk lett, így már lehet nagyban gondolkozni.

fallocate -l 16G /swapfile
chmod 600 /swapfile 
mkswap /swapfile 
swapon /swapfile 

Készítettünk egy 16GB méretű cserehelyet az ssd-n és kvázi fel is csatoltuk. Nézzünk rá sikerrel jártunk-e:

 swapon --show 

vagy

htop

vagy

 free -h 

Ha látható a létrehozott 16G-s swapfile felcsatolva sikeres volt a létrehozás.

Viszont ahhoz, hogy újraindítás után is használja a rendszer fel kell vennünk fstab-ba:

 echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab 

Mostantól újraindítást követően is nyomonkövethető lesz htop-ban mennyi ramot és mennyi swapot/cserehelyet használ a bébi.

Enjoy!

Rpi4 vs Do szerver

Elkezdett bennem érlelődni a gondolat, hogy mivel a weboldalaim jelenleg kisebb látogatottságúak simán áttehetném az épp egyik használaton kívüli rpi4-esemre.

Igazából néhány wp oldalam fut, amin tulajdonképpen cache sincs, tehát a php-nak kell eleget dolgoznia. Fogtam tehát billentyűzetet és első körben leteszteltem, hogy processzorban mekkora a különbség egy 5 dolcsis alap 1 magos Digitalocean szerver és egy Raspberry pi 4 (1G ram+ssd) között az alábbi módon:

sysbench --num-threads=4 --test=cpu --cpu-max-prime=20000 run

A Digitalocean szerver így alakított:

Threads fairness:
events (avg/stddev): 680.7500/0.83
execution time (avg/stddev): 9.9814/0.01

A kis bankkártya méretű számítógép:

Threads fairness:
    events (avg/stddev):           2500.0000/41.70
    execution time (avg/stddev):   65.5436/0.01

Nagyjából 6.5x az eltérés a Digitalocean javára.

Jelenleg a Digitalocean szerverem 5.8%-os átlag cpu terheltségével számolva a raspi-n ez az érték kb 40%-os átlagos cpu terhelésre emelkedne. A 40% körülbelül már az a határ amikor még éppen jók vagyunk, de azért belátható, hogy kevés tartalék marad. Viszont a WordPress oldalakat van még bőven hova optimalizálni, így a várható forgalomnövekedések során még mindig nem szalad ki a világba az rpi terheltsége.

Jelenleg a Digitalocean mellett szól a sebesség, az (elvileg) jó skálázhatóság és megbízható, stabil működés. Hátránya a magasabb üzemeltetési költség és drága/kis méretű tárhely.

A raspi mellett szól, hogy rádughatok egy 250G ssd-t usb3.0-n úgy, hogy erről bootol már eleve az alaprendszer is. Onnantól kezdve, hogy van stabil netem, helyem és megvalósításom az üzemeltetésre annyira keveset kér a raspi enni, hogy egy éven belül behozza a raspi a Do-al szemben az árát.

Elgondolkodtató.

Nextcloud /data mappa adatok importálása

Tegyük fel, hogy szerver költöztetés volt és álmodban sem gondoltad volna, hogy ahhoz, hogy a nextcloud fájljaid látszódjanak az új gépen nem elég csak a data mappát másolni.

Nos, van egy jó hírem: ez nem így van.

Az adatok visszamásolása után ezt kell csak lefuttatnod:

sudo -u www-data php /var/www/nextcloud/occ files:scan --all

Nyilván a /var/www/nextcloud helyére azt a path-t írod be ahol a te nextcloud appod telepítésre került.

Ekkor “újraszámolja” az adataidat és adatbázisba felvezeti őket. Ezt persze nem kellett volna futtatnod/nom ha az adatbázist is viszem magammal… 😑