Er det noen måte i BTRFS å stille komprimering permanent?

Jeg har en USB HDD.

Jeg vil montere den med komprimering aktivert. Jeg kan gjøre det i fstab av systemet mitt eller til og med bruke udev-regler. Problemet er at jeg ikke bare vil montere USB-harddisken på datamaskinen min. Inntil nå pleide jeg å utløse en terminal hver gang jeg monterte den.

Så oppdaget jeg chattr +c. Dette fungerer veldig bra men Jeg vil bruke LZO i stedet for ZLIB. Er det noen måte å være mer spesifikk og definere komprimeringsalgoritmen en gang for alle?

Svar

btrfs vil komprimere hver fil som er endret siden den ble montert hvis du bruker:

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

Hvis du vil sørge for at ALLE filer blir komprimert på denne måten, har jeg et lite skript jeg skrev for å gjøre det …

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

Ovennevnte fungerer bare på $HOME -katalogen min – men du kan bruke den på hva som helst eller hva du vil. Det fikk også -n operand til sh som det er slik du kan selv se hva sh for øyeblikket er not gjør det før du fjerner det for å be det gjøre.

Uansett spør det du for filer i human-readable format (sannsynligvis overflødig her siden vi striper det i neste trinn uansett) som er større enn 1MB eller $((1024*1024)).

Det |pipes det er informasjonen til sed hvilke striper av alt før det ledende /, "quotes" filnavnet, bygger btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename kommandoen og overlater en |pipe til sudo sh for å utføre.

Igjen vil den ikke gjøre noe så lenge sh --no-execute er i kraft.

Jeg tror noen veldig nylige btrfs brukerstedsverktøy bygger defragmenterer hele kataloger rekursivt, men i så fall er det en ganske ny ting, så jeg har måtte alltid gjøre ting som dette.

Kommentarer

  • At ' er et veldig hyggelig svar. Dette er imidlertid hva jeg allerede har gjort (dette antydet jeg av " Inntil nå pleide jeg å utløse en terminal hver gang jeg monterte den. "). Jeg ' vil vite om det er noen måte å knytte standard monteringsflagg til FS. Hvis du ikke ' ikke har rot, fungerer ingen av disse.
  • Standard monteringsflagg? Du kan definitivt bruke fstab. Og med btrfs kan du også montere etter delvolum, slik at du, som du sier, kan knytte et delvolum med spesifikke monteringsalternativer, og med bruker = monteringsalternativet, kan du gi det til brukeren. Du lurer kanskje på – men hvordan lager jeg et delvolum av filene jeg allerede har? Hvis du oppretter et tomt undervolum, så cp – reflekter alt du ønsker i det som skal gjøre jobben.
  • Defragjobben ovenfor kan også være en cron-jobb …
  • compress=lzo er tilstrekkelig, du trenger ikke ' ikke trenger å komprimere komprimerte binære filer som PNG.

Svar

Fra det jeg leste, kan du sette egenskapen compression på roten til undervolumet oppnå dette [0, 1]:

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

Etter å ha tatt tak i Btrfs-undervolumet UUID med sudo btrfs filesystem show /mnt/your-subvolume, kan du validere at LZO-komprimeringsfunksjonen for øyeblikket er aktivert med:

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

Den skal returnere 1 hvis den er aktivert.

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

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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *