Jak zdefragmentować system plików ext4


65

Proszę, nie chcę żadnej odpowiedzi stwierdzającej, że nie ma takiej potrzeby!

Odpowiedzi:


66

Użyj e4defrag do defragmentacji plików

Jeśli twój system plików ext4 jest tworzony z extentopcją (jest to domyślne w ostatnich dystrybucjach), możesz użyć e4defragnarzędzia do sprawdzenia i defragmentacji go online, tj. Bez montowania.

Po prostu sprawdź poziom fragmentacji za pomocą czegoś takiego (musisz być rootem, aby zobaczyć szczegóły):

sudo e4defrag -c /path/to/myfiles

Oto przykład danych wyjściowych, które można uzyskać:

$ sudo e4defrag -c iso/
<Fragmented files>                             now/best       size/ext
1. /home/gerlos/iso/debian-live-7.5.0-i386-rescue.iso
                                                 7/1         111177 KB
2. /home/gerlos/iso/systemrescuecd-x86-4.4.1.iso
                                                 4/1         100897 KB
3. /home/gerlos/iso/debian-live-7.5.0-amd64-rescue.iso
                                                 6/1         116053 KB
4. /home/gerlos/iso/ubuntu-14.04.2-server-amd64.iso
                                                 8/1          76160 KB
5. /home/gerlos/iso/ubuntu-14.10-desktop-amd64.iso
                                                15/1          75712 KB

 Total/best extents             40/5
 Average size per extent            90577 KB
 Fragmentation score                0
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This directory (iso/) does not need defragmentation.
 Done.

Tak jak w tym przykładzie, przez większość czasu powiesz, że defragmentacja nie jest potrzebna, ale jeśli chcesz to zrobić, możesz użyć (nie musisz używać sudo do defragmentacji własnych plików):

e4defrag /path/to/myfiles

Użytkownicy mogą nawet uruchamiać go na własnych plikach, nie trzeba być rootem, chyba że chcesz pracować na plikach innych użytkowników lub plików systemowych.

e4defragjest w e2fsprogspakiecie i myślę, że jest już zainstalowany w systemie Ubuntu.


2
e4defrag -c zwraca tylko done. Czy to tylko oznacza, że ​​nie ma fragmentacji?
hrzhu

3
Przepraszam, zapomniałem wspomnieć, że musisz uruchomić e4defrag -cz sudolub jako root, aby uzyskać szczegółowe informacje na temat fragmentacji plików. Ale nie trzeba być rootem, aby je zdefragmentować.
gerlos

@gerlos Co się stanie, jeśli spróbuję zdefragmentować główny system plików /?
Pavel Sayekat

2
@PavelSayekat po prostu musisz być rootem (tzn. Używać sudo), aby uruchomić e4defrag /, i nie musisz robić nic specjalnego. e4defragsprawdzi każdy plik tam, więc przygotuj się na czekanie, aż dysk przeczyta wszystko. Pamiętaj, że może to być duża strata czasu. W większości przypadków, jeśli masz wystarczającą ilość wolnego miejsca w systemie plików, będziesz mieć tylko kilka pofragmentowanych plików, a często będą one w katalogu domowym, związane z aktywnością przeglądarki internetowej. Na przykład na moim komputerze stacjonarnym, którego używam na co dzień e4defrag, jest tylko 5 pofragmentowanych plików, wszystkie w katalogu Chromium config i cache.
gerlos

Defragmentuje tylko zakresy wewnątrz samych plików, ale nie pliki między sobą. To znaczy, jeśli mam katalog zawierający trzy pliki w bardzo różnych fizycznych lokalizacjach na dysku, nadal będzie wolno używać tych plików jednocześnie po uruchomieniu tego narzędzia. Czy istnieje sposób na zmianę kolejności plików na dysku lub „defragmentację wolnego miejsca”, jak to się czasem nazywa?
fuzzyTew

29

Spójrz na e2fsprogs . Jest to również dostępne w pakietach Ubuntu. Zapewnia program e4defrag.


5
Jest to naprawdę przydatne tylko w systemach plików ext4, które zostały utworzone z opcją -O, co nie jest wartością domyślną.
dobey

Facet odpowiada na temat defragmentacji, może to być możliwe dzięki e4defrag, pytanie nie określa zewnętrznego dziennika lub nie, nie zasługuje na -1.
Felipe Alcacibar

8
@dobey Ubuntu 12.04 (.3) LTS zawiera extentw ext4zwrotce [fs_types]sekcji w /etc/mke2fs.conf- dlatego jest „domyślny”. Chociaż bez względu na konfigurację komputera w czasie tworzenia, do którego podłączony jest system plików, najlepiej sprawdzić sam system plików: tune2fs -l </dev/with/ext4> | grep extent(lub spójrz na wiersz „Funkcje systemu plików” w pełnym pliku wyjściowym tune2fs). Pamiętam, właśnie uruchomiłem e4defrag -c ...na 100% pełny system plików 1TB extent, i jest tylko 5 pofragmentowanych plików, a „wynik fragmentacji” 0. YMMV.
Richard Michael

@RichardMichael FYI: e2defrag -c /pathdrukuje tylko 5 pierwszych znalezionych pofragmentowanych plików (nawet tych najbardziej pofragmentowanych). Uruchom, e2defrag -v /pathaby zobaczyć, jak to zmniejsza liczebność zasięgu.
Tino,

17

Użyj Gparted do defragmentacji systemu plików

Jeśli masz wystarczająco dużo miejsca na dysku twardym, możesz użyć Gparted do defragmentacji systemu plików ( ext2, ext 4, nfts itp .). Musisz uruchomić komputer z płyty rozruchowej CD / DVD / USB, ponieważ napęd, nad którym pracujesz, musi zostać odmontowany. Aby to zadziałało, musisz mieć więcej niewykorzystanego miejsca niż wykorzystanego, co może chwilę potrwać.

  • Uruchom z płyty rozruchowej.
  • Uruchom gparted i zmniejsz partycję zawierającą dane, które chcesz defragmentować, nieco ponad ilość danych.
  • Upewnij się, że partycja, którą chcesz defragmentować, jest ostatnią partycją na dysku, przenosząc ją na koniec (może być konieczne utworzenie przed nią innej pustej partycji, jeśli na dysku jest tylko jedna partycja).

Z partycją, którą chcesz defragmentować jako ostatnią partycję na dysku:

  • powiększ partycję po lewej stronie do maksymalnego rozmiaru. Spowoduje to przeniesienie danych partycji na koniec dysku.
  • Po zakończeniu zmniejsz partycję do poprzedniego rozmiaru.
  • Jeśli utworzono pustą partycję, która ma więcej niż jedną na płycie, możesz ją teraz usunąć.
  • Przenieś partycje z powrotem do pierwotnej kolejności i przywróć partycję, którą chcesz zdefragmentować z powrotem do pełnego rozmiaru.

Teraz jest defragmentowany.

I wiem, że nie interesuje Cię, dlaczego / dlaczego nie defragmentować ubuntu, ale i tak opublikuję link do: dlaczego-defragmentacja jest niepotrzebna .


Po skurczeniu się i przesunięciu w prawo, dlaczego odrastasz w lewo, a następnie ponownie się kurczysz, zamiast tylko poruszać się w lewo?
Jason C

Zauważyłem również, że po kroku odejścia w lewo same dane zostały faktycznie ponownie przeniesione w lewo (czego dowodem są ruchome dane podzielone na partie, zweryfikowane później przez bezpośrednie sprawdzenie urządzenia blokowego), więc jeśli nie jest to zachowanie zależne od wersji / systemu plików, ostateczne skurcz + odrastanie można pominąć. To wydaje się być wystarczające, aby tylko zrobić: 1) kurczą się i ruch w prawo, 2) stosuje się, 3) rosną w lewo.
Jason C

Proste przeniesienie partycji, którą chcesz zdefragmentować, niekoniecznie powoduje przeniesienie jej do rzeczywistego końca HD. Zwiększenie partycji do lewej do maksymalnej wielkości gwarantuje, że partycja końcowa zostanie „przeniesiona” na sam koniec dysku twardego.
James

Przesunięcie go w prawo powoduje przeniesienie go na koniec dysku twardego. Pasek podziału u góry graficznego interfejsu graficznego z podziałem jest w rzeczywistości dokładnym odwzorowaniem układu danych (no cóż, przynajmniej tak widoczne dla systemu operacyjnego, urządzenia flash na przykład odwzorowują logicznie na fizyczne lokalizacje po drugiej stronie kontrolera, ale dla typowy dysk twardy, jest dokładny). Można to zweryfikować, obserwując nową lokalizację początkową w tablicy partycji. :)
Jason C

Ach, źle komunikujemy się. Miałeś na myśli zmianę kolejności partycji, aby była ostatnia. Miałem na myśli przeniesienie partycji na koniec dysku, i to właśnie myślałem, że miałeś na myśli (możesz przenosić partycje na dysku z gparted niezależnie od ich zmiany kolejności). :)
Jason C

3

Defragmentacja systemu plików ext4 w systemie Linux Dodaję tę odpowiedź, aby pokazać, w jaki sposób możemy znaleźć informacje o różnych wbudowanych narzędziach systemu Linux do wykonywania często wykonywanych operacji. ty

Pamiętaj też, że musisz robić to jako superużytkownik tylko wtedy, gdy chcesz przeprowadzić defragmentację bez odmontowywania.

Za pomocą polecenia apropos

e4defrag -vc /path #verbose output with count

2

Ubuntu 14.04 LTS umieszcza (przynajmniej dysk podstawowy) na partycji EXT4, jeśli jest instalowany w czystej instalacji (nie rezydującej na Win-Junk).

W takim przypadku, jeśli właśnie skonfigurowałeś nowy system lub sformatowałeś go świeżo na starym systemie, a następnie wykonałeś czystą instalację, a następnie domyślnie z 14.04 LTS, masz Partycję EXT4 na /dev/sda1.

Teraz wystarczy otworzyć terminal ( CTRL- ALT- T) i wpisać:

sudo e4defrag -c /dev/sda1

i bądź cierpliwy, aż „kontrola” zostanie zakończona i otrzymasz raport fragmentacji z powrotem.

Jeśli nie masz pewności co do partycji EXT4 na dysku systemu operacyjnego, po prostu przejdź do HOME i wpisz df -T. Zobacz, jakie są ustawione partycje sda ​​* (wypróbuj to w 14.04LTS, a zobaczysz EXT4, chyba że wybierzesz inny typ partycji podczas instalacji dysku twardego).


Dostałem trochę nie na temat i prawie nie dodałem żadnej wartości do pytania, szczególnie w ostatecznej wersji.
Fernando Silveira

Możesz defragmentować więcej niż jedną partycję za pomocą tego samego polecenia: sudo e4defrag / dev / sda1 / dev / sda2
ProgAndPlay

1

e2fsck -D /dev/sda1 optymalizuje katalogi poprzez sortowanie i ponowne indeksowanie, co zwykle przyspiesza działanie. Może nie być uważany za pełną defragmentację systemu plików, ale nie wszystkie systemy mają e4defrag.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.