¿Btrfs comprimirá automáticamente los archivos existentes cuando la compresión esté habilitada?


26

Elegí btrfs como el formato de mi /sistema de archivos en el instalador Ubuntu 12.04 LTS. Una vez completada la instalación, agregué compress=lzoopciones de montaje /etc/fstaby reinicié.

¿Los archivos existentes se comprimirán automáticamente ahora, o debo hacer algo explícitamente para que eso suceda?


1
No tiene que reiniciar, podría simplemente sudo mount -o remount /y las nuevas opciones de fstab surtirán efecto.
sep332

Tenga en cuenta que es posible que necesite usar la opción comprimir-fuerza o algunos archivos seguirán sin comprimir sin importar lo que haga ...
rogerdpack

Una nota sobre la fuerza de compresión. La compresión normal tiene una característica en el sentido de que si detecta que la compresión tiene poco o ningún beneficio, no se molesta en continuar la compresión para ese archivo en particular (ahorrando así la CPU desperdiciada). Al usar la fuerza de compresión, intenta una compresión inútil de todos modos. Buenos ejemplos donde esto aplica son para archivos que ya están comprimidos (multimedia, archivos zip, etc.). En otras palabras, la fuerza de compresión es generalmente una mala idea. ;)
zaTricky

Respuestas:


27

Deberá ejecutar btrfs fi defragmentpara forzar la recompresión de los datos existentes. De lo contrario, solo se comprimirán los datos nuevos.

De las preguntas frecuentes :

... considere volver a montar con -o compress, y reescribir archivos particulares en el lugar, o ejecutar btrfs fi defragmentpara volver a comprimir todo. Esto puede tardar un rato.


btrfs fi defragment -r -clzo / path / to / fs
David Goodwin

2
¿Qué pasa con la autodefragopción de montaje? ¿Eso también hace que comprima archivos previamente descomprimidos cuando se autodesfragmenta?
Geremia

1
Asegúrese de usar "-r", el indicador recursivo para comprimir dentro de los directorios.
Salami

10

Hice lo que dijo Norbert Fabritius, pero no noté ninguna compresión en los archivos existentes - df -h / before btrfs fi defragment = 658MB | df -h / after btrfs fi defragment = 658MB. Los nuevos archivos están bien. Buscando un poco tráeme esta cita:

Ejecutando esto:

# btrfs filesystem defragment ~/stuff

no desfragmenta el contenido del directorio.

Esto es por diseño. btrfs fi defrag opera en el único objeto del sistema de archivos que se le pasa>>. Esto significa que el comando desfragmenta solo los metadatos que contiene el directorio> objeto, y no los contenidos del directorio. Si desea desfragmentar el contenido del directorio, algo como esto sería más útil:

# find -xdev -type f -exec btrfs fi defrag '{}' \;

Después de esto, mi / está ocupando 656MB, nada enorme, pero ciertamente hay compresión.

Fuente: https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#Defragmenting_a_directory_doesn.27t_work

Espero que esto ayude.

Perdon por mi inglés.


1
1. Cuando use btrfs, no use ni confíe en df . 2. Para una mejor relación de compresión, use zlib (sin embargo, es más lento)
ignis

3
¿No debería su línea de comando incluir defrag -clzoo en defrag -czliblugar de solo defrag, si realmente quiere comprimir cosas?
jbo5112

55
Hay una bandera recursiva "-r", así que puedes hacer esto ahora:btrfs fi defrag -r -czlib ~/stuff
Salami

8

De acuerdo con la documentación de Oracle, puede comprimir archivos existentes en un sistema de archivos en línea existente desfragmentando cada archivo con las opciones -c, -clzo o -czlib. LZO se recomienda para la velocidad.

find / -xdev \( -type f -o -type d \) -exec btrfs filesystem defragment -v -clzo -- {} +

Esto usa el comando find para ejecutar el desfragmentador btrfs en cada archivo en el sistema de archivos raíz (dado por la barra justo después del comando "find" al principio). Si tiene otros subvolúmenes, puede usarlo nuevamente con la ruta de un subvolumen (tengo uno en / home, por ejemplo) en lugar de la barra inclinada.

Necesitará privilegios de root para esto, así que agregue sudo al frente si es necesario.

Ver:


3

De acuerdo con https://btrfs.wiki.kernel.org/index.php/Mount_options#List_of_options están disponibles los siguientes algoritmos de compresión:


compress,compress-force
Enable compression. Starting with kernel 2.6.38 you can choose the algorithm for compression:

 - compress=zlib - Better compression ratio. It's the default and safe for olders kernels.
 - compress=lzo - Faster compression.
 - compress=no - Disables compression (starting with kernel 3.6). 

compress-force= - Enable compression even for files that don't compress well, like videos and dd images of disks. The options compress-force=zlib and compress-force=lzo works for kernels >2.6.38.

Note that old (before 2012) btrfs-progs versions will probably fail some operations (e.g. fsck) on filesystems with LZO compression. 

Nota: Esta publicación es la respuesta a la pregunta adicional sobre qué tipo de algoritmos de compresión están disponibles, que se preguntó a continuación ... así que no me culpen.


2

De acuerdo con ArchWiki :

Consejo: La compresión también se puede habilitar por archivo sin usar la compressopción de montaje; simplemente aplique chattr +cal archivo. Cuando se aplica a los directorios, hará que los nuevos archivos se compriman automáticamente a medida que se presentan.

¡Muy agradable! Dios bendiga a BTRFS!

Además, de la wiki BTRFS :

¿Puedo forzar la compresión en un archivo sin usar la opción de montaje de compresión ?

Sí. La utilidad chattradmite la configuración del atributo de archivo c que marca el inodo para comprimir los datos recién escritos.


-9

La compresión está habilitada de forma predeterminada en Btrfs, por lo que, a menos que la desactive explícitamente, debe comprimirse.


11
No es cierto, debe pasar compression="su algoritmo de compresión favorito" en fstab para habilitarlo.
turbo

@turbo ¿Qué algoritmos de compresión están disponibles?
Restablece a Mónica - ζ--

parece que actualmente hay 2 compresiones permitidas (bueno, 3 si cuenta "ninguna"): btrfs.wiki.kernel.org/index.php/…
rogerdpack
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.