Puncte:1

Director fragmentat pe ext4?

drapel id

Sistemul meu de fișiere ext4 își pierde performanța atunci când crește.

Am un sistem care stochează o mulțime de fișiere imagine. Acest server de imagini bazat pe Debian stochează fișiere de imagine împărțite în foldere de ani pe seturi de discuri de 1-2TB cu hardware RAID-1. Fișierele sunt stocate într-o structură de foldere de ani și două niveluri de 256 de foldere mai jos.

Ca

images/2021/2b/0f/193528211006081503835.tif

Fișierele sunt scrise continuu pe parcursul anului și sunt distribuite uniform cu ajutorul unui hash, astfel încât fiecare dosar frunză/imagine conține în jur de 400 de dosare la sfârșitul anului.

Acest lucru oferă un total de aproximativ 256 x 256 x 400 = 26 214 400 de fișiere pe dosar anual.

Repetarea acestei structuri de foldere funcționează bine până la aproximativ 20 de milioane de fișiere. Durează poate câteva ore. Când devine mai mare, chiar și listarea unui folder de frunze cu 300-400 de fișiere poate dura 1-4 secunde când nu este în cache. Bănuiesc că are ceva de-a face cu fragmentarea în intrările din director.

Accesarea unui fișier individual atunci când știți calea este întotdeauna rapidă. Și nu este o problemă hardware/disc, performanța brută io este bună. Apropo, fișierele nu sunt niciodată șterse din această structură.

Defragmentarea cu e4defrag nu face nicio diferență. Presupun că defragmentează doar fișierele și nu directoarele. fsck.ext4 -D ar putea fi o soluție, dar deoarece acesta este un sistem de producție, nu sunt dornic să demontez sistemul de fișiere și să încerc.

Ceea ce ajută, este să copiați fișierele într-un folder temporar și apoi să le mutați înapoi, suprascriind originalul. Ca

cp -a imagini/2021/2b/0f/* imagini/2021/2b/tmp
mv -f imagini/2021/2b/tmp/* imagini/2021/2b/0f

După această operație, performanța este restabilită (chiar dacă nu este în cache). Dacă fișierele în sine ar fi fragmentate, înțeleg de ce ar ajuta acest lucru, dar nu sunt conform e4defrag.Mutarea fișierelor în folderul temp și înapoi nu ajută.

Ma poate ajuta cineva sa inteleg ce se intampla aici.

djdomi avatar
drapel za
Cred că trebuie să adăugați mai multe detalii despre server, mai mult, cred că jurnalul dvs. va exploda în dimensiune ;) aruncați o privire și pe https://serverfault.com/questions/796665/what-are-the-performance-implications- for-millions-of-files-in-a-modern-file-sys ar putea, de asemenea, un duplicat al întrebării dvs. și, de asemenea, https://serverfault.com/questions/506465/is-there-a-hard-limit-to- numărul-de-fișiere-un-director-poate-a avea
drapel id
@djdomi Am descris mai bine sistemul, mulțumesc. Vă rog să explicați ce vrei să spui prin jurnal exploziv, nu sunt sigur ce vrei să spui. În ceea ce privește articolele citate, niciun folder nu va conține vreodată mai mult de aproximativ 500 de fișiere, așa că nu ar trebui să fie o problemă. M-am gândit la XFS (nu l-am folosit niciodată), dar am citit atât argumentele pro și contra, ar putea merita luat în considerare.
djdomi avatar
drapel za
ceea ce vreau să spun este, în plus, vei întâlni numărul maxim de fișiere ext4, dacă număr corect, vezi aici https://serverfault.com/questions/104986/what-is-the-maximum-number-of-files- un-sistem-de-fișiere-poate-conține
drapel id
@djdomi, mulțumesc pentru clarificare. Fiecare set de discuri este propriul său sistem de fișiere, așa că un set de discuri se umple înainte ca numărul maxim de fișiere sau lipsa de inoduri să fie o problemă. Atâta timp cât un an de fișiere poate fi stocat pe un set de discuri, este în regulă.
djdomi avatar
drapel za
nu sunt un export de sistem de fișiere, dar cred că este o problemă în timpul utilizării ext4 pentru cantități atât de mari de fișiere
Puncte:0
drapel in

Voi încerca să răspund pentru ext4. Cum creezi sistemul de fișiere? ce este rezultatul de ex.:

sudo tune2fs -l /dev/sda1

Unde presupun că volumul dvs. ext4 este sda1. Ar trebui să aveți „dir_index”, „filetype” printre caracteristicile sistemului de fișiere. Dacă nu, trebuie să formatați cu acestea activate. Când acestea sunt OK, probabil că doriți să schimbați memoria cache de fișiere cu memoria cache de metadate. dacă rezultatul:

cat /proc/sys/vm/vfs_cache_pressure

arată 100, încercați să reduceți acest lucru la 50. Poate fi persistent în fișier etc/sysctl.conf unde poti scrie:

vm.vfs_cache_pressure=50

și aplicați-l până la sudo sysctl -p Acest lucru va crește probabilitatea stocării în cache a metadatelor. Indicii dir Ext4 se pot fragmenta după cum sugerați. Nu există un remediu direct, dar poți să te uiți la această postare Stackexchange: cum-se-defragmentează-atomic-directoare-ext4

drapel id
Mulțumesc pentru sugestie. Parametrul de presiune în cache pare interesant pentru păstrarea mai multor metadate în cache. Dar unde am cea mai mare problemă este când scanez întregul arbore. Mă îndoiesc că dă un impuls de performanță aici. Îl voi ține cont când noul set de discuri va deveni mai populat la sfârșitul anului. De asemenea, evaluez XFS instalat de ext4 pentru a vedea cum funcționează.
A. Genchev avatar
drapel in
De obicei, un sistem de fișiere ext poate conține 64k intrări într-un folder fără perf. problemă. De asemenea, mă întreb de ce trebuie să scanați din nou întregul arbore în timp ce sunteți sigur că nu există fișiere șterse. Te-ai gândit să schimbi structura L2/L3 în Month/Day în loc de hash? Motivul este că atunci nu veți avea nici fișiere șterse sau adăugate noi, astfel încât rezultatele scanării vechi vor fi valide. Va trebui să scanați doar pentru luna următoare. Și timpul este într-o singură direcție.
drapel id
Motivul pentru care se folosește un hash este că singurele lucruri cunoscute la preluarea unui fișier imagine sunt anul și numele fișierului. Chiar dacă acest lucru ar putea fi rezolvat în viitor, ar avea ca rezultat stocarea mai multor fișiere pentru fiecare folder de frunze. Ca 100000 pe zi.
A. Genchev avatar
drapel in
Deci, nu adăugați imaginile din ziua/luna curentă, ci și fișierele vechi de la începutul întregului an? Atunci nu preluați aceste fișiere în fiecare zi/lună. În caz contrar, ați ști ce fișier a apărut la ce oră (din punctul dvs. de vedere).
drapel id
Da, ai dreptate, noi scriem imagini mai vechi. Chiar și imagini aparținând anilor anteriori. Apoi preluăm aleatoriu imagini de până la 5-10 ani.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.