Stav v roce 2019
Vývoj Btrfs a linuxového jádra způsobil, že moje původní odpověď je zastaralá . Podívejte se prosím na tuto další odpověď.
Původní odpověď z roku 2016
Z btrfs FAQ:
Podporuje btrfs odkládací soubory? Momentálně ne. Pouhé vytvoření souboru NOCOW nepomůže, podpora swap souboru se spoléhá na jednu funkci, kterou btrfs záměrně neimplementuje kvůli potenciálnímu poškození. (...) Řešením, i když se slabým výkonem, je připojení odkládacího souboru pomocí smyčkového zařízení.
Takže zatím neexistuje dobrý způsob, jak vytvořit odkládací soubor na oddílu btrfs.
Jak je uvedeno výše, od Linuxu 5.0 nyní je možné vytvářet odkládací soubory na BTRFS. Ale měly by být nekomprimované a NoCOW. Zde je návod, jak takový soubor ve skutečnosti vytvořit:
- Vytvořte prázdný soubor:
touch /swap
- Použijte
chattr
nastavteNoCOW
atribut:chattr +C /swap
- Ověřte, že
C
objevil se atribut:lsattr /swap
- Vyplňte:
dd if=/dev/zero of=/swap bs=1M count=1024
# za 1 gigabajt mkswap /swap && chmod 600 /swap && swapon /swap
Případně můžete vytvořit adresář, nastavte chattr +C
do tohoto adresáře a poté pod ním vytvořte odkládací soubor.
Pamatujte, že nemůžete udělat chattr +C
do již existujícího neprázdného souboru. Je zdokumentováno, že jde o nedefinované chování (ve skutečnosti jen nemění atributy). Měli byste tedy buď vytvořit prázdný soubor a poté chattr
nebo vytvořte adresář s chattr
a poté v něm vytvořte soubor (v takovém případě všechny soubory vytvořené po chattr
adresář bude mít atribut nocow).
Upozornění: jak již bylo zmíněno, vyžaduje to jádro verze 5.0 nebo vyšší. Raspberry Pi například používá jádra 4.19.*, takže tuto techniku na něm nebudete moci použít.
Do jádra verze 5.0 byla přidána podpora swapovacích souborů, jak je vidět na commit https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ed46ff3d423780fa5173b38a844bfa2fap7210 activate soubor na btrfs, soubor musí být plně alokován jako NOCOW bez komprese na jednom zařízení.