Zablokuj podalokację

Podalokacja bloków to funkcja niektórych komputerowych systemów plików , która umożliwia używanie dużych bloków lub jednostek alokacji przy jednoczesnym efektywnym wykorzystaniu pustego miejsca na końcu dużych plików, miejsca, które w przeciwnym razie zostałoby utracone do innego wykorzystania w wyniku wewnętrznej fragmentacji .

W systemach plików, które nie obsługują fragmentów, ta funkcja jest również nazywana łączeniem ogonów lub pakowaniem ogonów , ponieważ jest zwykle wykonywane przez spakowanie „ogonu” lub ostatniego częściowego bloku wielu plików w jeden blok.

Racjonalne uzasadnienie

fragmentację w najgorszym przypadku . Rozmiary bloków są zwykle wielokrotnościami 512 bajtów ze względu na rozmiar sektorów dysku twardego . Gdy pliki są przydzielane przez niektóre tradycyjne systemy plików, do pojedynczych plików można przydzielać tylko całe bloki. Ale ponieważ rozmiary plików często nie są wielokrotnościami rozmiaru bloku systemu plików, ten projekt z natury powoduje, że ostatnie bloki plików (zwane ogonami ) zajmują tylko część bloku, co skutkuje tak zwaną fragmentacją wewnętrzną (nie mylić z fragmentacja zewnętrzna ). To marnowanie miejsca może być znaczące, jeśli system plików przechowuje wiele małych plików i może stać się krytyczne, gdy próbuje się użyć większych rozmiarów bloków w celu poprawy wydajności. FFS i inne pochodne systemy plików UNIX obsługują fragmenty [ potrzebne źródło ] , które znacznie łagodzą ten efekt.

Schematy podalokacji

Blokowa alokacja podrzędna rozwiązuje ten problem, dzieląc w pewien sposób blok ogona, aby umożliwić mu przechowywanie fragmentów z innych plików.

Niektóre schematy alokacji podrzędnej bloków mogą wykonywać alokację na poziomie bajtów; większość jednak po prostu dzieli blok na mniejsze (dzielnikiem jest zwykle jakaś potęga 2). Na przykład, jeśli plik 38 KiB ma być przechowywany w systemie plików przy użyciu bloków 32 KiB, plik normalnie obejmowałby dwa bloki lub 64 KiB do przechowywania; pozostałe 26 KiB drugiego bloku staje się niewykorzystaną wolną przestrzenią. Jednak przy podalokacji bloku 8 KiB plik zajmowałby tylko 6 KiB drugiego bloku, pozostawiając wolne 2 KiB (z bloku alokacji podrzędnej 8 KiB) i zwalniając pozostałe 24 KiB bloku dla innych plików.

Pakowanie ogona

Od tego czasu niektóre systemy plików zostały zaprojektowane tak, aby wykorzystać tę niewykorzystaną przestrzeń i mogą spakować ogony kilku plików w jeden wspólny blok ogona. Chociaż na pierwszy rzut oka może się wydawać, że znacznie zwiększy to fragmentację systemu plików, negatywny efekt można złagodzić dzięki funkcjom odczytu z wyprzedzeniem w nowoczesnych systemach operacyjnych — w przypadku krótkich plików kilka ogonów może być wystarczająco blisko siebie, aby można je było odczytać razem , a zatem wyszukiwanie dysku nie jest wprowadzane. Takie systemy plików często wykorzystują heurystykę w celu ustalenia, czy upakowanie ogona jest opłacalne w danej sytuacji, a oprogramowanie do defragmentacji może wykorzystywać bardziej rozwiniętą heurystykę.

Efektywność

W niektórych scenariuszach, w których większość plików jest krótsza niż połowa rozmiaru bloku, na przykład w folderze z małymi plikami kodu źródłowego lub małymi obrazami bitmapowymi, upakowanie ogona może zwiększyć wydajność przechowywania nawet ponad dwukrotnie w porównaniu z systemami plików bez upakowania ogona.

Przekłada się to nie tylko na oszczędność miejsca na dysku, ale może również spowodować wzrost wydajności, ponieważ ze względu na większą lokalizację odniesienia mniej danych trzeba odczytać, co przekłada się również na wyższą wydajność pamięci podręcznej stron . Jednak te zalety mogą być zanegowane przez zwiększoną złożoność implementacji .

Od 2015 roku najczęściej używanymi systemami plików do odczytu i zapisu z obsługą podprzydziału bloków są Btrfs i FreeBSD UFS2 (gdzie nazywa się to „ fragmentacją na poziomie bloku ”). Kiedyś popularne, ReiserFS i Reiser4 nie są już powszechne. [ potrzebne źródło ]

Kilka systemów plików tylko do odczytu w ogóle nie używa bloków, a zatem niejawnie wykorzystuje przestrzeń równie wydajnie, jak systemy plików z podrzędnym przydziałem; takie systemy plików służą również jako formaty archiwów .

Zobacz też