Na dysku należy zapisać 100 tysięcy pojedynczych plików, każdy o rozmiarze 2570 bajtów. Zapisane pliki zajmą najmniej miejsca na dysku o jednostce alokacji wynoszącej
A. 8192 bajty.
B. 3072 bajty.
C. 2048 bajtów.
D. 4096 bajtów.
Pytanie z egzaminu CKE, październik 2013 (arkusz E.12-X-13.10).
Jednostka alokacji, często nazywana klastrem, to najmniejszy fragment miejsca na dysku, jaki system plików przydziela plikowi. Nawet jeśli plik ma tylko 1 bajt, to na dysku zajmie co najmniej jeden cały klaster. W tym zadaniu każdy plik ma 2570 bajtów. Przy jednostce alokacji 3072 bajty taki plik mieści się dokładnie w jednym klastrze, więc zajmuje 3072 bajty na dysku. Dla 100 tysięcy plików daje to 100 000 × 3072 = 307 200 000 bajtów. To najmniej spośród podanych możliwości, bo przy 2048 bajtach plik nie zmieści się w jednym klastrze i trzeba przydzielić dwa klastry, czyli 4096 bajtów na plik. Moim zdaniem to bardzo praktyczne pytanie, bo dobrze pokazuje tzw. slack space, czyli niewykorzystaną końcówkę ostatniego klastra. W administracji Windows, Linux czy przy formatowaniu nośników ma to znaczenie szczególnie wtedy, gdy przechowuje się bardzo dużo małych plików, np. miniatury, logi, pliki konfiguracyjne albo cache aplikacji. Dobra praktyka jest taka, żeby dobierać rozmiar klastra do charakteru danych: mniejsze klastry dla wielu małych plików, większe klastry dla dużych plików multimedialnych lub obrazów dysków.
W tym zadaniu łatwo pomylić rozmiar jednostki alokacji z prostym porównaniem liczb, a tu trzeba patrzeć na to, ile pełnych klastrów zostanie zajętych przez jeden plik. Plik o rozmiarze 2570 bajtów nie może zająć części klastra tak, żeby resztę tego samego klastra wykorzystał inny plik. W typowych systemach plików, takich jak NTFS, FAT32 czy ext4, klaster jest minimalną jednostką przydziału danych dla konkretnego pliku. Niewykorzystany fragment ostatniego klastra jest stratą miejsca, nazywaną slack space. Jednostka 8192 bajty powoduje bardzo duże marnowanie miejsca, bo z 8192 bajtów realnie używane jest tylko 2570 bajtów, a reszta pozostaje niewykorzystana dla tego pliku. Przy 4096 bajtach sytuacja jest lepsza, ale nadal każdy plik zajmie cały klaster 4096 bajtów. Częsty błąd polega na uznaniu, że 2048 bajtów musi być najlepsze, bo jest najmniejsze. No właśnie nie zawsze. Ponieważ 2570 bajtów jest większe niż 2048 bajtów, system musi przydzielić dwa klastry po 2048 bajtów, czyli łącznie 4096 bajtów na jeden plik. To tyle samo zajętego miejsca co przy klastrze 4096 bajtów, a nie mniej. Najkorzystniejsza z podanych wartości to 3072 bajty, bo plik mieści się w jednym klastrze i strata miejsca jest stosunkowo mała: 3072 - 2570 = 502 bajty na plik. Z mojego doświadczenia takie zadania dobrze uczą myślenia administracyjnego: nie wybiera się ustawienia tylko dlatego, że liczba wygląda ładnie, tylko sprawdza się realne zużycie miejsca na dysku.