Defragmentacja plików / folderów w Btrfs

9

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

Defragmentacja Btrfs

One Zero
źródło
Nie, btrs, ext4,3,2, ETC ... nie wymagają defragmentacji dysków, cierpią z tego powodu, jak każdy inny system plików.
Uri Herrera,
Ale nigdzie nie tak samo jak NTFS.
Uri Herrera,

Odpowiedzi:

13

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 autodefragopcję 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ą autodefragopcją.

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ć ~/.mozillai inne bazy danych przeglądarek.

Aby defragmentować, użyj:

$ sudo btrfs fi defrag -r /path
Félix Saparelli
źródło
skąd mam wiedzieć, że defrag .... lub nie ... polecenie, aby sprawdzić status defrag
One Zero
3
Ta odpowiedź jest niepoprawna, jak na wiki BTRFS: btrfs gotchas . Problem fragmentacji plików można łatwo odtworzyć, uruchamiając systemd-journald na woluminie btrfs. Chociaż jeszcze nie testowałem, opcja autodefrag rozwiązuje ten problem.
Jonas Schäfer
Używam btrfs w pełnym wymiarze godzin już od co najmniej 18 miesięcy, z systemd, firefox, itp. Szybka kontrola przy użyciu filefragujawnia, ż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 autodefragwłączonego, włączę go i zgłoś przy następnym uruchomieniu.
Félix Saparelli
A zatem: fragmentacja plików występuje, autodefragpomaga, 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ąć.
Félix Saparelli,
find /path -type f -exec filefrag {} + >frag.listunika wszystkich FIBMAP unsupportedbłędów z katalogów i innych nieregularnych plików i nie psuje się przy dziwnych nazwach plików.
Peter Cordes
0

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.

Micro
źródło
0

Polecenie defragmentacji systemu plików btrfs to

btrfs filesystem defragment sync -r -v -f [-czlib] / /home
użytkownik615852
źródło
0

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>
Tom Hale
źródło