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