Cè un modo in BTRFS per impostare la compressione in modo permanente?

Ho un disco rigido USB.

Voglio montarlo con la compressione abilitata. Posso fare in fstab del mio sistema o anche usando le regole udev. Il problema è che non monterò il mio HDD USB solo sul mio computer. Fino ad ora, attivavo un terminale ogni volta che lo montavo.

Poi ho scoperto chattr +c. Funziona molto bene ma voglio usare LZO invece di ZLIB. Cè un modo per essere più specifici e definire lalgoritmo di compressione una volta per tutte?

Risposta

btrfs comprimerà ogni file modificato da quando è stato montato se usi:

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

Se vuoi fare in modo che TUTTI i file vengano compressi in questo modo, ho un piccolo script che ho scritto per farlo …

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

Quanto sopra funziona solo sulla mia directory $HOME , ma puoi usarlo su qualsiasi cosa o tutto come preferisci. Ha anche loperando -n inviato a sh così comè puoi vedere tu stesso cosa sh è attualmente not facendo prima di rimuoverlo per dirgli di farlo.

Comunque, prima interroga du per i file in human-readable formato (probabilmente ridondante qui poiché lo eliminiamo nel passaggio successivo comunque) che sono più grandi di 1MB o $((1024*1024)).

|pipes le sue informazioni a sed che elimina da tutto ciò che precede il /, "quotes" iniziale del nome del file, crea il comando btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename e passa un |pipe a sudo sh per lesecuzione.

Di nuovo, non farà nulla fintanto che sh --no-execute è attivo.

Penso che alcuni molto recenti btrfs build di strumenti userspace deframmentano intere directory in modo ricorsivo, ma se è così è “una cosa abbastanza nuova, quindi ho” dovevo sempre fare cose del genere.

Commenti

  • Quella ' è una risposta molto carina. Tuttavia questo è quello che ho già fatto (questo è quello che ho inteso con " Fino ad ora, ho usato per attivare un terminale ogni volta che lho montato. "). Mi ' vorrei sapere se esiste un modo per associare i flag di montaggio predefiniti con FS. Se ' non hai root, nessuno di questi funziona.
  • Flag di montaggio predefiniti? Bene, puoi sicuramente usare fstab. E con btrfs, puoi anche montare per sottovolume, quindi potresti associare, come dici, un sottovolume con opzioni di montaggio specifiche e con lopzione user = mount, potresti darlo allutente. Potresti chiederti: ma come faccio a creare un sottovolume dai file che ho già? Se crei un sottovolume vuoto, cp –reflink tutto ciò che vuoi che dovrebbe funzionare.
  • Anche il lavoro di deframmentazione sopra potrebbe essere un cron job …
  • compress=lzo è sufficiente, ' non è necessario ricomprimere i file binari compressi come PNG.

Risposta

Da quello che ho letto, puoi impostare la proprietà compression nella radice del sottovolume su raggiungere questo [0, 1]:

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

Dopo aver acquisito lUUID del sottovolume Btrfs con sudo btrfs filesystem show /mnt/your-subvolume, puoi verifica che la funzione di compressione LZO sia attualmente abilitata con:

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

Dovrebbe restituire 1 se è abilitata.

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

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *