OT: Rotace squid logu.

Dan Lukes dan at obluda.cz
Mon Jan 12 19:25:56 CET 2004


Martin Salac wrote:

> Chtel bych se zeptat, proc mi nefunguje rotace logu squidu. V 

> Problem nastava pri zapusobeni newsyslog. Log pretece 8000KB, uspesne se 
> provede
> gzip a vytvori soubor s odpovidajicim nazvem, umistenim i pravy.

> kde tech 75 bytu je klasicka hlaska:
> Jan  5 08:00:00 nat newsyslog[9906]: logfile turned over due to size>8000K
> 
> Az dosud je vse OK, az na to, ze od teto chvile prestava squid logovat.


	Otazka je sice off-topic, ale odpoved se da pojmout jako obecne 
vzdelavaci, FreeBSD se uzce tykajici.

	Kdybyste totiz vedel, jak funguje filesystem, bylo by vam to hned 
jasne. Na UFS je to totiz tak, ze soubor, to je nejaka skupina bloku dat 
na disku. A tato skupina neni identifikovana jmenem, ale cislem 
(respektive strukturou), ktere se jmenuje "inode". Ta obsahuje spoustu 
informaci tykajicich se souboru - ale neobsahuje jmeno.

	Od jmen souboru jsou zde "adresare" - ty obsahuji jmena a ke kazdemu 
jmenu take oznaceni inode, ktereho se jmeno tyka. Konkretni jmeno je tak 
tedy jen neprimy odkaz na konkretni soubor. K jednomu souboru (inode) 
muze existovat prakticky libovolne mnozstvi jmen - jmen, ktera jsou si 
zcela rovnocena a u kterych neexistuje zadne "hlavni". Jmeno ale neni 
jediny odkaz na soubor, ktery muze existovat. Dalsi typ odkazu na soubor 
je "descriptor" - jinymi slovy, jakmile je nejaky soubor otevren, je 
drzitelen dalsiho regulerniho odkazu na soubor.

	A ted, co to vsechno znamena - UNIX vlastne vubec nezna, na uzivatelske 
urovni, operaci "smazani souboru". Uzivatele (vcetne superuzivatele) 
proste soubor smazat nemohou. Smazat mohou jen jmeno souboru. Soubor sam 
zanikne tehdy, kdyz na nej neexistuje zadny odkaz. Pripominam, ze 
odkazem na soubor neni jen jmeno, ale take descriptor nejakeho beziciho 
procesu.

	A ted co se presne deje ve tvem pripade. Spustis newsyslog - ten 
zjisti, ze prislusny soubor splnuje dana pravidla. Zacne ho cist a 
vytvori novy soubor obsahujici komprimovany obsah. Pote smaze stare 
jmeno souboru. Vytvori novy soubor stejneho jmena jako byl ten puvodni a 
napise do nej hlasku, kterou tam lze posleze najit. Tim akce konci.

	Jenze - puvodni soubor nezanikl - squid ho totiz ma stale otevreny -  a 
to je "odkaz na soubor", ktery ho drzi pri zivote. Ten soubor uz sice 
nema sve jmeno - to newsyslog zrusil, dokonce uz existuje jiny soubor 
pouzivajici toto zrusene jmeno - ale to nic nemeni na faktu, ze puvodni 
soubor stale existuje a squid do nej stale pise. Sice uz neexistuje 
zpusob jak se na takovy soubor "normalne" odvolat (sice existuje, ale uz 
nema zadne jmeno a na soubor se "normalne" odkazuje kterymkoliv z jeho 
jmen) a pote, co jej squid prestane pouzivat a uzavre descriptor soubor 
skutecne zmizi (protoze v tu chvili zmizi posledni odkaz na nej), ale 
soubor stale existuje.

	Ze je to opravdu tak zjistis jednoduse - vsimni si, ze po akci 
newsyslogu se na disku NEUVOLNILO misto.


	Toz tak to na UFS chodi. A ted uz je, predpokladam, zcela jasne, proc 
se deje to, co se deje.

						Dan





More information about the Users-l mailing list