# pingwinowanie ostatnie:<< # zad 4 ![image](https://hackmd.io/_uploads/rJtGxPmBA.png) ## Co to wgl jest * algos <!--podjebany--> z bsd stosowany w m.in. EXT do przydzielania bloków dyskowych i i-node'ów * Próbuje rozdzielać "wysokopoziomowe" katalogi, zakłądając że są one całkowicie niezależne. (Wysokopoziomowe -> takie w /, ale jest również flaga w i-node która umożliwia traktowanie dowolnego folderu jako wysokopoziomowy) * Kiedy coś dodajemy w nie wysokopoziomowym katalogu, wtedy algorytm próbuje wsadzić to do tego samego cylindra w którym jest rodzic * Kiedy próbujemy dodać katalog A do katalogu wysokopoziomowego B, algos skupia się na tym żeby do tego samego cylindra co B wszedł nie tylko folder A, ale również cały jego content * Jeśli nie jest to możliwe to cały folder A trafia do innego cylindra * Celem jest osiągnięcie jak najlepszej lokalności dla plików które rzeczywiście są ze sobą powiązane ## Jakie inne alokatory? ### Cylinder Group Allocator * Poprzednik Orlova, stara się zminimalizować fragmentację dysku, ale robi to brutalnie -> wszystko jak najbliżej, orlov blisko siebie stara się dać tylko powiązane elementy * Dzieli dysk na grupy cylindrów, gdzie każda grupa ma pewną liczbę bloków i i-nodeów * Jak wyżej wspomniane stara się wszystko upakować jak najbliżej, najlepiej w jednej grupie cylindrów ### Extents Allocator * wprowadzamy koncept **extents**, czyli ciągłych bloków dyskowych przypisanych do plików # zad 10 ![image](https://hackmd.io/_uploads/BkMJwSNBC.png) ```bash= dd if=/dev/zero of=encrypted.img bs=1M count=100 sudo mkfs.ext4 -O encrypt encrypted.img sudo mkdir /mnt/encrypted_fs sudo mount encrypted.img /mnt/encrypted_fs sudo cp /etc/mke2fs.conf /mnt/encrypted_fs sudo mkdir /mnt/encrypted_fs/encrypted_dir sudo e4crypt add_key /mnt/encrypted_fs/encrypted_dir sudo mv /mnt/encrypted_fs/mke2fs.conf /mnt/encrypted_fs/encrypted_dir sudo umount /mnt/encrypted_fs sudo debugfs encrypted.img debugfs: cd encrypted_dir debugfs: ls -l debugfs: cat <13> ```