[elektro] linuxos (szoftver) kérdés (kicsit OT)
Xorn
toth.endre at gmail.com
Wed Oct 18 14:10:51 CEST 2017
Persze, de ő kérdezte az ls-t. :-) A du jól számol.
Tanmese a dologról.
Vodafone, 2004, a hívás, SMS, MMS stb. (összesen 8 féle kategória)
rekordok mindegyike egy-egy külön file, benne az adattal, jellemzően
50-100-150 byte maximum. 512 byte-os allokációs egységek a
filerendszerben, de ez most mindegy is. Ezekből van 8 féle (azaz 8
alkönyvtár), mindegyikből van 3 havi visszamenőleges tárolás, azaz kb.
90 napi (8 x 90 további alkönyvtár), azon belül 24 óra, azon belül 60
perc, azon belül 60 másodperc ugyanígy, azon belül pedig sorszámozott
file-ok, ha egyazon másodpercben több rekord is keletkezik. Ez így
összesen erős 62 millió könyvtár (!!!) egyazon struktúrában.
Amikor egy rekordot feldolgoztak, csonkolták a file tartalmát, azaz a
hossza nulla, de magát a file-t nem törlik le. Ilyenkor a file által
foglalt hely felszabadul (Veritas kötetkezelő alatt), de a
könyvtárbejegyzés marad.
Csináltam egy ls -lR kimenetet. Ez tartott 4,5 órát. :-)
Utána csináltam egy tíz párhuzamos szálas feldolgozást (16 proci volt
a gépben, SUN Fire 6800) úgy, hogy 10 awk indult egymással
párhuzamosan, és mindegyik a sorszámláló modulo 10 értéke szerint
választotta ki a saját feldolgoznivalóját 0-9-ig. Megnéztem, hogy az
illető file 0 hosszú-e, és ha igen, töröltem. Ez a futás volt újabb 4
óra a tíz párhuzamos szálon (!!!). (A mögöttes storage 2 x 4 GB-es
fiber channelre kötött EMC Symmetrix DMX-3000-es volt.)
Utána volt egy újabb futtatás, ami rekurzívan törölt minden
könyvtárat, amiben nem volt semmi, felfelé a fában addig, amíg egy
valami mást is tartalmazó könyvtárig vissza nem törölte.
Az eredmény a 420 GB-os filerendszerben (2004-et írunk!) 20 GB szabad
hely úgy, hogy nem töröltem semmit, csak 0 hosszú file-okat, és az
ilyen módon üressé vált könyvtárakat.
Best regards,
Andy
Kiss Gabor <kissg at ssg.ki.iif.hu> írta (2017. október 18. 13:11):
> On 10/18/2017 11:23 AM, Xorn wrote:
>> Kézzel biztos nem kell, erre van az awk. :-) Az ls -l kimenetében az
>> 5. oszlop a méret, ezt kell összeadatni vele:
>>
>> ls -lR | awk 'BEGIN {a=0} {a=a+$5} END {print a}'
>>
>> Byte-ban kapod, oszd le, ahogy szükséged van rá.
>>
>> Amúgy egyszerűbb du-val, ha van olyanod. Az pont méretet számol.
>
> Megragadnám az alkalmat, hogy megjegyezzem, a file mérete (a benne lévő
> byte-ok száma) nem azonos azzal, hogy mennyi helyet foglal el a
> filesystemben. Példa:
>
> /tmp/hely$ ls -lsh f1
> 4.0K -rw-r--r-- 1 kissg kissg 10 Oct 18 13:08 f1
> /tmp/hely$
>
> A file 10 byte-os, mégis 4 kiB-tal csökkent a szabad hely mennyisége,
> mikor létrehoztam.
>
> Szóval nem lenne bölcs dolog összeadni a nettó hosszakat. :-)
>
> kissg
> --
> A: Because it messes up the order in which people normally read text.
> Q: Why is top-posting such a bad thing?
> A: Top-posting.
> Q: What is the most annoying thing in e-mail?
>
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list