( asch | 2019. 05. 09., cs – 18:28 )

Loggolásra lehet úgy használni az SD kártyát, hogy nem teszel rá fájlrendszert, hanem blokkonként írod a logot. Így sehol sem lesz extra nagy wear, hanem minden blokk egyszer lesz írva egy körbefordulás alatt. Persze Windowson semmit nem tudsz kezdeni vele (tudtommal drivert kellene írni hozzá), de Linuxon csak jogosultság kell hozzá és lehet nyersen olvasni az SD kártyát.

Mikrovezérlővel csináltam ilyet: az SD kártya alap SPI protokollját használva írom rá a blokkokat. Minden írt blokkot egy mintával megjelölök, így bináris kereséssel meg lehet gyorsan találni, hogy hol tartottunk, és onnan folytatni. (Ezt megcsinálja a mikrovezérlő induláskor, vagy SD kártya cserekor, illetve a PC-s program is amivel leszedem a logokat.) Ez a pattern pár byte az 512 bájtos blokkból, tehát kis százalék megy el "felesleges" dolgokra. (Több blokkot egyben használva az overhead tovább csökkenthető.) Meg lehet csinálni binárisra is, vagy akár text alapúra is ezt a megközelítést. A teljes logika programja sokkal kisebb, mint például egy FAT driver, amit ilyen célra szoktak használni.

A Raspberryn lehet olyan csinálni, hogy egy read-only partíción van a rendszer, és egy másik "nyers" partíción egy így szervezett log. A partíciót ugye egy önálló deviceként fogjuk látni Linux alatt, pl: /dev/sda2. Sima fájlműveletekkel elérhető, csak arra kell figyelni, hogy mindig egész blokkot írjunk 512-vel osztható címre. Akkor végeredményben egyetlen írási művelet lesz egyetlen blokkra. Ha a használatot jelző mintába beírunk egy sorszámot is, akkor round robinban is lehet logra használni. Szintén bináris kereséssel pillanatok alatt meg lehet találni, hogy a log éppen hol harap a saját farkába. És pont csak annyit fogunk írni, amit minimálisan muszáj. Csak meg kell oldani, hogy az össszes logot egyetlen streambe összegyűjtsük, ha több processz logjait is gyűjteni akarjuk.