¿Hay alguna forma en BTRFS de configurar la compresión de forma permanente?

Tengo un disco duro USB.

Quiero montarlo con la compresión habilitada. Puedo hacerlo en el fstab de mi sistema o incluso usando reglas udev. El problema es que no montaré mi HDD USB solo en mi computadora. Hasta ahora, solía activar un terminal cada vez que lo montaba.

Luego, descubrí chattr +c. Esto funciona muy bien pero Quiero usar LZO en lugar de ZLIB. ¿Hay alguna forma para ser más específico y definir el algoritmo de compresión de una vez por todas?

Respuesta

btrfs comprimirá cada archivo cambiado desde que fue montado si usa:

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

Si quiere asegurarse de que TODOS los archivos se comprimen de esta manera, tengo un pequeño script que escribí para hacerlo …

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

Lo anterior solo funciona en mi directorio $HOME , pero puedes usarlo en cualquier cosa o todo lo que quieras. También tiene el operando -n alimentado a sh como está puedes ver por ti mismo lo que sh es actualmente not antes de eliminarlo para indicarle que lo haga.

De todos modos, primero consulta du para archivos en human-readable formato (probablemente redundante aquí ya que lo eliminamos en el siguiente paso de todos modos) que sean más grandes que 1MB o $((1024*1024)).

Es |pipes su información a sed que quita todo antes del /, "quotes" inicial del nombre de archivo, crea el comando btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename y le entrega un |pipe a sudo sh para que lo ejecute.

Una vez más, no hará nada mientras sh --no-execute esté en efecto.

Creo que algunos muy construcciones de herramientas de espacio de usuario btrfs muy recientes desfragmentan directorios completos de forma recursiva, pero si es así, es algo bastante nuevo, así que Siempre tenía que hacer cosas como esta.

Comentarios

  • Esa ' es una respuesta muy agradable. Sin embargo, esto es lo que ya hice (esto es lo que implicaba " Hasta ahora, solía activar un terminal cada vez que lo montaba. "). ' quisiera saber si hay alguna forma de asociar los indicadores de montaje predeterminados con el FS. Si no ' t tiene root, ninguno de estos funciona.
  • ¿Indicadores de montaje predeterminados? Bueno, definitivamente puedes usar fstab. Y con btrfs, también puedes montar por subvolumen, por lo que podrías asociar, como dices, un subvolumen con opciones de montaje específicas y con la opción user = mount, podrías dárselo al usuario. Quizás se pregunte, pero ¿cómo puedo hacer un subvolumen con los archivos que ya tengo? Si crea un subvolumen vacío, entonces cp –reflink todo lo que quiera en él que debería hacer el trabajo.
  • Además, el trabajo de desfragmentación anterior podría ser un trabajo cron …
  • compress=lzo es suficiente, no ' no es necesario volver a comprimir archivos binarios comprimidos como PNG.

Respuesta

Por lo que leí, puede establecer la propiedad compression en la raíz del subvolumen para lograr esto [0, 1]:

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

Después de obtener el UUID del subvolumen Btrfs con sudo btrfs filesystem show /mnt/your-subvolume, puede validar que la función de compresión LZO esté actualmente habilitada con:

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

Debería devolver 1 si está habilitada.

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

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *