Puncte:0

CentOS - dimensiunea de listare a directoarelor de nivel superior într-un volum NTFS de 50 TB este mult prea lentă

drapel us

Ce vreau să obțin este să obțin informații despre cât de mari sunt folderele de nivel superior dintr-un director (care este un volum NTFS) pe un server CentOS7. Aceste informații sunt plasate într-un fișier Prometheus, care este utilizat pentru a trimite aceste informații într-un tablou de bord Grafana.

Scriptul executat printr-un job cron în fiecare zi arată astfel:

#!/usr/bin/env bash

# Generați valorile de colecție Prometheus despre utilizarea discului proiectelor Jenkins pe sistem.
# În prezent, numai informațiile de nivel superior ale folderului sunt colectate în octeți.

# Trunchiați ultima intrare de fișier text, astfel încât să poată fi pregătită pentru introducerea celor mai noi date
echo -n > /var/lib/node_exporter/textfile_collector/jenkins_projects_disk_size.prom

cd /jenkins/jobs # Accesați directorul NTFS, care conține toate datele despre joburi
pentru f în *; face # Parcurgeți fiecare folder de nivel superior
    dacă [ -d "$f" ]; atunci  
        # Nu va rula dacă nu sunt disponibile directoare
        prometheus_entry=$(du ${f} --block-size=1 --summarize "$@" | \ # executați o comandă `du` pentru fiecare folder de nivel superior, astfel încât dimensiunea acestuia să poată fi calculată și salvați ieșire în format Prometheus
          sed -ne 's/\/\/;s/"/\"/g;s/^\([0-9]\+\)\t\(.*\)$/jenkins_directory_size_bytes {directory="\2"} \1/p') 
        echo $prometheus_entry >> /var/lib/node_exporter/textfile_collector/jenkins_projects_disk_size.prom 
    fi
Terminat

Acest lucru funcționează în prezent pe câteva servere, care nu au o dimensiune mare de director în comparație cu serverul cu probleme (500GB-1.5T), și funcționează, de asemenea, relativ rapid.

Problema actuală pe care o am este că pe serverul problematic, în special, dimensiunea folderului este destul de mare (50T). Desigur, așa cum se poate aștepta cu această dimensiune, comenzile du/df sunt foarte lente (cred că voi avea nevoie de mai mult de 15-20 de ore pentru a executa scriptul).

Există o modalitate de a optimiza în continuare acest proces sau de a utiliza un fel de cache sau orice altă modalitate alternativă (de exemplu, cu un alt instrument)? Am incercat deja ncdu, dar este o interfață grafică și nu pot extrage informațiile în același mod în care vreau ca Prometheus să funcționeze.

După cum am menționat anterior, am nevoie doar de informații de nivel superior privind dimensiunea dosarului și nimic altceva. Orice ajutor sau sfat va fi foarte apreciat! Mulțumesc anticipat.

drapel cn
Bob
`df` este rapid, așa că plasarea acelui director pe propriul sistem de fișiere/volum/discuri este o soluție. `du` și prietenii trebuie să traverseze întregul arbore de directoare și singura modalitate de a face acest lucru mai rapid AFAIK este prin a face stocarea de bază mai rapidă

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.