Właśnie zainstalowałem Ubuntu 11.10 w systemie plików Btrfs i chcę zadać pytanie dotyczące defragmentacji plików.
Czy naprawdę muszę defragmentować pliki lub cały system?
Defragmentacja # defragmentacja systemu plików btrfs / pula1 Defragmentacja
Właśnie zainstalowałem Ubuntu 11.10 w systemie plików Btrfs i chcę zadać pytanie dotyczące defragmentacji plików.
Czy naprawdę muszę defragmentować pliki lub cały system?
Defragmentacja # defragmentacja systemu plików btrfs / pula1 Defragmentacja
Odpowiedzi:
Naprawdę nie trzeba ręcznie defragmentować systemów plików Btrfs.
Tak, Btrfs to COW (kopiowanie przy zapisie), co oznaczałoby, że fragmentuje pliki znacznie bardziej niż Ext, ale jest to omówione w kilku aspektach projektu, w tym możliwości łatwego defragmentacji systemu plików, gdy jest on online. Ten fragment zawiera więcej szczegółów (moje wyróżnienie):
Automatyczna defragmentacja
Systemy plików COW (kopiowanie przy zapisie) mają wiele zalet, ale mają też pewne wady, na przykład fragmentację. Btrfs rozkłada dane sekwencyjnie, gdy pliki są zapisywane na dysku po raz pierwszy, ale projekt COW sugeruje, że wszelkie późniejsze modyfikacje pliku nie mogą być zapisywane na starych danych, ale muszą być umieszczone w wolnym bloku, który zostanie powodować fragmentację (bazy danych RPM są częstym przypadkiem tego problemu). Dodatkowo występują problemy z fragmentacją wspólne dla wszystkich systemów plików.
Btrfs już oferuje alternatywy do rozwiązania tego problemu: Po pierwsze, obsługuje defragmentację online za pomocą polecenia
btrfs filesystem defragment
. Po drugie, ma opcję montowania-o nodatacow
, która wyłącza COW dla danych. Teraz btrfs dodaje trzecią opcję,-o autodefrag
opcję montowania. Ten mechanizm wykrywa małe losowe zapisy do plików i umieszcza je w kolejce w celu automatycznego procesu defragmentacji, dzięki czemu system plików sam się defragmentuje, gdy jest używany. Nie nadaje się jeszcze do wirtualizacji lub dużych obciążeń baz danych, ale działa dobrze w przypadku mniejszych plików, takich jak bazy danych rpm, SQLite lub bdb.
Tak więc, o ile nie planujesz uruchamiać oprogramowania intensywnie korzystającego z IO, takiego jak baza danych przy znacznym obciążeniu, wszystko powinno być w porządku, o ile montujesz systemy plików z tą autodefrag
opcją.
Aby sprawdzić fragmentację plików, możesz użyć narzędzia filefrag :
$ find /path -type f -exec filefrag {} + >frag.list
# Now you can use your favourite tools to sort the data
W systemach Systemd /var/log/journal/
będzie prawdopodobnie najbardziej rozdrobniony. Możesz także przeglądać ~/.mozilla
i inne bazy danych przeglądarek.
Aby defragmentować, użyj:
$ sudo btrfs fi defrag -r /path
filefrag
ujawnia, że pliki dziennika są rzeczywiście mocno pofragmentowane (średnio 10k każdy), ale nie zauważyłem wzrostu wydajności procesora ani wpływ na wydajność. Nie mam autodefrag
włączonego, włączę go i zgłoś przy następnym uruchomieniu.
autodefrag
pomaga, wpływ na wydajność jest co najmniej niewielki w codziennych systemach. Oczywiście serwery o dużym obciążeniu mogą wymagać mierzenia i dostrajania, ale z drugiej strony jest to oprogramowanie alfa, więc i tak możesz tego uniknąć.
find /path -type f -exec filefrag {} + >frag.list
unika wszystkich FIBMAP unsupported
błędów z katalogów i innych nieregularnych plików i nie psuje się przy dziwnych nazwach plików.
Ze względu na ten temat lepiej jest wyjaśnić, że:
Dowolny system plików! = Narzędzia do odzyskiwania / zarządzania
Pamiętaj, że w systemie plików chodzi o to, jak dane są zorganizowane na fizycznym sprzęcie, każda inna aktywność jest wykonywana za pomocą dodatkowego oprogramowania i narzędzi, które, szczególnie w GNU / Linux, są wykonywane przez osoby, które prawdopodobnie nie są ściśle związane z tym, kto stworzył system plików.
Prawdopodobnie nie jest tak w przypadku Btrfs, ale czasami jesteśmy blisko tego, ponieważ środowiska stacjonarne i korporacyjne mogą zapewniać różne rozwiązania o różnych stopniach niezawodności.
Odpowiedź na twoje pytanie brzmi „nie”, ale jest „nie” związana z normalnym zachowaniem ogólnego systemu plików, a każde narzędzie, które możesz o tym znaleźć, to po prostu inny projekt.
Kiedy musisz zdefragmentować swój system plików, pamiętaj, że będziesz używać zewnętrznego oprogramowania, które nie jest tak naprawdę związane z życiem samego systemu plików, ze wszystkimi zaletami i wadami.
Polecenie defragmentacji systemu plików btrfs to
btrfs filesystem defragment sync -r -v -f [-czlib] / /home
Na podstawie tej odpowiedzi opracowałem:
sudo find / -xdev -type f -exec filefrag {} + | sed -En 's/(.+): (\w+) extent.*/\2 \1/p' | sort -nr
Najpierw wyświetlana jest lista najbardziej pofragmentowanych plików w formacie:
<num-fragments> <pathname>