Jest to pytanie, które bardzo często pojawia się na różnego typu forach i w różnych dyskusjach kiedy nowi użytkownicy Pingwina nie są w stanie znaleźć narzędzia do defragmentacji dysku dla nowo zainstalowanego systemu, które przecież tak często używali pod Windowsem. Mam nadzieję, że poniższy opis odpowie Wam na pytanie, dlaczego niektóre systemy są mniej podatne na defragmentacje niż inne i dlaczego mniej cierpią z tego powodu.

Dysk Twardy

Od razu mówię, że ludzie szukający tu stricto technicznych odpowiedzi zawiodą się. Zamiast wdawać się w czysto techniczne dyskusje postaram się zobrazować to w ASCII… dla niektórych pewnie będzie to warte więcej niż tysiąc słów.

Zaczynajmy więc.

Tutaj jest grafika która posłuży mi do wyjaśnienia problemu.

   a b c d e f g h i j k l m n o p q r s t u v w x y z

a  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
b  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
e  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Jest to odwzorowanie (bardzo małego) dysku twardego. Jako że dysk jest kompletnie pusty stąd mamy same zera. Litery a-z na samej górze i te po lewej stronie posłużą nam do odwzorowania każdego bajta danych. W lewym górnym rogu mamy “aa”, w górnym prawym “za”, w dolnym rogu jest “az”. Mam nadzieję, że łapiecie o co chodzi.

Zaczniemy od prostego systemu plików z grona tych, który jest dobrze znany większości użytkowników. Będzie on potrzebował od czasu do czasu defragmentacji danych.

Zajmiemy się systemem plików który w nazwie zawiera FAT. Prawie każdy z nas go używa… i nieważne czy używasz Linuksa czy Windowsa… na pewno miałeś z nim jakąś styczność… chociażby używając pamięci Flash pod USB.

Niestety FAT bardzo cierpi z powodu fragmentacji danych.

Dodamy plik do naszego dysku i nasz system plików będzie wyglądał następująco:

   a b c d e f g h i j k l m n o p q r s t u v w x y z

a  T O C h e l l o . t x t a e l e 0 0 0 0 0 0 0 0 0 0
b  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e  H e l l o , _ w o r l d 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

(Wiersze g-z zostały pominięte dla większej przejrzystości)

Spróbujmy wytłumaczyć to co widzicie… Pierwsze cztery rzędy na dysku są zajęte przez tzw. “Table of contents”, albo TOC. To TOC przechowuje informacje o każdym pliku na naszym dysku. W powyższym przykładzie TOC zawiera jeden plik o nazwie “hello.txt” i informuje nas, że zawartość tego pliku może być odnaleziona pomiędzy “ae” i “le”. Przechodzimy do tej lokacji i widzimy, że zawartość tego pliku to “Hello, world”.

Do tej pory logiczne? Dodajmy kolejny plik:

   a b c d e f g h i j k l m n o p q r s t u v w x y z

a  T O C h e l l o . t x t a e l e b y e . t x t m e z
b  e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e  H e l l o , _ w o r l d G o o d b y e , _ w o r l d
f  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Jak widzicie, kolejny plik został dodany bezpośrednio za pierwszym. Idea tego jest taka, że jeżeli pliki są trzymane razem, to dostęp do nich będzie szybszy i łatwiejszy. Jak większość z Was pewnie wie, najwolniejszą częścią dysku twardego jest głowica… im mniejszą drogę ma do przebycia tym szybciej będziemy mogli zapisać/odczytać dane.

Problem pojawia się wtedy, kiedy zachce nam się edytować pierwszy plik. Powiedzmy, że chcemy dodać do naszego słowa “Hello” wykrzykniki..

I mamy problem… przecież nie ma na to miejsca… plik “bye.txt” stoi nam na drodze to pełni szczęścia. Teraz mamy dwie opcje, z których żadna nie jest idealna:

  1. Usuniemy plik z jego oryginalnego miejsca na dysku i dodamy nowy, większy plik po drugim (bye.txt) - towarzyszy temu wiele procedur zapisu/odczytu danych.
  2. Podzielimy plik tak żeby istniał w dwóch miejscach, ale żeby nie było żadnych wolnych przestrzeni. Sprawa szybka do wykonania, ale znacząco spowolni dostęp do pliku z oczywistych powodów.

Spróbujmy to zilustrować… Problem nr 1.

   a b c d e f g h i j k l m n o p q r s t u v w x y z

a  T O C h e l l o . t x t a f n f b y e . t x t m e z
b  e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e  0 0 0 0 0 0 0 0 0 0 0 0 G o o d b y e , _ w o r l d
f  H e l l o , _ w o r l d ! ! 0 0 0 0 0 0 0 0 0 0 0 0

Problem nr 2:

   a b c d e f g h i j k l m n o p q r s t u v w x y z

a  T O C h e l l o . t x t a e l e a f b f b y e . t x
b  t m e z e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e  H e l l o , _ w o r l d G o o d b y e , _ w o r l d
f  ! ! 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Problem nr 2 pokazuje nam, dlaczego takie systemy plików potrzebują częstej defragmentacji. Pliki są umieszczone bezpośrednio po sobie, a co za tym idzie za każdym razem kiedy będziemy powiększać plik, będzie on coraz bardziej fragmentowany (dzielony). Kiedy natomiast rozmiar pliku się zmiejszy to powstanie pusta luka.

Nie trzeba geniusza żeby się domyślić, ze po krótkim czasie nasz dysk będzie zaśmiecony podzielonymi plikami i lukami… oczywiście idzie za tym spory spadek wydajności dysku. Może się zdarzyć na przykład, że część pliku znajduje się na początku dysku, część w środku, a część na końcu obszaru danych.

Spróbujmy teraz zobaczyć, co się stanie jeżeli przyjmiemy inną strategię. Pierwszy system plików jest idealny, kiedy mamy tylko jednego użytkownika, który będzie używał plików mniej więcej w kolejności ich utworzenia i nie będzie ich za często modyfikował… dość nierealne prawda?

Linux jednak w swym założeniu został stworzony jako system dla wielu użytkowników. Przyjęto, że będzie będzie kilku użytkowników, którzy będą próbować modyfikować ten sam plik w tym samym czasie… a do tego potrzebna już jest kompletnie inna strategia przechowywania danych.

Kiedy na Linuksowym systemie plików stworzymy plik o nazwie “hello.txt” będzie on wyglądał tak:

   a b c d e f g h i j k l m n o p q r s t u v w x y z

a  T O C h e l l o . t x t h n s n 0 0 0 0 0 0 0 0 0 0
b  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n  0 0 0 0 0 0 0 H e l l o , _ w o r l d 0 0 0 0 0 0 0
o  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Gdy zostanie dodany kolejny plik:

   a b c d e f g h i j k l m n o p q r s t u v w x y z

a  T O C h e l l o . t x t h n s n b y e . t x t d u q
b  u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n  0 0 0 0 0 0 0 H e l l o , _ w o r l d 0 0 0 0 0 0 0
o  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u  0 0 0 G o o d b y e , _ w o r l d 0 0 0 0 0 0 0 0 0
v  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Przewaga takiego rozwiązania polega na tym, ze głowica dysku znajduje się pośrodku dysku i większość plików będzie blisko siebie.

Plus jeżeli spróbujemy dodać wykrzykniki do naszego pliku, zobaczcie ile sprawi nam to kłopotu:

   a b c d e f g h i j k l m n o p q r s t u v w x y z

a  T O C h e l l o . t x t h n u n b y e . t x t d u q
b  u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n  0 0 0 0 0 0 0 H e l l o , _ w o r l d ! ! 0 0 0 0 0
o  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u  0 0 0 G o o d b y e , _ w o r l d 0 0 0 0 0 0 0 0 0
v  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Dokładnie… wcale.

Pierwszy system plików próbuje wstawiać wszystkie pliki najbliżej początku jak to tylko możliwe, a to sprawia, że po jakimś czasie pliki ulegną fragmentacji i nie zostanie nic wolnego miejsca.

Drugi natomiast rozrzuca pliki po dysku żeby było miejsce na ich ewentualną edycję. Może też rozmieszczać pliki “w locie” gdyż jest na to dużo miejsca.

Defragmentacja pierwszego typu systemu plików jest procesem bardzo pracochłonnym i niezbyt praktycznym podczas normalnego użytkowania.

Defragmentacja drugiego typu systemu plików staje się problemem tylko wtedy, gdy nie ma już wolnych przestrzenie gdzie większe pliki mogłby się zmieścić bez fragmentacji. Do czasu aż będziecie używać więcej niż 80% powierzchni dysku raczej to wam nie grozi.

Warto też wiedzieć, że nawet jeśli system twierdzi, że dysk jest kompletnie zdefragmentowany to biorąc pod uwagę geometrię dysku fragmentacja może cały czas być obecna… przeciętny dysk ma kilka talerzy…

Powiedzmy teraz, że nasz przykładowy dysk ma dwa talerze, gdzie pierwszy zajmuje przestrzeń aa do zm, natomiast drugi od an do zz:

   a b c d e f g h i j k l m n o p q r s t u v w x y z

a  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
b  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
e  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

   a b c d e f g h i j k l m n o p q r s t u v w x y z

n  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Poniższy plik nie będzie uważany jako fragmentowany gdyż zachowana jest ciągłość od rzędu m do n. Nie zmienia to jednak faktu, że głowica będzie musiała lecieć od samego końca pierwszego talerza do początku drugiego żeby odczytać ten plik.

   a b c d e f g h i j k l m n o p q r s t u v w x y z

a  T O C h e l l o . t x t r m e n 0 0 0 0 0 0 0 0 0 0
b  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
e  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 H e l l o , _ w o

   a b c d e f g h i j k l m n o p q r s t u v w x y z

n  r l d ! ! 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Mam nadzieję, że powyższy opis chociaż trochę pomógł Wam zrozumieć budowę systemu plików, jak bardzo dysk może cierpieć z powodu fragmentacji danych oraz dlaczego pod Linuksem nie ma narzędzi do defragmentacji dysków. Jeżeli nie, to jestem otwarty na sugestie. Piszcie.
Oryginalny artykuł

bstn437l.jpg

Łukasz Brodowski signature

Powiązane wpisy

42 Komentarzy dla “Dlaczego defragmentacja dysku pod Linuksem nie jest potrzebna”  

  1. Gravatar Icon 1 Zajec Cytuj Przeglądarka Opera 9.24 na SuSE Linux

    Ciekawe przedstawienie problemu jak na ten poziom zagłębienia się w całą sprawę struktury dysku, fragmentacji. Mógłbyś jedynie pokolorować swoje piękne “grafiki” aby było czytelniej :-)

  2. Gravatar Icon 2 matlas Cytuj Przeglądarka Opera 9.24 na Linux

    Spoko artykul. Dzieki!

  3. Gravatar Icon 3 Jakub Narebski Cytuj Przeglądarka MultiZilla 1.7.9.0a na Linux

    Do wizualizacji fragmentacji dysku pod Linuksem można użyć davtools (Disk Allocation Viewer): http://davtools.sourceforge.net/

  4. Gravatar Icon 4 pav Cytuj Przeglądarka Mozilla Firefox 2.0.0.8 na Ubuntu Linux

    “towaRZyszy temu wiele procedur”

  5. Gravatar Icon 5 skiter Cytuj Przeglądarka Mozilla Firefox 2.0.0.9 na Windows XP

    No w sumie racja, jezeli chodzi o FAT i FAT32, ale juz np NTFS jakos lepiej sobie radzi z fragmentacja, nie jest juz taki pocięty, co prawda dalej jest problem ale juz mniejszy, standardowe zabawki z Windows, srednio sobier radza z fragmentowanem danych, ale jest tez troszke innego softu co lepiej sie sprawuje. Szkoda ze opisales system Ext2/3 a nie napisales nic i “księgowanych” systeemach pod linux, te dla odmiany maja jeszcze szybszy dostep do danych gdyż wykorzystuja dla przykladu polowe taleza na TOC ( indeksy plikow ), a reszta na dane, i teraz glowica wie gdzie znajdzie “cały” plik, lub jezeli juz nawet fragmenty to i tak to idzie o niebo szybciej, bo zna z gory adresy dysku, a nie szuka tych plikow po calym talezu jak to jest w przypadku Windows. :)

  6. Gravatar Icon 6 sq5bpf Cytuj Przeglądarka Mozilla Firefox 2.0.0.9 na Linux

    To, ze “dlaczego pod Linuksem nie ma narzędzi do defragmentacji dysków” to nie jest do konca prawda. Od dawna byl e2defrag. Wprawdzie nikt go nie uzywa, nie dziala najlepiej z ext3 i chyba od dawna jest nierozwijany, ale jest :)

  7. Gravatar Icon 7 sq5bpf Cytuj Przeglądarka Mozilla Firefox 2.0.0.9 na Linux

    To, ze ?dlaczego pod Linuksem nie ma narzędzi do defragmentacji dysków? to nie jest do konca prawda. Od dawna byl e2defrag. Wprawdzie nikt go nie uzywa, nie dziala najlepiej z ext3 i chyba od dawna jest nierozwijany, ale jest :)

  8. Gravatar Icon 8 Smiecho Cytuj Przeglądarka Mozilla Firefox 2.0.0.9 na Windows XP

    “Defragmentacja drugiego typu systemu (…) do czasu aż będziecie używać więcej niż 80% powierzchni dysku raczej wam nie grozi.”
    No dobrze. A co się dzieje, gdy jednak danych na dysku mam dużo i chcę wpakować plik tam plik większy niż największa wolna przestrzeń? Czy plik jest dzielony? Czy włącza się jakieś automatyczne przesuwanie małych plików, by móc zmieścić ten nowy duży? Co się dzieje, gdy dużo pracuję na dysku z małą ilością miejsca?

  9. Gravatar Icon 9 Bastek Cytuj Przeglądarka Opera 9.50 na Linux

    “Nie zmienia to jednak faktu, że głowica będzie musiała lecieć od samego końca pierwszego talerza do początku drugiego żeby odczytać ten plik.”

    Moje uwagi:
    1. Z tego zdania wynika, że dysk ma jedną głowicę na kilka talerzy :-) 2. Nie sądzisz, że projektanci softu do dysków to nie są amatorzy i tak ustawili numerację sektorów na dwóch kolejnych talerzach, żeby żadnego skoku głowicy nie było? (albo czytają dane z dwóch talerzy z przeplotem, żeby zwiększyć transfer?)

  10. Gravatar Icon 10 Zbigniew Czernik Cytuj Przeglądarka Mozilla Firefox 2.0.0.9 na Linux

    “Wiersze g-z zostały pominięte dla większej przejRZystości”
    Poza tym fajny wpis. :)

  11. Gravatar Icon 11 rw Cytuj Przeglądarka Mozilla Firefox 2.0.0.9 na Windows XP

    ja kilka razy bez problemu uzylem e2defrag na ext3 - w celach testowych, nie powiem, nawet dziala :)

  12. Gravatar Icon 12 q23 Cytuj Przeglądarka Opera 9.22 na Windows XP

    Dobry artykuł, godny polecenia hardware’owym laikom:)

  13. Gravatar Icon 13 lukasiak Cytuj Przeglądarka Mozilla Firefox 1.5.0.7 na Linux

    ?Nie zmienia to jednak faktu, że głowica będzie musiała lecieć od samego końca pierwszego talerza do początku drugiego żeby odczytać ten plik.? - chyba NIE będzie musiała - po to wymyślono cylindry, aby przy większej liczbie talerzy zapis następował cylinder po cylindrze (cylinder jak sama nazwa wskazuje - zbiór ścieżek o tej samej średnicy - walec), a nie systemem - “jak się strona zapełni, to idziemy na drugi talerz” (ang. head - strona talerza, nie mylić z polską “głowicą” w znaczeniu “badziewie do przetwarzania zmian pola EM na prąd”). Dzięki temu ruchy głowic są zminimalizowane do niezbędnego poziomu i systemowi lub systemowi plików NIC do tego - dba o to “elektronika” dysku. Jeśli ktoś nie wierzy - niech sprawdzi (np. wchodząc do “biosu”) ile talerzy ma jego dysk, liczba talerzy=liczba heads/2. Potem wystarczy się zastanowić, czy te np. 32 talerze zmieszczą się w naszym dysku … i dlaczego są 32 talerze, choć w rzeczywistości jest jeden… (sprawdzenie tego jest już niestety “niszcące” dla dysku ;) Sprzęt często “oszukuje” użytkownika, system lub inny sprzęt, aby rozmawiać standatdowym językiem i w rzeczywistości sprawy są bardziej skomplikowane, niż w teorii. Poza tym artykuł jest jak najbardziej OK!

  14. Gravatar Icon 14 nbvcxz Cytuj Przeglądarka Opera 9.50 na Windows XP

    Artykuł fajny i w prosty sposób tłumaczy podstawowe zasady działania systemu plików. Ale z tezą nie do końca się zgadzam - systemy typu ext (2,3 i obecnie 4) to po prostu inna zasada działania; fragmentacja plików jest tyle że nieco mniejsza. Dobrym “defragiem są programy typu Shake http://vleu.net/shake/ . Najbardziej zaawansowaną koncepcją defragmentacji była (nieststy dotąd nie działająca) defragmentacja kompresja podczas działania systemu (wolne zasoby / niski priorytet) w reiser4 (repacker plug-in).

  15. Gravatar Icon 15 lukas Cytuj Przeglądarka Debian IceWeasel 2.0.0.8 na Debian GNU/Linux

    A ja myślałem, że cały artykuł, to wstęp do reszty ; ]

  16. Gravatar Icon 16 Piotr Gasidlo Cytuj Przeglądarka Mozilla Firefox 2.0.0.8 na Ubuntu Linux

    IMHO artykuł trochę nieadekwatny do rzeczywistości. Defragmentacja dla ext3 _jest_ potrzebna. Trwają pracę aby udostępnić mechanizmy defragmentacji online dla ext4. Odsyłam do artykułu:

    http://www.linuxinsight.com/files/ols2007/sato-reprint.pdf

  17. Gravatar Icon 17 Łukasz Cytuj Przeglądarka Mozilla Firefox 2.0.0.8 na Linux

    W najbliższym czasie postaram się poprawić artykuł o poprawki zawarte w komentarzach. Dzięki!

  18. Gravatar Icon 18 Karol Cytuj Przeglądarka Mozilla Firefox 2.0.0.8 na Ubuntu Linux

    Swietny artykul, prosto i przejrzyscie. Wyrazy uznania.

  19. Gravatar Icon 19 pleple Cytuj Przeglądarka Mozilla Firefox 2.0.0.8 na Linux

    W przypadku posiadania wielu talerzy, bloki nie są ułożone tak jak Ty to pokazałeś. Zamiast tego, np mając dwa talerze, bloki parzyste znajdą się na jednym a nieparzyste na drugim. Taki wniosek przynajmniej wynika z testów prędkości względem numeru bloku. Wysokie numery są wewnątrz dysku a niskie na zewnątrz, nie ma skoków które występowałyby gdyby bloki były numerowana tak jak przedstawiłeś.

  20. Gravatar Icon 20 wojtek Cytuj Przeglądarka Flock 1.0.1 na Windows XP

    Przydało by się abyś podał źródło z którego korzystałeś, jak mniemam jest to ten artykuł sprzed roku: http://geekblog.oneandoneis2.org/index.php/2006/08/17/why_doesn_t_linux_need_defragmenting

  21. Gravatar Icon 21 Łukasz Cytuj Przeglądarka Mozilla Firefox 2.0.0.8 na Linux

    @Piotr Gasidlo

    Taj jak napisałem, jeżeli nie zapełnisz dysku powyżej 80%, to fragmentacja praktycznie nie zajdzie. Oczywiście nie ma siły, żeby nie było podzielonych plików jeżeli chcemy zapchać dysk do ostatniego bajta danych.

  22. Gravatar Icon 22 sunrise_son Cytuj Przeglądarka Mozilla Firefox 1.0.8 na Fedora Linux

    A pytanie z innej beczki. Jak zrobimy fsck, to wyskakuje że x% plików jest nieciągłych (not continous). Czy to określa naszą fragmentację? I co jest zalecane, kiedy ten procent jest poważny?

  23. Gravatar Icon 23 AdanK Cytuj Przeglądarka Mozilla Firefox 2.0.0.9 na Windows XP

    Ponoć MacOS X robi defragmentację w tle, jak dysk chwilowo nie ma nic do roboty.

  24. Gravatar Icon 24 coffee_man Cytuj Przeglądarka Mozilla Firefox 2.0.0.6 na Linux

    Super art! Pozdrawiam!

  25. Gravatar Icon 25 Bartosz Feński Cytuj Przeglądarka Opera 9.24 na Linux

    “Przyjęto, że będzie będzie kilku użytkowników, którzy będą próbować modyfikować ten sam plik w tym samym czasie? a do tego potrzebna już jest kompletnie inna strategia przechowywania danych.”

    Jak kilku użytkowników zacznie modyfikować ten sam plik w tym samym czasie to ogólnie jest pozamiatane i fragmentacja w takim przypadku to najmniejsze zmartwienie.

    pozdr,
    fEnIo

  26. Gravatar Icon 26 Łukasz Cytuj Przeglądarka Mozilla Firefox 2.0.0.8 na Linux

    @rw “e2defrag na ext3 ” Lepiej tego nie rób… w łatwy sposób możesz sobie uszkodzić pliki gdyż e2defrag nie obsługuje sporej liczby funkcji ext3
    @nbvcxz. Już lepiej używać pyfragtools… jest to narzędzie o wiele bezpieczniejsze od “Shake”
    @sunrise_son Owszem. Określa to fragmentację plików, jednak systemy linuksowe bardzo dobrze radzą sobie nawet z dużą wartością fragmentacji bez utraty wydajności. Jeżeli koniecznie chcesz uspokoić sumienie to użyj pyfragtools
    @Bartosz Feński. Mój błąd. Chodziło o to, że jeden plik może być wielokrotnie modyfikowany przez różnych użytkowników.

  27. Gravatar Icon 27 wroobel Cytuj Przeglądarka Opera 9.50 na Linux

    @skiter
    Zarówno ext3 jaki i NTFS są systemami z journalingiem.

  28. Gravatar Icon 28 mlodedrwale Cytuj Przeglądarka Debian IceWeasel 2.0.0.8 na Debian GNU/Linux

    Witam!
    A ja mam pytanie jak linux radzi sobie z fat32? czy korzystając z linuksa i np. fat32 na dysku przenośnym nie musimy obawiać się fragmentacji? Czy brak fragmentacji to kwestia sprytu systemu plików czy systemu operacyjnego?

  29. Gravatar Icon 29 Łukasz Cytuj Przeglądarka Mozilla Firefox 2.0.0.8 na Linux

    @mlodedrwale. Systemu plików. Linux radzi sobie z fatem tak samo jak Windows… i tu i tu będzie występować fragmentacja.

  30. Gravatar Icon 30 morte Cytuj Przeglądarka Mozilla Firefox 2.0.0.9 na Windows XP

    XFS ma narzędzie do defragmentowania dysku, zwie się xfs_fsr (z pakietu xfsdump), więc po coś ta defragmentacja jest potrzebna ;-)

  31. Gravatar Icon 31 jrk Cytuj Przeglądarka Debian IceWeasel 2.0.0.6 na Ubuntu Linux

    Nie znam się na tym za bardzo, ale wydaje mi się, że możliwe jest napisanie sterownika dla systemu plików FAT (i myślę, że taki już jest), który zapisywałby pliki nie jeden za drugim, lecz “rozrzucał” je po całym dysku.

  32. Gravatar Icon 32 Przyprawy Cytuj Przeglądarka Mozilla Firefox 2.0.0.9 na Windows Vista

    99,9% informacji w manualach jest…, pozostałe 0,1% to zdrowy rozsądek…
    Fragmentacja jest na każdym systemie plików jest, jeśli nawet w stopniu niezauważalnym przez użytkownika… ale jest.

  33. Gravatar Icon 33 Name (wymagane) Cytuj Przeglądarka Mozilla Firefox 2.0.0.9 na Windows XP

    Czemu link do zrodla jest z artybutem rel=”nofollow”?

  34. Gravatar Icon 34 leszek Cytuj Przeglądarka Mozilla Firefox 2.0.0.9 na Windows XP

    iso9660 nie ma defragmentacji ;-)

  35. Gravatar Icon 35 Łukasz Cytuj Przeglądarka Mozilla Firefox 2.0.0.8 na Linux

    @Name (wymagane). A wiesz o czym piszesz? wiesz dokładnie czym jest rel=nofollow? To niczego nie blokuje i nie zapobiega indeksowaniu przez wyszukiwarki. Jeżeli zrozumiesz czym jest ten parametr to zrozumiesz też dlaczego tam jest.

  36. Gravatar Icon 36 bst Cytuj Przeglądarka Mozilla 1.8.1.6 na Linux

    Nikt nie napisal, ze w systemach wielodostepowych fragmentacja jest kozystna…

  37. Gravatar Icon 37 Michał Cytuj Przeglądarka Mozilla Firefox 2.0.0.11 na Linux

    z tego co tu wyczytałem, najlepiej kupić sobie dysk 750GB zawsze mieć ze 100GB w zapasie i możemy sobie spokojnie na linuxie pracować bez cudowania z defragmentacją :mrgreen:

  38. Gravatar Icon 38 qb4 Cytuj Przeglądarka Internet Explorer 7.0 na Windows XP

    dzięki za wytłumaczenie; teraz wszystko kapuję :smile:

  39. Gravatar Icon 39 Muad'Dib Cytuj Przeglądarka Mozilla Firefox 3.0 na Gentoo Linux

    Jeśli chodzi o partycje z systemem xfs to przedewszystkim opłacalna jest defragmentacja partycji gdzie składowane są duże pliki (np.: multimedia). Scalanie czesci plików na partycjach przyspiesza ich odczyt, co daje nam mniej obciążony dysk. Używam tego systemu plików od 3-4 lat na desktopie razem z defragmentacją i gorąco polecam :twisted: .

  40. Gravatar Icon 40 Sylwek Cytuj Przeglądarka Mozilla Firefox 3.6.3 na Ubuntu Linux

    A co z plikami ext4 ?! Będą wymagać defragmentacji?!
    Czy w ogóle ta fragmentacja spowalnia sys?

  1. 1 Defragmentacja dysku pod Linuxem « wszystko co najciekawsze
  2. 2 Optymalizacja systemów Windows/Linux cz. 1 – Defragmentacja « Blog technologicznego pasjonata ;)


Odpowiedz

Cytuj zaznaczony tekst