Er der nogen måde i BTRFS at indstille kompression permanent?

Jeg har en USB-harddisk.

Jeg vil montere den med komprimering aktiveret. Jeg kan gøre det i fstab på mit system eller endda bruge udev-regler. Problemet er, at jeg ikke kun monterer min USB HDD på min computer. Indtil nu plejede jeg at udløse en terminal, hver gang jeg monterede den.

Derefter opdagede jeg chattr +c. Dette fungerer meget godt men Jeg vil bruge LZO i stedet for ZLIB. Er der nogen måde for at være mere specifik og definere komprimeringsalgoritmen en gang for alle?

Svar

btrfs komprimerer hver fil, der er ændret, siden den blev monteret hvis du bruger:

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

Hvis du vil sørge for, at ALLE filer komprimeres på denne måde, har jeg et lille script, jeg skrev for at gøre det …

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

Ovenstående fungerer kun i min $HOME bibliotek – men du kan bruge det på noget eller alt, som du vil. Det fik også -n operand til sh som det er sådan du kan selv se, hvad sh i øjeblikket er not gør inden du fjerner det for at bede det om at gøre det.

Under alle omstændigheder spørger det først du for filer i human-readable format (sandsynligvis overflødigt her, da vi stripper det i næste trin alligevel) der er større end 1MB eller $((1024*1024)).

Det |pipes dets info til sed hvilke strimler fra alt før det førende /, "quotes" filnavnet, bygger kommandoen btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename og afleverer det |pipe til sudo sh for at udføre.

Igen vil det ikke gøre noget, så længe sh --no-execute er i kraft.

Jeg tror dog, at nogle meget nylige btrfs brugerrumsværktøjsbygninger defragmenterer hele mapper rekursivt, men i så fald er det en ret ny ting, så jeg har havde altid gjort ting som dette.

Kommentarer

  • At ' er et meget flot svar. Men det er det, jeg allerede har gjort (dette antydede jeg af " Indtil nu plejede jeg at udløse en terminal hver gang jeg monterede den. "). Jeg ' vil gerne vide, om der er nogen måde at knytte standardmonteringsflag til FS. Hvis du ikke ' ikke har rod, fungerer ingen af disse.
  • Standardmonteringsflag? Nå, du kan helt sikkert bruge fstab. Og med btrfs kan du også montere efter undervolumen, så du kan knytte, som du siger, et undervolumen med specifikke monteringsindstillinger og med bruger = monteringsindstillingen, kan du give det til brugeren. Du undrer dig måske – men hvordan laver jeg et undervolumen ud af de filer, jeg allerede har? Hvis du opretter et tomt undervolumen, så cp –reflink alt, hvad du vil have i det, der skal gøre jobbet.
  • Defragmenteringen ovenfor kan også være et cron-job …
  • compress=lzo er tilstrækkelig, du behøver ikke ' behøver ikke at komprimere komprimerede binære filer som PNG.

Svar

Fra det jeg læste, kan du indstille egenskaben compression på roden af undervolumen til opnå dette [0, 1]:

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

Efter at have grebet dit Btrfs-undervolumen UUID med sudo btrfs filesystem show /mnt/your-subvolume, kan du derefter validér, at LZO-komprimeringsfunktionen i øjeblikket er aktiveret med:

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

Den skal returnere 1, hvis den er aktiveret.

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

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *