Există vreo modalitate în BTRFS de a seta compresia permanent?

Am un HDD USB.

Vreau să-l montez cu compresia activată. Pot să fac în fstab-ul sistemului meu sau chiar folosind reguli udev. Problema este că nu voi monta HDD-ul USB doar pe computer. Până acum, declanșam un terminal de fiecare dată când îl montam.

Apoi, am descoperit chattr +c. Acest lucru funcționează foarte bine dar Vreau să folosesc LZO în loc de ZLIB. Există vreo modalitate pentru a fi mai specific și a defini algoritmul de compresie o dată pentru totdeauna?

Răspunde

btrfs va comprima fiecare fișier modificat de când a fost montat dacă utilizați:

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

Dacă doriți să vă asigurați că TOATE fișierele sunt comprimate în acest fel, am un mic script pe care l-am scris pentru ao face …

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

Cele de mai sus funcționează numai în directorul meu $HOME – dar îl puteți folosi în orice sau orice așa doriți. De asemenea, operandul -n a fost alimentat către sh așa cum este așa puteți vedea singur ce este sh în prezent not făcând înainte de a o elimina pentru a-i spune să o facă.

Oricum, mai întâi interogă du pentru fișierele în format human-readable (probabil redundant aici, deoarece îl eliminăm în pasul următor oricum) care sunt mai mari decât 1MB sau $((1024*1024)).

Este |pipes informațiile sale către sed care dezbracă opriți totul înainte de /, "quotes" numele fișierului, construiește comanda btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename și îl predă pe un |pipe către sudo sh pentru a-l executa.

Din nou, nu va face nimic atâta timp cât sh --no-execute este în vigoare.

Cred că unele foarte recent btrfs construirea instrumentului de spațiu pentru utilizatori defragmentează directoare întregi recursiv, dar dacă da, este un lucru destul de nou, așa că am întotdeauna a trebuit să fac lucruri de acest gen.

Comentarii

  • Acest ' este un răspuns foarte frumos. Cu toate acestea, asta am făcut deja (asta am sugerat de " Până acum, declanșam un terminal de fiecare dată când îl montam. "). ' aș dori să știu dacă există vreo modalitate de a asocia semnalizatoarele de montare implicite cu FS. Dacă ' nu aveți rădăcină, niciunul dintre acestea nu funcționează.
  • Semnalizatoare de montare implicite? Ei bine, puteți folosi cu siguranță fstab. Și cu btrfs, puteți monta și subvolum, astfel încât să puteți asocia, după cum spuneți, un subvolum cu opțiuni de montare specifice și cu opțiunea user = mount, l-ați putea da utilizatorului. S-ar putea să vă întrebați – dar cum fac un subvolum din fișierele pe care le am deja? Dacă creați un subvolum gol, atunci cp –reflink tot ce doriți în el, care ar trebui să facă treaba.
  • De asemenea, treaba de defragare de mai sus ar putea fi o treabă cron …
  • compress=lzo este suficient, nu ' nu trebuie să re-comprimați fișierele binare comprimate, cum ar fi PNG.

Răspuns

Din ce am citit, puteți seta proprietatea compression pe rădăcina subvolumului la realizați acest lucru [0, 1]:

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

După ce ați luat UUID-ul subvolum Btrfs cu sudo btrfs filesystem show /mnt/your-subvolume, puteți apoi validați că caracteristica de compresie LZO este activată în prezent cu:

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

Ar trebui să returneze 1 dacă este activată.

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

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *