Dlaczego ext2 i następcy nie potrzebują defragmentacji?

Odpowiedzi:

9

Jednym ze sposobów, w jaki system plików ext4 utrzymuje kontrolę fragmentacji, jest proces opóźnionego przydzielania (domyślny tryb przydzielania ext4).

Opóźniony przydział polega na odłożeniu mapowania nowo zapisanych bloków danych pliku na bloki dyskowe w systemie plików do czasu zapisu.

Działa to poprzez przydzielenie większości bloków do pliku w tym samym czasie, gdy znana jest całkowita liczba bloków (lub przynajmniej boisko) w każdym pliku. Pozwala to alokatorowi bloków ( mballocwspomnianemu w odpowiedzi MMK) na lepszą pracę polegającą na znalezieniu odpowiedniej wielkości wolnego miejsca do umieszczenia pliku.

Aaron
źródło
Pamiętaj, że w rzeczywistości jest to tylko cecha sterownika ext4 . Teraz nie wiem, czy bardzo technicznie rzecz biorąc , który nie mógłby zamontować starszego fs z taką opcją (przynajmniej częściowo ). W tej chwili DELALLOC jest oznaczony tylko jako ext4 .
mirh
8

W systemie plików ext3 dla każdego bloku znajduje się alokator bloków dla dysku, więc jest całkiem możliwe, że fragmentacja może wystąpić.

Jednak w systemie plików ext4 istnieje wieloblokowy alokator, który może opóźnić zapisywanie bloków na dysku, dzięki czemu może on przydzielić kilka bloków na raz na jednym fragmencie dysku, aby umożliwić ciągły zapis - i tak dalej, jest mniej prawdopodobne, że fragmentacja może wystąpić (wciąż jest to możliwe, tylko mniej prawdopodobne)

mmk
źródło
6

Przynajmniej dla Ext2 (i wydaje mi się, że Ext3, choć jestem mniej pewien), w formacie / strukturze na dysku nie ma nic, co mogłoby zapobiec defragmentacji.

Brak potrzeby defragmentacji pozostanie na poziomie implementacji, który będzie różny w zależności od systemu operacyjnego. Oznacza to, że w zależności od implementacji plik w Ext2 może być fragmentowany.

Jeśli unikniesz fragmentacji, będzie to prawdopodobnie spowodowane opóźnionym przydzielaniem fizycznych bloków. Oznacza to, że na pewnym poziomie implementacji system plików będzie buforować dane (i uzyskiwać do nich dostęp za pomocą logicznego numeru bloku) do czasu zapisania / zatwierdzenia na dysku. Kiedy dane są ostatecznie zapisywane na dysku, należy przypisać bloki fizyczne. Algorytm alokacji może (ale nie musi) przydzielać szereg ciągłych dostępnych fizycznych bloków dla danych.

Mam nadzieję że to pomoże.


źródło
W rzeczywistości istnieje narzędzie e2defrag, które może być potrzebne (na raczej pełnych dyskach z wieloma losowo zapisanymi plikami). Opóźniony alokator ext4 czyni to jeszcze mniej prawdopodobnym. Ale nawet ext2 miał jakieś opóźnione przydzielanie / zapisywanie, co czyniło mniej wymaganym uruchomienie narzędzia do defragmentacji niż pierwotny alokator MS-DOS®.
mirabilos