Btrfs

Jak defragmentovat souborový systém Btrfs

Jak defragmentovat souborový systém Btrfs

Btrfs je souborový systém založený na rozsahu Copy-on-Write (CoW). Velké soubory jsou uloženy v několika datových oblastech; a když se tyto velké soubory upraví, rozsahy, které se mají upravit, se zkopírují do nových, prázdných rozsahů v jiném umístění úložného zařízení a upraví se v novém umístění. Potom jsou rozsahy velkých souborů znovu propojeny, aby ukazovaly na aktualizované rozsahy. Staré rozsahy nejsou nikdy okamžitě odstraněny.

To je způsob, jakým funkce Copy-on-Write (CoW) souborového systému Btrfs způsobuje fragmentaci. Fragmentace znamená, že rozsahy dat velkých souborů jsou rozptýleny po celém úložném zařízení. Nejsou okamžité. Takže může být snížen výkon (rychlost čtení / zápisu) souborového systému.

K vyřešení tohoto problému je nutné defragmentovat souborový systém Btrfs jednou za čas. Tento článek ukazuje, jak defragmentovat souborový systém Btrfs.

Zkratky

Zkratky (krátké formy) použité v tomto článku jsou následující:

Předpoklady

Vyzkoušet příklady obsažené v tomto článku:

Mám 20 GB HDD sdb na mém stroji Ubuntu. Na HDD vytvořím souborový systém Btrfs sdb.

$ sudo lsblk -e7

Poznámka: Váš HDD / SSD bude pravděpodobně mít jiný název než můj, stejně tak oddíly. Od nynějška je tedy vyměňte za své.

Pokud máte náhradní HDD / SSD, můžete na svém HDD / SSD (bez rozdělení do oddílů) vytvořit souborový systém Btrfs. Můžete také vytvořit oddíl na vašem HDD / SSD a vytvořit tam souborový systém Btrfs.

Pomoc s instalací souborového systému Btrfs v Ubuntu najdete v článku Instalace a používání Btrfs v Ubuntu 20.04 LTS.

Pomoc s instalací souborového systému Btrfs ve Fedoře najdete v článku Instalace a používání Btrfs ve Fedoře 33.

Vytvoření souborového systému Btrfs

Souborový systém Btrfs můžete vytvořit na HDD / SSD (bez oddílů) nebo na oddílu HDD / SSD.

Chcete-li na systému Windows vytvořit souborový systém Btrfs sdb HDD (celý HDD, žádné oddíly) a přidělte mu štítek souborového systému data, spusťte následující příkaz:

$ sudo mkfs.btrfs -L data / dev / sdb

Nyní by měl být na systému vytvořen souborový systém Btrfs sdb HDD.

Vytvořte adresář /data k připojení souborového systému Btrfs, který jste právě vytvořili, pomocí následujícího příkazu:

$ sudo mkdir -v / data

Chcete-li připojit souborový systém Btrfs vytvořený na serveru sdb HDD na disku /data adresáře, spusťte následující příkaz:

$ sudo mount / dev / sdb / data

Nyní by měl být připojen souborový systém Btrfs, jak vidíte na následujícím obrázku:

$ df -h / data

Ruční defragmentace souborového systému Btrfs

Jak vidíte na následujícím obrázku, zkopíroval jsem dva soubory na souborový systém Btrfs připojený na /data adresář k demonstraci procesu defragmentace souborového systému Btrfs:

$ ls -lh / data

Rekurzivně můžete defragmentovat jeden soubor nebo celý dílčí svazek / adresář.

Defragmentovat jeden soubor / data / ubuntu-20.04.1-live-server-amd64.iso, spustíme následující příkaz:

$ sudo btrfs defragmentace souborového systému -vf / data / ubuntu-20.04.1-live-server-amd64.iso

Soubor / data / ubuntu-20.04.1-live-server-amd64.iso by mělo být defragmentováno.

Defragmentovat každý soubor nebo adresář souboru /data adresář rekurzivně, spusťte následující příkaz:

$ sudo btrfs defragmentace souborového systému -rvf / data

Jak vidíte, všechny soubory /data adresář jsou defragmentovány.

Stejným způsobem, pokud jste měli dílčí svazek / data / osimages, pak můžete defragmentovat všechny soubory / data / osimages subvolume rekurzivně s následujícím příkazem:

$ sudo btrfs defragmentace souborového systému -rvf / data / osimages

Komprese souborového systému Btrfs při defragmentaci

Souborový systém Btrfs umožňuje komprimovat soubory při jejich defragmentaci.

Chcete-li defragmentovat všechny soubory v souboru /data adresář a zkomprimujte je pomocí ZLIB kompresní algoritmus současně spusťte příkaz defragmentace s -czlib tato možnost:

$ sudo btrfs defragmentace souborového systému -rvf -czlib / data

Chcete-li defragmentovat všechny soubory v souboru /data adresář a zkomprimujte je pomocí ZSTD kompresní algoritmus současně spusťte příkaz defragmentace s -czstd tato možnost:

$ sudo btrfs defragmentace souborového systému -rvf -czstd / data

Chcete-li defragmentovat všechny soubory v souboru /data adresář a zkomprimujte je pomocí LZO kompresní algoritmus současně spusťte příkaz defragmentace s -clzo tato možnost:

$ sudo btrfs defragmentace souborového systému -rvf -clzo / data

Soubory v /data adresář by měl být defragmentován a komprimován současně.

Stejným způsobem můžete také defragmentovat a komprimovat soubory dílčího svazku Btrfs.

Automatická defragmentace souborového systému Btrfs

Můžete povolit automatickou defragmentaci ve vašem souborovém systému Btrfs v době připojení. Tato funkce souborového systému Btrfs automaticky defragmentuje všechny soubory vašeho souborového systému Btrfs.

Chcete-li připojit souborový systém Btrfs vytvořený na serveru sdb HDD v /data adresář s automatickou defragmentací povolenou při spuštění, musíte přidat položku pro souborový systém Btrfs v souboru / etc / fstab soubor.

Nejprve najděte UUID souborového systému Btrfs vytvořeného na serveru sdb HDD takto:

$ sudo blkid / dev / sdb

Jak vidíte, UUID souborového systému Btrfs vytvořeného na sdb HDD je 60afc092-e0fa-4b65-81fd-5dfd7dd884de.

Bude to pro vás jiné. Od nynějška jej tedy vyměňte za svůj.

Otevři / etc / fstab soubor s nano textový editor takto:

$ sudo nano / etc / fstab

Přidejte následující řádek na konec / etc / fstab soubor:

UUID = 60afc092-e0fa-4b65-81fd-5dfd7dd884de / data btrfs autodefrag 0 0

Po dokončení stiskněte + X následován Y a uložit / etc / fstab soubor.

Aby se změny projevily, restartujte počítač pomocí následujícího příkazu:

$ sudo restart

Jak vidíte, souborový systém Btrfs vytvořený na sdb HDD je namontován na /data adresář s povolenou automatickou defragmentací.

Problémy s defragmentací souborového systému Btrfs

Ačkoli se může zdát, že defragmentace zlepšuje výkon souborového systému, existují určité problémy s defragmentací souborového systému Btrfs.

Jelikož Btrfs je souborový systém Copy-on-Write (CoW), abyste porozuměli problémům s defragmentací souborového systému Btrfs, musíte porozumět funkci Copy-on-Write souborového systému Btrfs.

Předpokládejme, že máte velký soubor (soubor1), který používá 100 rozsahů (můžete je považovat za bloky souborů) souborového systému Btrfs. Pokud vytvoříte další kopii tohoto velkého souboru (file2) ve stejném souborovém systému Btrfs uvidíte, že není použito žádné další místo na disku. Je to proto, že soubory jsou identické a 100 rozsahů každého souboru je stejných. Souborový systém Btrfs tedy používá pro oba soubory stejný rozsah.

Obrázek 1: soubor1 a file2 jsou identické a sdílejí stejné rozsahy souborového systému Btrfs, aby se ušetřilo místo na disku

Řekněme, že jste upravili jednu z kopií velkého souboru (file2). Je třeba změnit 10 ze 100 rozsahů. Souborový systém Btrfs zkopíruje požadovaných 10 rozsahů do jiného nepoužívaného umístění (řekněme, e101-e110) souborového systému a změňte je tam. Jakmile jsou změny zapsány na disk, souborový systém Btrfs znovu propojí rozsahy, aby se změny projevily ve velkém souboru. Proces je znázorněn na následujícím obrázku:

Obrázek 2: 10 rozsahy jsou změněny v file2. Rozsahy jsou tedy znovu propojeny v souborovém systému Btrfs.

Z obrázků 1 a 2 můžete pochopit, jak funguje Copy-on-Write (CoW) a jak souborový systém Btrfs používá Copy-on-Write (CoW) k úspoře místa na disku.

Nyní, když víte, jak funguje funkce Copy-on-Write (CoW) souborového systému Btrfs, pochopíte problémy s defragmentací souborového systému Btrfs.

  1. Defragmentace souborů přesouvá datové rozsahy Btrfs a pokouší se je zarovnat, jeden po druhém. Takže odkazy kopírování při zápisu mezi kopiemi přerušení souborů. Tím se zvýší nadbytečné datové rozsahy i využití disku souborového systému Btrfs, který byl dříve uložen sdílením datových rozsahů mezi stejnými (nebo téměř identickými) kopiemi souboru.
  2. Pokud má dílčí svazek Btrfs více snímků, defragmentace dílčího svazku přeruší odkazy kopírování na zápis mezi dílčím svazkem a snímky. Tím se zvýší využití disku souborového systému Btrfs.
  3. Pokud používáte souborový systém Btrfs pro velké databáze nebo obrazy virtuálních strojů (pro ukládání dat / disků VM), defragmentace souborového systému také negativně ovlivní výkon souborového systému.

Závěr

V tomto článku jste se naučili, jak defragmentovat jeden soubor a soubory v adresáři / subvolume rekurzivně souborového systému Btrfs. Také jste se naučili, jak povolit automatickou defragmentaci na souborovém systému Btrfs v době připojení. Nakonec článek pojednával o některých problémech s defragmentací souborového systému Btrfs.

Hry Nejlepší linuxové distribuce pro hraní her v roce 2021
Nejlepší linuxové distribuce pro hraní her v roce 2021
Operační systém Linux má za sebou dlouhou cestu od svého původního, jednoduchého vzhledu založeného na serveru. Tento OS se v posledních letech nesmír...
Hry Jak zachytit a streamovat vaši herní relaci v systému Linux
Jak zachytit a streamovat vaši herní relaci v systému Linux
V minulosti bylo hraní her považováno pouze za koníček, ale postupem času došlo v herním průmyslu k obrovskému nárůstu z hlediska technologie a počtu ...
Hry Nejlepší hry pro ruční sledování
Nejlepší hry pro ruční sledování
Oculus Quest nedávno představil skvělou myšlenku ručního sledování bez ovladačů. S neustále se zvyšujícím počtem her a aktivit, které provádějí podpor...