Defragmentacja - Defragmentation

Wizualizacja fragmentacji, a następnie defragmentacji

W utrzymania systemów plików , defragmentacji jest procesem, który zmniejsza stopień rozdrobnienia . Czyni to fizycznie organizując zawartość urządzenia pamięci masowej używanego do przechowywania plików w jak najmniejszej liczbie sąsiadujących regionów (fragmentów, ekstentów ). Próbuje również tworzyć większe obszary wolnej przestrzeni za pomocą zagęszczenia, aby utrudnić powrót fragmentacji. Niektóre narzędzia do defragmentacji starają się przechowywać mniejsze pliki w jednym katalogu razem, ponieważ często uzyskuje się do nich dostęp po kolei.

Defragmentacja jest korzystna i istotna dla systemów plików na elektromechanicznych napędach dyskowych ( dyskach twardych , stacjach dyskietek i nośnikach optycznych ). Ruch głowic odczytu/zapisu dysku twardego po różnych obszarach dysku podczas uzyskiwania dostępu do pofragmentowanych plików jest wolniejszy w porównaniu z sekwencyjnym dostępem do całej zawartości pliku nie pofragmentowanego bez przesuwania głowic odczytu/zapisu w celu wyszukania innych fragmentów.

Przyczyny fragmentacji

Fragmentacja występuje, gdy system plików nie może lub nie będzie mógł przydzielić wystarczającej ilości ciągłego miejsca do przechowania całego pliku jako jednostki, ale zamiast tego umieszcza jego części w lukach między istniejącymi plikami (zwykle te luki istnieją, ponieważ wcześniej zawierały plik, który system plików ma następnie usunięte lub ponieważ system plików przydzielił nadmiar miejsca dla pliku w pierwszej kolejności). Pliki, które są często dołączane (jak w przypadku plików dziennika), a także częste dodawanie i usuwanie plików (jak w przypadku wiadomości e-mail i pamięci podręcznej przeglądarki), większe pliki (jak w przypadku filmów) i większa liczba plików przyczyniają się do fragmentacji i w konsekwencji wydajności utrata. Defragmentacja próbuje złagodzić te problemy.

Przykład

Przykłady pięciu stanów fragmentacji

W przeciwnym razie pusty dysk zawiera pięć plików, od A do E, z których każdy wykorzystuje 10 bloków miejsca (w tej sekcji blok jest jednostką alokacji systemu plików ; rozmiar bloku jest ustawiany, gdy dysk jest sformatowany i może mieć dowolny rozmiar obsługiwany przez system plików). Na pustym dysku wszystkie te pliki zostaną przydzielone jeden po drugim (patrz przykład 1 na obrazku). Gdyby plik B miał zostać usunięty, byłyby dwie możliwości: oznaczyć miejsce na plik B jako puste, aby można było użyć go ponownie później, lub przenieść wszystkie pliki za B tak, aby puste miejsce znalazło się na końcu. Ponieważ przenoszenie plików może być czasochłonne, jeśli istnieje wiele plików do przeniesienia, zwykle po prostu pozostawia się tam puste miejsce, oznaczone w tabeli jako dostępne dla nowych plików (patrz przykład 2 na obrazku). Kiedy nowy plik F jest przydzielany wymagający 6 bloków przestrzeni, może zostać umieszczony w pierwszych 6 blokach przestrzeni, w której poprzednio znajdował się plik B, a kolejne 4 bloki pozostaną dostępne (patrz przykład 3 na obrazku) . Jeśli zostanie dodany kolejny nowy plik, G, który potrzebuje tylko 4 bloków, może wtedy zajmować miejsce po F i przed C (przykład 4 na obrazku).

Jeśli jednak plik F musi być następnie rozwinięty, istnieją trzy opcje, ponieważ przestrzeń bezpośrednio po nim nie jest już dostępna:

  1. Przenieś plik F do miejsca, w którym może zostać utworzony jako jeden ciągły plik o nowym, większym rozmiarze. Nie byłoby to możliwe, gdyby plik był większy niż największa dostępna ciągła przestrzeń. Plik mógłby być również tak duży, że operacja zajęłaby niepożądanie długi okres czasu.
  2. Przenieś wszystkie pliki po F, aż jeden otworzy wystarczająco dużo miejsca, aby ponownie stał się ciągły. Przedstawia to ten sam problem, co w poprzednim przykładzie: jeśli jest mała liczba plików lub mało danych do przeniesienia, nie jest to duży problem, ale jeśli są tysiące, a nawet dziesiątki tysięcy plików, nie ma Nie wystarczy czasu, aby przenieść wszystkie te pliki.
  3. Dodaj nowy blok w innym miejscu i wskaż, że F ma drugi zasięg (patrz przykład 5 na obrazku). Powtórz to setki razy, a system plików będzie miał wiele małych wolnych segmentów rozproszonych w wielu miejscach, a niektóre pliki będą miały wiele rozszerzeń. Gdy plik ma wiele takich ekstentów, czas dostępu do tego pliku może stać się nadmiernie długi z powodu losowego wyszukiwania dysku podczas jego odczytywania.

Ponadto koncepcja „fragmentacji” nie ogranicza się tylko do pojedynczych plików, które mają wiele rozmiarów na dysku. Na przykład, grupa plików normalnie odczytywanych w określonej kolejności (jak pliki otwierane przez program podczas jego ładowania, które mogą obejmować określone biblioteki DLL , różne pliki zasobów, pliki multimedialne audio/wideo w grze) można uznać za pofragmentowaną, jeśli nie są one w kolejności ładowania na dysku, nawet jeśli te pojedyncze pliki nie są pofragmentowane; Głowice odczytująco-zapisujące będą musiały wyszukiwać te (niepofragmentowane) pliki losowo, aby uzyskać do nich dostęp po kolei. Niektóre grupy plików mogły zostać pierwotnie zainstalowane we właściwej kolejności, ale z czasem rozchodzą się, ponieważ niektóre pliki w grupie są usuwane. Aktualizacje są częstą przyczyną tego, ponieważ większość aktualizatorów, aby zaktualizować plik, najpierw usuwa stary plik, a następnie zapisuje w jego miejsce nowy, zaktualizowany. Jednak większość systemów plików nie zapisuje nowego pliku w tym samym fizycznym miejscu na dysku. Pozwala to niepowiązanym plikom wypełnić pozostawione puste miejsca.

Łagodzenie

Defragmentacja to operacja przenoszenia ekstentów plików (fizycznych bloków alokacji), aby ostatecznie scalić, najlepiej w jeden. Wykonanie tego zwykle wymaga co najmniej dwóch operacji kopiowania: jednej, aby przenieść bloki do wolnego miejsca na dysku, aby mógł nastąpić większy ruch, i drugiej, aby w końcu przenieść bloki w zamierzone miejsce. W takim paradygmacie żadne dane nie są nigdy usuwane z dysku, dzięki czemu operacja może zostać bezpiecznie zatrzymana nawet w przypadku utraty zasilania. Zdjęcie artykułu przedstawia przykład.

Aby zdefragmentować dysk, oprogramowanie do defragmentacji (znane również jako „defragmentator”) może przenosić pliki tylko w ramach dostępnego wolnego miejsca. Jest to intensywna operacja i nie można jej wykonać na systemie plików z małą ilością wolnego miejsca lub bez niego. Podczas defragmentacji wydajność systemu ulegnie pogorszeniu i najlepiej jest pozostawić komputer w spokoju, aby defragmentator nie pomylił się z powodu nieoczekiwanych zmian w systemie plików. W zależności od zastosowanego algorytmu korzystne może być lub nie, wykonanie wielu przebiegów. Reorganizacja związana z defragmentacją nie zmienia logicznej lokalizacji plików (definiowanej jako ich lokalizacja w strukturze katalogów ).

Oprócz defragmentacji plików programów narzędzie do defragmentacji może również skrócić czas ładowania programów i otwierania plików. Na przykład defragmentator Windows 9x zawierał Intel Application Launch Accelerator, który optymalizował programy na dysku, umieszczając zdefragmentowane pliki programów i ich zależności obok siebie, w kolejności, w jakiej program je ładuje, aby szybciej ładować te programy. W systemie Windows dobry defragmentator odczyta pliki Prefetch , aby zidentyfikować jak najwięcej z tych grup plików i umieścić w nich pliki w kolejności dostępu.

Na początku dysku twardego ścieżki zewnętrzne mają wyższą szybkość przesyłania danych niż ścieżki wewnętrzne. Umieszczenie często używanych plików na zewnętrznych ścieżkach zwiększa wydajność. Defragmentatory innych firm, takie jak MyDefrag, przenoszą często używane pliki na ścieżki zewnętrzne i defragmentują te pliki.

Ulepszenia nowoczesnych dysków twardych, takie jak pamięć podręczna RAM , większa prędkość obrotowa talerza, kolejkowanie poleceń ( SCSI / ATA TCQ lub SATA NCQ ) oraz większa gęstość danych w pewnym stopniu zmniejszają negatywny wpływ fragmentacji na wydajność systemu, chociaż wzrost powszechnie używanych danych ilości równoważą te korzyści. Jednak nowoczesne systemy czerpią ogromne korzyści z ogromnych dostępnych obecnie pojemności dysków, ponieważ częściowo wypełnione dyski ulegają fragmentacji znacznie mniej niż dyski pełne, a na dysku twardym o dużej pojemności ta sama partycja zajmuje mniejszy zakres cylindrów, co skutkuje szybszym wyszukiwaniem. Jednak średni czas dostępu nigdy nie może być niższy niż połowa obrotu talerzy, a obrót talerza (mierzony w obr./min) to charakterystyczna prędkość dysków twardych, które odnotowały najwolniejszy wzrost na przestrzeni dziesięcioleci (w porównaniu z szybkością przesyłania danych i czasem wyszukiwania ), więc minimalizacja liczby wyszukiwań pozostaje korzystna w większości aplikacji wymagających dużej ilości pamięci masowej. Defragmentacja polega po prostu na zapewnieniu, że istnieje co najwyżej jedno wyszukiwanie na plik, zliczając tylko wyszukiwania do nieprzylegających ścieżek.

Partycjonowanie

Powszechną strategią optymalizacji defragmentacji i zmniejszenia wpływu fragmentacji jest partycjonowanie dysków twardych w sposób, który oddziela partycje systemu plików, które mają znacznie więcej odczytów niż zapisów, od bardziej niestabilnych stref, w których pliki są tworzone i usuwane często. Katalogi zawierające profile użytkowników są stale modyfikowane (zwłaszcza katalog Temp i pamięć podręczna przeglądarki internetowej tworzą tysiące plików, które są usuwane w ciągu kilku dni). Jeśli pliki z profili użytkowników są przechowywane na dedykowanej partycji (jak to zwykle robi się w zalecanych systemach plików UNIX , gdzie są one zwykle przechowywane na partycji /var), defragmentator działa lepiej, ponieważ nie musi zajmować się wszystkimi plikami statycznymi z innych katalogów. (Alternatywnie można powiedzieć defragmentatorowi, aby po prostu wykluczył określone ścieżki plików.) W przypadku partycji o stosunkowo niewielkiej aktywności zapisu czas defragmentacji znacznie się wydłuża po pierwszej defragmentacji, ponieważ w przyszłości defragmentator będzie musiał defragmentować tylko niewielką liczbę nowych plików .

Defragmentacja offline

Obecność nieruchomych plików systemowych, zwłaszcza pliku wymiany , może utrudniać defragmentację. Pliki te można bezpiecznie przenosić, gdy system operacyjny nie jest używany. Na przykład ntfsresize przenosi te pliki, aby zmienić rozmiar partycji NTFS . Narzędzie PageDefrag może defragmentować pliki systemowe Windows, takie jak plik wymiany i pliki przechowujące rejestr systemu Windows , uruchamiając je podczas rozruchu przed załadowaniem GUI. Od systemu Windows Vista funkcja nie jest w pełni obsługiwana i nie została zaktualizowana.

W systemie NTFS, gdy pliki są dodawane do dysku, główna tabela plików (MFT) musi się powiększać, aby przechowywać informacje o nowych plikach. Za każdym razem, gdy MFT nie może zostać przedłużona z powodu jakiegoś pliku, który stoi na przeszkodzie, MFT zyska fragment. We wczesnych wersjach systemu Windows nie można było go bezpiecznie defragmentować, gdy partycja była montowana, więc Microsoft umieścił blokadę w defragmentującym interfejsie API . Jednak od czasu systemu Windows XP coraz większa liczba defragmentatorów jest w stanie defragmentować MFT, ponieważ interfejs API defragmentacji systemu Windows został ulepszony i obsługuje teraz tę operację przenoszenia. Nawet po wprowadzeniu ulepszeń, pierwsze cztery klastry MFT pozostają nienaruszone przez interfejs API defragmentacji Windows, co powoduje, że niektóre defragmentatory przechowują MFT w dwóch fragmentach: pierwsze cztery klastry, niezależnie od tego, gdzie zostały umieszczone podczas formatowania dysku, oraz następnie reszta MFT na początku dysku (lub gdziekolwiek strategia defragmentatora uzna, że ​​jest to najlepsze miejsce).

Dyski półprzewodnikowe

Podczas odczytu danych z konwencjonalnego elektromechanicznego dysku twardego, kontroler dysku musi najpierw stosunkowo powoli ustawić głowicę na ścieżce, na której znajduje się dany fragment, a następnie poczekać, aż talerz dysku się obróci, aż fragment dotrze do głowicy. Napęd półprzewodnikowy (SSD) jest oparta na pamięci flash , bez ruchomych części, aby losowy dostęp fragmentu plików w pamięci flash nie cierpi na to opóźnienie, co defragmentacji szybkości dostępu zoptymalizowania niepotrzebne. Co więcej, ponieważ pamięć flash może być zapisywana tylko ograniczoną liczbę razy, zanim ulegnie awarii, defragmentacja jest w rzeczywistości szkodliwa (z wyjątkiem łagodzenia katastrofalnej awarii ). Jednak system Windows nadal automatycznie defragmentuje dysk SSD (choć mniej energicznie), aby zapobiec osiągnięciu przez system plików maksymalnej tolerancji na fragmentację. Po osiągnięciu maksymalnego limitu fragmentacji kolejne próby zapisu na dysku kończą się niepowodzeniem.

Podejście i defragmentatory według typu systemu plików

Narzędzie do defragmentacji systemu Windows
  • FAT : Systemy MS-DOS 6.xi Windows 9x są dostarczane z narzędziem do defragmentacji o nazwie Defrag. Wersja dla systemu DOS to ograniczona wersja programu Norton SpeedDisk. Wersja dostarczona z systemem Windows 9x była licencjonowana przez firmę Symantec Corporation , a wersja dostarczona z systemem Windows 2000 i XP jest licencjonowana przez firmę Condusiv Technologies .
  • NTFS został wprowadzony w systemie Windows NT 3.1 , ale sterownik systemu plików NTFS nie zawierał żadnych możliwości defragmentacji. W systemie Windows NT 4.0 wprowadzono defragmentujące interfejsy API, których narzędzia innych firm mogą używać do wykonywania zadań defragmentacji; jednak nie dołączono żadnego oprogramowania do defragmentacji. W systemach Windows 2000 , Windows XP i Windows Server 2003 firma Microsoft dołączyła narzędzie do defragmentacji oparte na Diskeeperze, które korzystało z interfejsów API defragmentacji i było przystawką do zarządzania komputerem . W systemach Windows Vista , Windows 7 i Windows 8 narzędzie zostało znacznie ulepszone i otrzymało nowy interfejs bez wizualnej mapy dysku i nie jest już częścią zarządzania komputerem. Istnieje również wiele bezpłatnych i komercyjnych produktów do defragmentacji innych firm dostępnych dla systemu Microsoft Windows .
  • BSD UFS, a zwłaszcza FreeBSD, wykorzystuje wewnętrzny reallocator, który dąży do zmniejszenia fragmentacji w momencie zapisywania informacji na dysku. To skutecznie kontroluje degradację systemu po długotrwałym użytkowaniu.
  • Btrfs ma dostępną online i automatyczną defragmentację.
  • Linux ext2 , ext3 i ext4 : Podobnie jak UFS, te systemy plików wykorzystują techniki alokacji zaprojektowane w celu utrzymania fragmentacji pod kontrolą przez cały czas. W rezultacie w zdecydowanej większości przypadków defragmentacja nie jest potrzebna. ext2 używa defragmentatora offline o nazwie e2defrag, który nie działa z jego następcą ext3. Jednak inne programy lub programy niezależne od systemu plików, takie jak defragfs, mogą być używane do defragmentacji systemu plików ext3. ext4 jest w pewnym stopniu kompatybilny wstecz z ext3, a zatem ma ogólnie taką samą ilość wsparcia z programów do defragmentacji. Obecnie e4defrag może być używany do defragmentacji systemu plików ext4, w tym defragmentacji online.
  • VxFS ma fsadmnarzędzie, które obejmuje operacje defragmentacji.
  • JFS ma defragfsnarzędzie w systemach operacyjnych IBM.
  • HFS Plus wprowadzony w 1998 roku z systemem Mac OS 8.1 ma szereg optymalizacji algorytmów alokacji w celu defragmentacji plików, gdy są one dostępne bez oddzielnego defragmentatora. Istnieje kilka ograniczeń dotyczących plików kandydujących do defragmentacji „w locie” (w tym maksymalny rozmiar 20 MB). Od wersji OS X 10.3 dostępne jest narzędzie iDefrag firmy Coriolis Systems. W tradycyjnym systemie Mac OS defragmentację można przeprowadzić za pomocą programu Norton SpeedDisk i TechTool Pro.
  • WAFL w systemie operacyjnym ONTAP 7.2 firmy NetApp zawiera polecenie o nazwie reallocateprzeznaczone do defragmentacji dużych plików.
  • XFS udostępnia narzędzie do defragmentacji online o nazwie xfs_fsr.
  • SFS przetwarza funkcję defragmentacji w prawie całkowicie bezstanowy sposób (poza lokalizacją, w której działa), dzięki czemu defragmentacja może zostać natychmiast zatrzymana i uruchomiona.
  • ADFS , system plików używany przez RISC OS i wcześniejsze Acorn Computers , kontroluje fragmentację plików bez konieczności ręcznej defragmentacji.

Zobacz też

Bibliografia

Źródła

  • Norton, Peter (1994) Kompletny przewodnik Petera Nortona do DOS 6.22 , strona 521 – Sams ( ISBN  067230614X )
  • Woody Leonhard, Justin Leonhard (2005) Techniki oszczędzania czasu w systemie Windows XP dla opornych, wydanie drugie, strona 456 – dla opornych ( ISBN  0-764578-839 ).
  • Jensen, Craig (1994). Fragmentacja: stan, przyczyna, lekarstwo . Międzynarodowe oprogramowanie wykonawcze ( ISBN  0-9640049-0-9 ).
  • Dave Kleiman , Laura Hunter, Mahesh Satyanarayana, Kimon Andreou, Nancy G Altholz, Lawrence Abrams, Darren Windham, Tony Bradley i Brian Barber (2006) Winternals: Defragmentation, Recovery, and Administration Field Guide – Syngress ( ISBN  1-597490-792 )
  • Robb, Drew (2003) Zarządzanie dyskami serwera w środowisku Windows Rozdział 7 - AUERBACH ( ISBN  0849324327 )

Linki zewnętrzne