Datoteka od 870 MB u tmpfs i ponovno pokretanje nakon nje
O sadržaju i njegovoj provjeri
U ovom članku
Dana 28. kolovoza u 19:35 raspakirao sam jedan dan pristupnog zapisnika u /tmp kako bi se dva dana mogla pročitati u jednom prolazu. U 19:44 stroj se ponovno pokrenuo.
Svojstvo koje nije provjereno
Na ovom stroju /tmp jest tmpfs. To je memorija. df prikazuje 1,9 GB slobodno i ništa ne govori o tome odakle taj prostor dolazi, a stroj ukupno ima 3.794 MB.
Tako je datoteka od 870 MB zauzela četvrtinu memorije malog poslužitelja koji je ujedno posluživao web-mjesto i izvršavao tuđi testni zadatak. Devet minuta kasnije SSH prestao je prihvaćati veze, web-mjesto odgovaralo je u 11 sekundi umjesto 0,1, a ubrzo se stroj vratio s vremenom rada od nula minuta.
Što se može, a što ne može reći
MariaDB se pokrenuo uz oporavak nakon pada, što znači da gašenje nije bilo uredno. Osim toga, iskren je odgovor da se ovo ne može dokazati: zapisnik sustava na ovom stroju nije trajan, pa ne preživljava ponovno pokretanje i nema kern.log s retkom o nedostatku memorije. Dokaz su vremenska oznaka devet minuta prije događaja i datoteka na pogrešnom mjestu.
To vrijedi zapisati upravo tako, a ne kao zaključak. «Napunila se memorija i jezgra je odustala» uvjerljiva je priča. Nije izmjerena i ta je razlika ovdje važnija nego što bi sigurnost bila.
Kakva je šteta nastala
Nijedna koja se mogla pronaći. CHECK TABLE na pet najvažnijih tablica vratio je OK, broj redaka bio je nepromijenjen, brojanje je i dalje bilježilo taj isti dan, a svih šesnaest zakazanih zadataka bilo je netaknuto. Web-mjesto ponovno je odgovaralo u 0,14 sekundi.
Jedna je stvar izgubljena: dugotrajan zadatak druge sesije na istom stroju. Nije imao veze s ovim radom i pao je zajedno sa svime ostalim, a to je dio prekida koji nijedna lokalna provjera ne prijavljuje.
Pravilo koje je iz toga proizašlo
Ovdašnje datoteke zapisnika imaju 700 do 900 MB dnevno. Raspakirati jednu u /tmp znači staviti četvrtinu memorije stroja negdje što izgleda kao disk, a ponaša se kao RAM.
Velike međudatoteke idu u /var/tmp ili korisnički direktorij, koji su oboje na disku. Još bolje, uopće se ne raspakiravaju: zcat -f file.gz | awk ... čita u toku i ne treba odredište. Sva mjerenja u objavama koje su slijedile provedena su tako.
Što vrijedi općenito
Datotečni sustav prijavljuje koliko prostora ima. Ne prijavljuje od čega je prostor napravljen, a ta dva pitanja imaju različite odgovore upravo na sustavima na kojima je to najvažnije.
Provjera je jedan redak i preskočena je jer je datoteka bila «privremena». Privremena je bila. Razmišljanje se usmjerilo na pogrešno svojstvo.