Jak defragmentować system plików BTRFS

Jak defragmentować system plików BTRFS

BTRFS to system plików oparty na zakresie kopiowania (COW). Duże pliki są przechowywane w wielu zakresach danych; A po modyfikowaniu tych dużych plików, zakresy modyfikowania są kopiowane do nowych, pustych zakresów w innej lokalizacji urządzenia pamięci i są modyfikowane w nowej lokalizacji. Następnie zakres dużych plików jest ponownie połączony, aby wskazać zaktualizowane zakres. Stare zakresy nigdy nie są usuwane natychmiast.

W ten sposób funkcja kopiowania (COW) systemu plików BTRFS powoduje fragmentację. Fragmentacja oznacza, że ​​zakresy danych dużych plików są rozproszone wokół całego urządzenia pamięci masowej. Nie są natychmiastowe. Tak więc wydajność (prędkość odczytu/zapisu) systemu plików może zostać zmniejszona.

Aby rozwiązać ten problem, konieczne jest od czasu do czasu defragment system plików BTRFS. W tym artykule pokazuje, jak defragować system plików BTRFS.

Skróty

Skróty (krótkie formy) zastosowane w tym artykule są następujące:

  • Krowa - Kopiuj na Write
  • Btrfs - System plików B-Tree
  • HDD - Dysk twardy
  • SSD - Dysk SSD
  • GB - Gigabyte
  • Vm - Maszyna wirtualna

Wymagania wstępne

Aby wypróbować przykłady zawarte w tym artykule:

  • Musisz mieć instalowany system plików BTRFS na komputerze.
  • Musisz mieć zapasowy ds. SSD (dowolnego rozmiaru) lub co najmniej 1 bezpłatny partycja HDD/SSD (dowolnego rozmiaru).

Mam dysk twardy 20 GB SDB na mojej maszynie Ubuntu. Utworzę system plików BTRFS na dysku twardym SDB.

$ sudo lsblk -e7

Notatka: Twój dysk twardy/ds. SSD prawdopodobnie będzie miała inną nazwę niż moja, podobnie jak partycje. Pamiętaj, aby odtąd zastąpić je swoimi.

Możesz utworzyć system plików BTRFS na HDD/SSD (bez partycjonowania), jeśli masz zapasowy twardy. Możesz także utworzyć partycję na HDD/SSD i utworzyć tam system plików BTRFS.

Aby uzyskać pomoc w instalacji systemu plików BTRFS w Ubuntu, sprawdź artykuł Zainstaluj i użyj BTRFS na Ubuntu 20.04 LTS.

Aby uzyskać pomoc w instalacji systemu plików BTRFS w Fedora, sprawdź artykuł Zainstaluj i użyj BTRFS na Fedora 33.

Tworzenie systemu plików BTRFS

Możesz utworzyć system plików BTRFS na HDD/SSD (bez partycji HDD/SSD.

Aby utworzyć system plików BTRFS na SDB HDD (cała dysk twardy, bez partycji) i podaj etykietę systemu plików dane, Uruchom następujące polecenie:

$ sudo mkfs.BTRFS -L Data /Dev /SDB

Na system plików BTRFS powinien być teraz utworzony na SDB HDD.

Utwórz katalog /dane Aby zamontować system plików BTRFS, który właśnie utworzyłeś za pomocą następującego polecenia:

$ sudo mkdir -v /dane

Aby zamontować system plików BTRFS utworzony na SDB HDD na /dane Directory, uruchom następujące polecenie:

$ sudo mount /dev /sdb /dane

System plików BTRFS powinien być teraz zamontowany, jak widać na zrzucie ekranu poniżej:

$ df -h /dane

Defragmentowanie systemu plików BTRFS ręcznie

Jak widać na zrzucie ekranu poniżej, skopiowałem dwa pliki na systemie plików BTRFS zamontowanych na /dane Directory w celu zademonstrowania procesu defragmentacji systemu plików BTRFS:

$ ls -lh /dane

Możesz odprowadzać jeden plik lub cały podwolu/katalog rekurencyjnie.

Aby zdefragmentować pojedynczy plik /Data/Ubuntu-20.04.1-Live-Server-AMD64.ISO, Uruchomymy następujące polecenie:

$ sudo btrfs system plików defragment -vf /data /Ubuntu -20.04.1-Live-Server-AMD64.ISO

Plik /Data/Ubuntu-20.04.1-Live-Server-AMD64.ISO powinno być defragmentowane.

Aby defragować każdy plik lub katalog /dane Katalog rekurencyjnie uruchom następujące polecenie:

$ sudo btrfs FileSystem defragment -rvf /Data

Jak widać, wszystkie pliki /dane Direktoryczne są defragmentowane.

W ten sam sposób, jeśli miałeś podwpos /Data/Osimages, Następnie możesz zdenerwować wszystkie pliki /Data/Osimages subvolume rekurencyjnie z następującym poleceniem:

$ sudo btrfs system plików defragment -rvf /data /osimages

Kompresowanie systemu plików BTRFS podczas defragmentacji

BTRFS FileSystem umożliwia kompresję plików podczas ich defragmentacji.

Aby defragować wszystkie pliki w /dane katalog i kompresuj je za pomocą Zlib Algorytm kompresji w tym samym czasie, uruchom polecenie defragmentacji -czlib Opcja, jak następuje:

$ sudo Btrfs FileSystem defragment -rvf -czlib /Data

Aby defragować wszystkie pliki w /dane katalog i kompresuj je za pomocą Zstd Algorytm kompresji w tym samym czasie, uruchom polecenie defragmentacji -CZSTD Opcja, jak następuje:

$ sudo btrfs system plików defragment -rvf -czstd /data

Aby defragować wszystkie pliki w /dane katalog i kompresuj je za pomocą LZO Algorytm kompresji w tym samym czasie, uruchom polecenie defragmentacji -Clzo Opcja, jak następuje:

$ sudo btrfs system plików defragment -rvf -clzo /dane

Pliki w /dane KATALOG powinien być jednocześnie defragmentowany i kompresowany.

W ten sam sposób możesz również defragmentować i kompresować pliki podwole BTRFS.

Automatycznie defragmentowanie systemu plików BTRFS

Możesz włączyć automatyczną defragmentację w systemie plików BTRFS w czasie montażu. Ta funkcja systemu plików BTRFS zostanie automatycznie defragmentuje wszystkie pliki systemu plików BTRFS.

Aby zamontować system plików BTRFS utworzony na SDB HDD w /dane katalog z automatyczną defragmentacją włączoną w czasie rozruchu, musisz dodać wpis dla systemu plików BTRFS w /etc/fstab plik.

Najpierw znajdź UUID systemu plików BTRFS utworzonego na SDB HDD, jak następuje:

$ sudo blkid /dev /sdb

Jak widać, UUID systemu plików BTRFS utworzonego na SDB HDD jest 60AFC092-E0FA-4B65-81FD-5DFD7DD884DE.

Będzie dla Ciebie inaczej. Pamiętaj, aby odtąd zastąpić go swoim.

Otworzyć /etc/fstab plik z Nano Edytor tekstu, w następujący sposób:

$ sudo nano /etc /fstab

Dodaj następujący wiersz do końca /etc/fstab plik:

UUID = 60AFC092-E0FA-4B65-81FD-5DFD7DD884DE /DATA BTRFS AutodeFrag 0 0 0 0

Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować /etc/fstab plik.

Aby zmiany zaczęły się uruchomić, ponownie uruchom komputer za pomocą następującego polecenia:

$ sudo restart

Jak widać, system plików BTRFS utworzony na SDB HDD jest zamontowany na /dane katalog z włączoną automatyczną defragmentacją.

Problemy z defragmentowaniem systemu plików BTRFS

Chociaż może się wydawać, że defragmentacja poprawia wydajność systemu plików, istnieją pewne problemy z defragmentowaniem systemu plików BTRFS.

Ponieważ BTRFS jest systemem plików kopiowania (COW), aby zrozumieć problemy z defragmentacją systemu plików BTRFS, musisz zrozumieć funkcję kopiowania systemu plików BTRFS.

Załóżmy, że masz duży plik (plik 1), który wykorzystuje 100 zakresów (możesz myśleć o zakresie jako bloków plików) systemu plików BTRFS. Jeśli utworzysz kolejną kopię tego dużego pliku (plik2) W tym samym systemie plików BTRFS zobaczysz, że nie jest używane dodatkowe miejsce na dysku. To dlatego, że pliki są identyczne, a 100 zakresów każdego pliku jest takie same. Tak więc system plików BTRFS używa tych samych zakresów dla obu plików.

Rysunek 1: plik 1 I plik2 są identyczne i dzielą się tym samym systemem systemu btrfs, aby zapisać miejsce na dysku

Teraz powiedzmy, zmodyfikowałeś jedną z kopii dużego pliku (plik2). Modyfikacja musi zmienić 10 ze 100 zakresów. System plików BTRFS skopiuje wymagane 10 zakresów w innej nieużywanej lokalizacji (powiedzmy, E101-E110) systemu plików i zmień je tam. Po zapisaniu zmian na dysku, system plików BTRFS ponownie łączy zakres, aby zmiany zostały odzwierciedlone w dużym pliku. Proces jest zilustrowany na poniższym rysunku:

Rysunek 2: 10 Zakres jest zmieniany w plik2. Tak więc zakresy są ponownie połączone w systemie plików BTRFS.

Z ryc. 1 i 2 możesz zrozumieć, jak działa kopia-na-wci (krowa) i jak system plików BTRFS używa kopii na zapis.

Teraz, gdy wiesz, jak działa funkcja systemu plików BTRFS (COW).

  1. Pliki defragmentacyjne przesuwają zakres danych BTRFS i próbuj je wyrównać, jeden po drugim. Tak więc połączenia kopii na napisanie między kopiami pliku pękają. Zwiększy to zbędne zakresy danych, a także wykorzystanie dysku plików BTRFS, który wcześniej został zapisany poprzez udostępnianie zakresów danych między identycznymi (lub prawie identycznymi) kopiami pliku.
  2. Jeśli podwolu BTRFS ma wiele migawek, defragmentacja podwolu przełamie linki kopiowania na zapisanie między subwolumem a migawkami. Zwiększy to użycie dysku dla systemu plików BTRFS.
  3. Jeśli używasz systemu plików BTRFS dla dużych baz danych lub obrazów maszyn wirtualnych (do przechowywania danych/dysków VM), defragmentowanie systemu plików również negatywnie wpłynie na wydajność systemu plików.

Wniosek

W tym artykule nauczyłeś się, jak defragmentować pojedynczy plik i pliki w katalogu/podwolumnie rekurencyjnym systemie plików BTRFS. Nauczyłeś się także, jak włączyć automatyczną defragmentację na systemie plików BTRFS w czasie montażu. Wreszcie w artykule omówiono niektóre problemy z defragmentowaniem systemu plików BTRFS.