ZFS: vuelva a comprimir los archivos existentes después de cambiar el algoritmo de compresión


14

Tengo un grupo que se creó en 2011, usando lzjb compression, y no fue hasta un par de años después que una actualización me permitió configurar la compresión lz4. Estimo que al menos el 20% del contenido (por espacio) en la matriz se creó antes de 2013, lo que significa que todavía está comprimido usando lzjb.

Puedo pensar en un par de opciones para arreglar esto y recuperar (algo) de espacio:

  1. Realice una copia de seguridad y restaure a un nuevo grupo. No es realmente práctico, ya que no tengo suficiente almacenamiento redundante para guardar la copia temporal. La restauración también requeriría que el grupo esté fuera de línea durante varias horas.

  2. Escriba un script para volver a copiar cualquier archivo con una marca de tiempo anterior a 2013. Potencialmente arriesgado, especialmente si se ahoga en espacios u otros caracteres especiales y termina destrozando el nombre original.

¿Hay alguna forma de hacer que ZFS vuelva a comprimir los bloques heredados utilizando el algoritmo de compresión actual? Como un exfoliante, pero curando la compresión.

Una pregunta relacionada: ¿hay alguna forma de ver el uso de cada tipo de algoritmo de compresión? zdb solo muestra estadísticas generales de compresión, en lugar de desglosarlas en algoritmos individuales.


2
Estoy bastante seguro de que nombró las dos únicas opciones. Consulte también la discusión en el número 3013 para ver por qué esta funcionalidad no existe y es posible que no desee hacer esto en absoluto.
Michael Hampton

2
Supuestamente, lz4 es como máximo un 10% mejor en compresión que lzjb. Si el 20% de sus datos se pueden comprimir un 10% mejor, obtendrá como máximo un 2% más de espacio libre. ¿Vale la pena?
tubería el

1
Si escribe un script de shell para hacer la copia, agréguelo export LC_ALL=Cal comienzo del script y todos los caracteres especiales que no sean ASCII en los nombres de archivo se mantendrán intactos. Mantener el espacio en blanco y el guión intactos es más complicado, use comillas dobles y --, por ejemplo cp -- "$SOURCE" "$TARGET".
pts

44
@pipe Space es una (muy) pequeña ventaja, pero estoy más interesado en la velocidad de descompresión. De la página de manual de FreeBSD zpool-features: "Por lo general, la compresión lz4 es aproximadamente un 50% más rápida en datos comprimibles y un 200% más rápida en datos incompresibles que lzjb. También es aproximadamente un 80% más rápida en descompresión, a la vez que proporciona una relación de compresión aproximadamente 10% mejor. "
rowan194

@pts No llamaría "obedecer las reglas fundamentales de programación de shell (comillas dobles alrededor de variables o usarlas --)" más complicado ". Eso es tan importante como evitar la inyección de SQL, por ejemplo.
glglgl

Respuestas:


14

Debe volver a copiar los datos (completos o parciales) o zfs enviar / recibir los datos a un nuevo grupo o sistema de archivos ZFS.

No hay otras opciones.

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.