Ciudat cu leneș

Kernel-ul Linux de la versiunea 4 a adus opțiunea leneș pentru a înlocui timpul relativ prestabilit. M-am grăbit să o folosesc, dar am întâlnit un comportament incomprehensibil și, sincer, am renunțat. Dar în zadar.







Amintiți-vă scurt de ce oamenii își dau creierul în privința parametrilor pentru a face fișiere precum noatime / relatime / lazytime. Dintre toate timbrele, cea mai interesantă este atimea. Sistemul dvs. de operare actualizează această marcă de timp pentru toate fișierele care au experimentat funcționarea deschiderii și citirii conținutului acestora. Se pare că "citești" într-un "record". Adăugați la această situație SSD-ul de ultimă generație, care se îmbunătățesc zilnic, dar totuși nu-i place foarte mult atunci când scriu multe. În SSD, în comparație cu HDD, suprascrierea unei celule determină suprascrierea unui bloc întreg. În orice caz, SSD sau HDD, utilizatorii și administratorii au încercat să îmbunătățească performanța sistemului de fișiere și a întregului sistem.

De mult timp, mulți oameni au plăcut să dezactiveze actualizarea atime prin parametrul noatime din / etc / fstab. Dar, așa să spunem, noatime este un mod dur, pentru că unele programe au fost orientate spre atime.

Relatime a fost conceput pentru a rezolva mai elegant problema cu actualizarea atime. Relația actualizată atime numai dacă a văzut o actualizare a timestampurilor ctime (schimbarea atributelor) și mtime (modificarea conținutului). Se pare totul. Sa dovedit că relatime nu este compatibil cu specificația POSIX.

Dezvoltatorul ext4 Theodore (Ted) Ts'o a introdus opțiunea leneș, care, în timp ce, vorbind figurat, a avut loc în memorie (în memorie inode). Toți iepurii au fost uciși într-o singură lovitură. Pentru un anumit fișier, există un timp real în memorie, iar pe disc, atime se aterizează mai puțin frecvent.







Și aici vine ciudățenia. Faptul este că leneșul a fost prezentat ca o evoluție evolutivă a soluției problemei cu atimea. Gândul a funcționat astfel: a existat o opțiune brută noatime, apoi implementată relatime și aici sa născut leneș. Cu alte cuvinte, fie utilizați noatime, fie relatime sau leneș.

M-am grăbit și am sculptat leneș la dreapta și la stânga oriunde s-ar fi transformat kernelul mai vechi decât versiunea 4. Și? Comanda mount după repornire a arătat că parametrii relatime și leneș sunt prezenți atât simultan! La început, am înșelat mâinile strâmbe, apoi m-am gândit la parametrul implicit, care ipotetic ar putea conține și relatime. Dar când am scos defaults în / etc / fstab și am început să precizez secțiunea ceva de genul rw, lazytime, și după repornire, încă a aparut magic relatie extra timp, a început să-mi zgâri rara. Mi-e rușine să recunosc asta, dar am luat vina și am aruncat-o, scuipând totul. Lazytime la stânga unde a rămas, dar la apariția unui cuplu dulce relatime, leneș a marcat un șurub.

Dar oamenii au început să ceară ajutor și ce fel de expert ești tu, care poate face doar un gest neajutorat și mărturisește că nu înțelegi situația? Început la Google și google!

Steagul leneș este independent de strictatime / relatime / noatime. Și implicit este relatime. Deci, atunci când sunteți înlocuiți noatime cu lenezie, nu este surprinzător că ați setat opțiunea mount time relatime.
-- Ted Ts'o

Flagul leneș nu depinde de strictatime / relatime / noatime. Și, în mod implicit, este relatime. Prin urmare, atunci când noatime înlocui pe leneș, nu fi surprins de relatime instalat. Nuopttvoyumat! De ce imediat în zilele primelor anunțuri leneș nu clarifică acest punct? Lazytime este o astfel de relatime unde atime este în memorie? Pe scurt, o mulțime de întrebări, dar nu și răspunsuri. Noi doar nu fi surprins la relatime cuplu, leneș și să trăiască!







Articole similare

Trimiteți-le prietenilor: