Jeśli jednostka alokacji ma 1024 bajty, to pliki zamieszczone w tabeli zajmują na dysku
| Nazwa | Wielkość |
|---|---|
| Ala.exe | 50 B |
| Dom.bat | 1024 B |
| Wirus.exe | 2 kB |
| Domes.exr | 350 B |
W tym zadaniu kluczowe jest rozróżnienie między rzeczywistym rozmiarem pliku a miejscem zajętym na nośniku. Jednostka alokacji, czyli klaster, ma 1024 bajty. System plików nie przydziela miejsca bajt po bajcie, tylko całymi klastrami. Dlatego nawet plik o wielkości 50 B zajmie fizycznie 1 pełny klaster, czyli 1024 B. Obliczamy to przez zaokrąglenie w górę liczby potrzebnych klastrów: Ala.exe 50 B zajmuje 1 klaster, Dom.bat 1024 B zajmuje dokładnie 1 klaster, Wirus.exe 2 kB zajmuje 2 klastry, bo 2 kB w praktyce systemowej to 2048 B, a Domes.exr 350 B zajmuje 1 klaster. Razem: 1 + 1 + 2 + 1 = 5 klastrów. Moim zdaniem to bardzo praktyczny przykład, bo tak właśnie działa zajętość miejsca na dyskach z systemami plików typu FAT, NTFS czy ext. W eksploratorze plików często widać różnicę między rozmiarem pliku a wartością „rozmiar na dysku”. Ta różnica to m.in. niewykorzystana część ostatniego klastra, nazywana czasem slack space. Dobra praktyka przy konfiguracji systemów plików polega na dobraniu wielkości klastra do rodzaju danych: małe klastry lepiej pasują do wielu drobnych plików, a większe klastry bywają korzystne przy dużych plikach, np. obrazach ISO, nagraniach wideo albo kopiach zapasowych.
W tym pytaniu łatwo pomylić sumę logicznych rozmiarów plików z liczbą klastrów zajętych na dysku. To są dwie różne rzeczy. Pliki z tabeli mają małe rozmiary, ale system plików przydziela miejsce w blokach o stałej wielkości, tutaj po 1024 B. Jeśli plik ma choćby 1 bajt, to i tak potrzebuje całego jednego klastra, bo nie da się przydzielić mu połowy klastra jako osobnej jednostki alokacji. Z mojego doświadczenia uczniowie często liczą 50 B + 1024 B + 2 kB + 350 B i próbują potem podzielić całość przez 1024. To prowadzi do złego wyniku, bo kilka małych plików nie może „współdzielić” jednego klastra w typowym systemie plików. Każdy plik dostaje własny zestaw klastrów. Wynik 3 klastry zwykle bierze się właśnie z takiego zsumowania rozmiarów, np. około 3470 B i zaokrąglenia w dół albo niedokładnego podzielenia. Wynik 4 klastry może powstać, gdy ktoś zauważy, że są cztery pliki i przyjmie po jednym klastrze na każdy, ale wtedy ignoruje fakt, że plik Wirus.exe ma 2 kB, czyli potrzebuje dwóch klastrów po 1024 B. Z kolei 6 klastrów to najczęściej efekt nadmiernego zaokrąglania albo potraktowania pliku o rozmiarze dokładnie 1024 B tak, jakby potrzebował dodatkowego klastra. A nie potrzebuje, bo dokładnie mieści się w jednej jednostce alokacji. Poprawna metoda jest prosta: każdy plik analizujemy osobno i dla każdego zaokrąglamy liczbę klastrów w górę. To ważna zasada przy administracji systemami operacyjnymi, analizie zajętości dysku i planowaniu partycji, szczególnie gdy katalog zawiera tysiące małych plików.