Dlaczego Windows Defragmenter prawie nic nie robi na dysku z 23% pustej przestrzeni?

8

Podczas próby defragmentacji woluminu NTFS o wielkości 80 GB (rozmiar klastra 4 KB) napotkałem dziwny problem: proces defragmentacji jest bardzo szybki, ale także bardzo bezużyteczny. Graficznie widziałem, jak niektóre pliki się poruszają, ale poziom fragmentacji pozostaje taki sam.

Oto jak to wygląda po defragmentacji woluminu:

Obraz jest zrzutem ekranu Windows Defragmenter na Windows XP, z dwoma graficznymi widokami dysku: przed i po;  oba są dość podobne i wykazują intensywną defragmentację

Wiem, że istnieje 15% wolnego miejsca. W rzeczywistości objętość jest bezpłatna i wynosi 23%.

Oczywiście Windows Defragmenter pokazuje kilka plików, których nie był w stanie defragmentować. Niektóre są duże (do 1 GB), ale niezbyt duże, aby nie można było ich przenieść podczas defragmentacji. Nie liczę, jak sądzę, hiberfil.sys i pagefile.sys (są nieruchome, prawda?).

Jak zdiagnozować ten problem?

PS. Instalowanie innych produktów do defragmentacji, jak sugerowano w podobnym pytaniu , nie jest rozwiązaniem w moim przypadku.

Arseni Mourzenko
źródło
15% to nie jest twardy limit, tylko przybliżony szacunek.
user1686
1
Możliwe, że fragmenty są na tyle duże, że koszt przeniesienia ich razem jest równy lub większy niż korzyść z przeniesienia ich razem.
surfasb
Czy duże, nieefragmentowalne pliki są przypadkiem otwarte? Czy możesz wymienić niektóre naprawdę rozdrobnione duże?
William C
@William C: są to pliki osobiste użytkowników (w tym pliki niezalogowanych użytkowników). Nie są używane podczas defragmentacji.
Arseni Mourzenko,

Odpowiedzi:

5

Defragmentator nie musi nigdzie przenosić dużych plików: całe wolne miejsce jest nieco równomiernie rozmieszczone w małych porcjach, więc nie byłoby żadnej poprawy, gdyby $ VERYBIGFILE zmienił się, powiedzmy, z 20 bliskich kawałków na 10 rozproszonych po całej powierzchni sztuk.

Jednym z kroków wykonanych przez defragmentator jest kompaktowanie plików, w którym ciągłe, ale osobne pliki są tasowane, tworząc pojedynczy blok danych. Spróbuj uruchomić to kilka razy, a z czasem powinno być lepiej.

Możesz także spróbować contig -v somebigfiledefragmentować pliki jeden po drugim.

użytkownik1686
źródło
4

Spróbuj ponownie uruchomić komputer w trybie awaryjnym, a następnie wyłącz jak najwięcej usług. Otwarte pliki nie będą przenoszone ani defragmentowane, więc pomysł, aby uruchomić jak najmniej procesów.

Lub wyjmij dysk i zainstaluj go (jako dysk danych) na innym komputerze w celu defragmentacji.

trociny
źródło
1

Możesz wyłączyć hibernację i powinna ona usunąć plik hiberfil.sys. Jeśli nie, możesz go ręcznie usunąć po wyłączeniu hibernacji. Możesz także wyłączyć plik strony. Po zniknięciu tych dwóch dużych, nieefragmentowalnych plików, możesz lepiej defragmentować wyniki. Po zakończeniu możesz ponownie włączyć plik strony i hibernację. Mamy nadzieję, że po defragmentacji woluminu dwa pozostałe pliki zostaną umieszczone w plikach ciągłych.

Keltari
źródło
1

Sysinternals ma narzędzie Defrag Page File . Nie jestem pewien, jak to będzie działać z ustawionym dyskiem w obecnej postaci, ale prawdopodobnie warto spróbować ułożyć te większe pliki i ułożyć je z dala, aby standardowa defragmentacja mogła skuteczniej dostać się do innych plików.

music2myear
źródło
1

Jeśli defragmentacja w trybie awaryjnym nie pomaga, to albo

  • Opróżnij foldery pobierania wstępnego i pobierania super. (Drżyj!) Te foldery mówią Defragowi, aby nie defragmentował niektórych plików, co jest dokładnym przeciwieństwem tego, co chcesz,

lub

  • Wyjmij dysk i defragmentuj go, gdy jest podłączony do innego komputera. To gwarantuje, że otwartych plików jest jak najmniej, a Defrag nie bierze pod uwagę twoich danych PF.
William C.
źródło