Fragmentacja (system plików)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Przedstawienie fragmentacji i defragmentacji plików

Fragmentacja – niekorzystne zjawisko (fragmentacja zewnętrzna), zachodzące w systemie plików, polegające na pojawianiu się nieciągłości obszarów zapisanych i niezapisanych na dysku twardym komputera. Ich przyczyną jest niedoskonała budowa systemu plików, usuwanie i dodawanie nowych plików oraz zmiany, polegające na dopisywaniu i skracaniu plików już istniejących. Niektóre systemy plików wykazują bardzo małą odporność na fragmentację. Wynika to z mało przemyślanych algorytmów, sterujących alokacją danych na sektorach dysku twardego. Przykładem takiego systemu plików jest FAT.

Fragmentacją określa się także zapisywanie poszczególnych plików na oddalonych od siebie sektorach, co powoduje duże opóźnienia w czasie ich odczytu lub zapisu.

Przyczyny fragmentacji[edytuj | edytuj kod]

Kiedy system plików jest po raz pierwszy zainicjowany na partycji, zawiera jedynie kilka małych wewnętrznych struktur i poza tym jest jednym sąsiadującym blokiem pustego miejsca. Oznacza to, że system plików jest zdolny do ulokowania, nowo stworzonych plików ,w dowolnym miejscu, na partycji . Po dłuższym czasie utworzone pliki mogą być rozstawione blisko wartości optymalnej. Kiedy system operacyjny i aplikację są zainstalowane lub pliki archiwalne są rozpakowywane, oddzielne pliki kończą pojawiać się po kolei. Zatem powiązane pliki umieszczone są blisko względem siebie.

Podczas gdy istniejące pliki są usuwane lub zmniejszane, tworzą się strefy wolnego miejsca, a gdy są powiększane, to zazwyczaj niemożliwe jest aby wznowić dokładnie tam, gdzie plik się skończył, ponieważ inny plik może być tam przydzielony. Dlatego dalsza cześć tego pliku jest przydzielana do nowego fragmentu.  Z czasem, takie same czynniki są nadal obecne. Wolne miejsce, a także często dołączane pliki mają tendencję do większej fragmentacji. Krótsze obszary wolnej przestrzeni oznaczają, że system plików nie jest w stanie przydzielić nowych plików w sposób ciągły i musi je podzielić na fragmenty. Dzieje się tak szczególnie wtedy, kiedy system plików zapełni się i długie obszary wolnej pamięci nie są dostępne.

Zatem nowy plik o nazwie F, który wymaga siedmiu bloków miejsca, może zostać umieszczony w pierwszych siedmiu blokach niedawno zwolnionej przestrzeni poprzednio przechowującej plik B, a pozostałe trzy bloki będą dostępne. Jeśli dodany zostanie nowy plik o nazwie G, który wymaga tylko trzech bloków, może on zająć miejsce po F i przed C.

Przykład[edytuj | edytuj kod]

Powyższy przykład stanowi uproszczenie skomplikowanego tematu. Rozważmy następujący scenariusz: nowy dysk miał pięć plików o nazwach A, B, C, D i E, zapisanych w sposób ciągły oraz w tej kolejności. Każdy plik używa 10 bloków przestrzeni. (Tutaj wielkość bloku jest nieważna) Pozostała część miejsca na dysku to jeden wolny blok. Dzięki czemu dodatkowe pliki można tworzyć i zapisywać po pliku E.

Jeśli plik B zostanie usunięty, tworzony jest drugi obszar z dziesięcioma blokami wolnego miejsca, a dysk staje się pofragmentowany. Pusta przestrzeń jest tam po prostu pozostawiona, oznaczona i dostępna do późniejszego wykorzystania, a następnie ponownie użyta w razie potrzeby. System plików może defragmentować dysk natychmiast po usunięciu, ale spowodowałoby to poważne obniżenie wydajności w nieprzewidywalnym okresie czasu.

Jeśli konieczne jest rozszerzenie F, miejsce natychmiastowo zostaje zajęte, istnieją trzy opcje dla systemu plików:

  1. Dodanie nowego bloku w inne miejsce i  wskazanie, że F ma drugi obszar
  2. Przenoszenie plików  w formie rozwinięcia w inne miejsce, aby pozwolić F pozostać ciągłym
  3. Przenoszenie pliku F, aby mógł być jednym ciągłym plikiem o nowym, większym rozmiarze

Druga opcja jest prawdopodobnie niepraktyczna ze względu na wydajność. Trzecia opcja jest niemożliwa, gdy nie ma jednej, ciągłej, wolnej przestrzeni, wystarczająco dużej, aby pomieścić nowy plik. Tak więc najlepszą opcją jest po prostu stworzenie obszaru w innym miejscu i połączenie nowego obszaru ze starym.

Materiał dodany na końcu pliku F byłby częścią tego samego obszaru. Ale jeśli materiał jest za duży, tak że w ostatnim obszarze nie ma miejsca, to trzeba by stworzyć inny obszar itd.. Ostatecznie system plików ma wolne segmenty w wielu miejscach, a niektóre pliki mogą być rozproszone w wielu zakresach. Czas dostępu do tych plików (lub wszystkich plików) może stać się zbyt długi.

Skutki fragmentacji[edytuj | edytuj kod]

Najpoważniejszym skutkiem fragmentacji systemu plików jest spadek wydajności operacji na plikach. Duża fragmentacja zmusza do częstej relokacji głowicy dysku twardego, co jest czasochłonne. Fragmentacja zmniejsza także prawdopodobieństwo odzyskania danych z dysku w wypadku awarii systemu plików.

Zobacz też[edytuj | edytuj kod]