Existuje nějaký způsob, jak v BTRFS nastavit kompresi trvale?

Mám USB HDD.

Chci jej připojit s povolenou kompresí. Mohu to udělat na fstab svého systému nebo dokonce pomocí pravidel udev. Problém je v tom, že USB HDD nepřipojím pouze k počítači. Doposud jsem spouštěl terminál pokaždé, když jsem jej připojil.

Potom jsem objevil chattr +c. Toto funguje velmi dobře , ale chci použít LZO místo ZLIB. Existuje nějaký způsob být konkrétnější a definovat kompresní algoritmus jednou provždy?

Odpovědět

btrfs komprimuje každý soubor, který byl změněn od jeho připojení pokud používáte:

mount -o compress-force=lzo /dev/btrfsdev /mnt/btrfsmnt 

Pokud se chcete postarat o to, aby se takto komprimovaly VŠECHNY soubory, mám k tomu malý skript, který jsem k tomu napsal …

du -ht +$((1024*1024)) "$HOME" |\ sed -rn "s/^[^/]*(.*)/btrfs fi defrag -fvclzo "\1"/p" |\ sudo sh -n 

Výše uvedené funguje pouze v mém $HOME adresáři – ale můžete jej použít na cokoli nebo na všechno, jak chcete. Dostal také -n operand přiváděný na sh tak, jak je sami můžete vidět, co sh aktuálně not dělá to před odstraněním, aby mu to řekl.

Mimochodem, nejprve se zeptá du pro soubory ve human-readable formátu (zde je to pravděpodobně nadbytečné, protože je v dalším kroku odstraníme) každopádně) které jsou větší než 1MB nebo $((1024*1024)).

Je |pipes její informace k sed které pásy vypnout vše před hlavním /, "quotes" názvem souboru, vytvoří příkaz btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename a předá |pipe to sudo sh k provedení.

Znovu to nebude nic dělat, dokud sh --no-execute bude v platnosti.

Myslím, že někteří velmi nedávné btrfs sestavení nástroje uživatelského prostoru rekurzivně defragmentuje celé adresáře, ale pokud ano, je to docela nová věc, takže já vždy musel dělat takové věci.

Komentáře

  • To je ' velmi pěkná odpověď. To je však to, co jsem již udělal (to jsem naznačil " Doposud jsem spouštěl terminál pokaždé, když jsem ho připojil. "). ' Rád bych věděl, jestli existuje nějaký způsob, jak spojit výchozí montážní příznaky s FS. Pokud ' nemáte root, žádný z nich nefunguje.
  • Výchozí příznaky připojení? Určitě můžete použít fstab. A s btrfs se můžete připojit také pomocí subvolumu, takže můžete přidružit, jak říkáte, subvolume se specifickými možnostmi připojení as možností user = mount byste jej mohli dát uživateli. Možná se divíte – ale jak vytvořím dílčí svazek ze souborů, které již mám? Pokud vytvoříte prázdný dílčí svazek, pak cp –reflink v něm vše, co chcete, mělo dělat danou úlohu.
  • Také výše uvedená defragmentace může být úlohou cronu …
  • compress=lzo je dostačující, nemusíte ' znovu komprimovat komprimované binární soubory, jako je PNG.

Odpověď

Z toho, co jsem četl, můžete nastavit vlastnost compression v kořenovém adresáři podsvazku na toho dosáhnete [0, 1]:

sudo btrfs property set /mnt/your-subvolume compression lzo 

Poté, co uchopíte svůj podtržený UUID Btrfs pomocí sudo btrfs filesystem show /mnt/your-subvolume, můžete ověřte, zda je funkce komprese LZO aktuálně povolena pomocí:

cat /sys/fs/btrfs/<UUID>/features/compress_lzo 

Pokud je povolena, měla by vrátit 1.

[0] https://btrfs.wiki.kernel.org/index.php/Compression

[1] https://www.berthon.eu/2016/setting-shared-folder-compression-on-synology-nas-btrfs/

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *