...
- Metadata Server - Poslužitelji za upravljanje pohranjenim podacima s informacijama poput njihovog imena, vlasništva i prava pristupa
- Object Storage Server -Poslužitelji na kojima se podaci fizički nalaze i koji se mogu proizvoljno skalirati
- Management Server -Poslužitelji koji su odgovorni za nadzor i upravljanje cjelokupnim datotečnim sustavom Lustre
- Lustre Networking - Brza i visoko propusna veza kojom se podaci prenose
- Client - Mount point na pristupnim poslužiteljima koji otkriva datotečni sustav Lustre korisničkim aplikacijama
Slika 1. Dijagram datotečnog sustava Lustre (Figure 1 u izvornoj publikaciji)
...
Ako uzmemo u obzir dva rubna slučaja: 1) tisuću datoteka u jednom direktoriju naspram 2) tisuću direktorija s jednom datotekom, vidljivo je da se množenjem direktorija efikasnost ove operacije značajno smanjuje (approx. 20 puta). Slični trend vidljiv je i u ostalim kombinacijama (10/100 vs. 100/10, itd.) što upućuje na nužnost agregacije podataka u manji broj direktorija i idealno datoteke većeg obujma.
Slika 2. Vrijeme izvođenja komande ls -l *
stotinu puta nad
...
Ako pretpostavimo slična ubrzanja iz prethodnog dijagrama, Lustre datotečni sustav možemo potencijalno koristiti i do deset puta efikasnije (ili barem jedan značajan dio njegove funkcionalnosti) ako okrupnimo podatke u jednu veću, zasebnu cjelinu.
Tablica 1. Ispis broja direktorija, broja datoteka koje sadrže i njihove
veličine za tipičan python3.9 data stack
Code Block | ||
---|---|---|
| ||
# broj direktorija marko@pc-mkvakic 15:05 ~ $ find ~/.local/lib/python3.9/site-packages /usr/local/lib/python3.9/dist-packages -type d | wc -l 4338 # broj datoteka marko@pc-mkvakic 15:05 ~ $ find ~/.local/lib/python3.9/site-packages /usr/local/lib/python3.9/dist-packages -type f | wc -l 47355 # veličine marko@pc-mkvakic 15:06 ~ $ du -hcs ~/.local/lib/python3.9/site-packages /usr/local/lib/python3.9/dist-packages 939M /home/marko/.local/lib/python3.9/site-packages 747M /usr/local/lib/python3.9/dist-packages 1.7G total |
...
Operativni sustav kao osnova kontejnera je Ubuntu Focal Fossa (v20.04 LTS)
Slika 3. Workflow za izradu i korištenje kontejnera. Kombinacije komandi
poput create, import i bootstrap su u novijim verzijama zamijenjene
Slika je preuzeta sa
stranice Singularitya; preteče Apptaineru koja funkcionira
na identičan način.komandom build (Figure 1 u originalnom članku)
Izgradnja pipom
Prvi korak je stvaranje osnovnog kontejnera data_stack_sandbox
u interaktivnom modu ili verziji sandbox:
...
Primjer izgradnje ubuntu v20.04 imagea s dodatnim knjižnicama:
Code Block | ||||
---|---|---|---|---|
| ||||
# login na pristupni poslužitelj gpu [korisnik@kompjuter ~]$ ssh korisnik@login-gpu.hpc.srce.hr Last login: Wed May 24 09:23:06 2023 from x.x.x.x # pomicanje u /scratch i kreiranje direktorija za izgradnju [korisnik@x3000c0s27b0n0 ~]$ cd /scratch [korisnik@x3000c0s27b0n0 scratch]$ mkdir ${USER}-apptainer [korisnik@x3000c0s27b0n0 scratch]$ cd ${USER}-apptainer # izgradnja sandbox verzije [korisnik@x3000c0s27b0n0 korisnik-apptainer]$ apptainer build ubuntu_20.04_sandbox docker://ubuntu:20.04 [korisnik@x3000c0s27b0n0 korisnik-apptainer]$ apptainer shell --writable --fakeroot ubuntu_20.04_sandbox Apptainer> ... Apptainer> ... dodatne komande za izgradnju kontejnera ... Apptainer> ... Apptainer> exit # mijenjanje sanboxa u image, prebacivanje u korisnički i [korisnik@x3000c0s27b0n0 korisnik-apptainer]$ apptainer build ubuntu_20.04.sif ubuntu_20.04_sandbox [korisnik@x3000c0s27b0n0 korisnik-apptainer]$ mv ubuntu_20.04.sif ~ [korisnik@x3000c0s27b0n0 korisnik-apptainer]$ cd ~ # brisanje direktorija za izgradnju [korisnik@x3000c0s27b0n0 korisnik-apptainer]$ rm -rf /scratch/${USER}-apptainer |
...