¿Límite práctico en el número de instantáneas btrfs?

23

Estoy considerando usar btrfs en mi unidad de datos para poder usar snapper , o algo así como snapper, para tomar instantáneas basadas en el tiempo. Creo que esto me permitirá explorar versiones antiguas de mis datos. Esto sería adicional a mi copia de seguridad actual fuera del sitio ya que una falla en la unidad eliminaría los datos y las instantáneas.

Según tengo entendido, las instantáneas de btrfs no ocupan mucho espacio (metadatos y los bloques que han cambiado, más tal vez algo de sobrecarga), por lo que el espacio no parece ser una restricción.

Si tengo un millón de instantáneas (por ejemplo, una instantánea cada minuto durante dos años), ¿causaría estragos, suponiendo que tengo suficiente espacio en disco para los datos, los datos modificados y los metadatos?

Si hay un límite práctico en la cantidad de instantáneas, ¿depende de la cantidad de archivos y / o el tamaño de los archivos?

Fuerte
fuente

Respuestas:

16

Como alguien que usa un btrfssistema de archivos Arch Linuxdesde hace casi 2años, puedo decir con seguridad que no parece haber un límite práctico en la cantidad de instantáneas que se pueden alcanzar fácilmente. Sin embargo, hay algunas advertencias. btrfsEl sistema de archivos puede conducir a la fragmentación. Por lo tanto, es aconsejable utilizar la función de desfragmentación en línea integrada btrfs. Además, se puede hacer un buen uso de btrfsla función de compresión de. Estas medidas deberían solucionar la mayoría de los problemas de rendimiento que podrían surgir en una computadora razonablemente decente al crear muchas instantáneas.

Como sabrán, los btrfssubvolúmenes se tratan como sistemas de archivos y, por lo tanto, el número de instantáneas es realmente limitado: es decir, por el tamaño de los archivos. Según la btrfswiki, el tamaño máximo de archivo que se puede alcanzar es 2^64 byte == 16 EiB[1] .

Además de estas limitaciones, siempre puede haber problemas cuando te quedas sin espacio sin que lo reconozcas de inmediato porque verificar el espacio libre en los btrfssistemas de archivos a veces puede ser complicado, es decir, sin poder diferenciar entre diferentes métodos para medir el espacio libre en un btrfssistema de archivos, uno puede use fácilmente la pista de la cantidad de espacio que queda realmente. Una posible forma de prevenir este escenario es el uso de la cuota. Esto garantiza que los usuarios (o el usuario si es solo uno) solo puedan usar una cierta cantidad de espacio. Este concepto se discute muy hábilmente aquí y también aquí .

Por último, pero no menos importante, una advertencia: no soy un experto en btrfssistemas de archivos y solo leí sobre estas cosas cuando tuve la misma pregunta hace un tiempo. Además, siempre existe el problema de que btrfses un "objetivo que se mueve rápidamente" ( Arch Linuxcreo que una buena redacción fue robada de una página wiki), por lo que las cosas podrían cambiar.

señor basura
fuente
1
Soy uno de esos primeros adoptantes también, y esto es una explosión.
mikeserv
Sí, casi explotar :)
Mark K Cowan
1
Debe intentar mantenerse por debajo de 100 instantáneas en un volumen BTRFS. De lo contrario, puede encontrar problemas de rendimiento, especialmente al eliminar instantáneas. Crear instantáneas es de bajo costo, pero eliminarlas no lo es. Además, tenga en cuenta que la recomendación de realizar la desfragmentación junto con el uso de instantáneas eliminará la eficiencia de espacio de las instantáneas. La desfragmentación rompe los enlaces de referencia y multiplica el espacio utilizado.
MountainX para Monica Cellio el
@MountainX, ¿puede explicar esto en una respuesta? 100 instantáneas en un volumen no son ni una por semana durante dos años.
StrongBad
@StrongBad: recibí esa información de la lista de correo BTRFS en respuesta a un problema. Todos estuvieron de acuerdo en que es una mala idea tener muchos cientos o miles de instantáneas. Para una respuesta más técnica, tendría que preguntar en la lista de correo BTRFS.
MountainX para Monica Cellio
5

Aunque técnicamente no hay límite en el número de instantáneas, pregunté en la lista de correo BTRFS :

La respuesta (práctica) depende en cierta medida de cómo use btrfs.

Btrfs tiene problemas de escalado debido a demasiadas instantáneas (o en realidad el uso de instantáneas de reflinks, deduplicar el uso de reflinks puede desencadenar los mismos problemas de escalado), y los dígitos de dos dígitos simples a bajos por subvolumen de instantáneas siguen siendo la recomendación más fuerte por esa razón.

Pero los problemas de escalado afectan principalmente a los comandos de mantenimiento de btrfs, equilibrio, verificación, eliminación de subvolumen. Si bien millones de instantáneas harán que el equilibrio sea, por ejemplo, efectivamente inviable (funcionará un poco, pero podría llevar meses), las operaciones normales del sistema de archivos como leer y guardar archivos no tienden a verse afectadas, excepto en la medida en que la fragmentación se convierta en un problema ( aunque los sistemas de archivos de vaca como btrfs se caracterizan por la fragmentación, a menos que se tomen medidas como la desfragmentación para reducirla).

Parece que usar instantáneas como una copia de seguridad de archivo similar a la máquina del tiempo / snapper no es una buena idea.

Fuerte
fuente
Time Machine no es una copia de seguridad de archivo, es una copia de seguridad. No comparto tu conclusión. El uso de instantáneas de btrfs puede ser una muy buena idea para Time Machine, como las copias de seguridad (porque el kernel de Linux no puede vincular un directorio, lo que provoca que se vuelva a crear la estructura completa del directorio para cada instantánea, lo que puede causar un considerable uso de espacio en disco). Para una copia de seguridad en un solo dispositivo de copia de seguridad, sin desear agregar dispositivos adicionales, ni siquiera tiene un propósito ejecutar un comando de equilibrio. La respuesta de la lista btrfs también intenta explicar esto.
Pro Backup
@ProBackup, la respuesta de la lista btrfs dice que mantenga el número de instantáneas en dígitos de duda simples a bajos, lo que el arco predeterminado para snapper realmente no hace. Si bien btrfs-balance no es necesario para una configuración simple, a muchos usuarios les gusta la idea de btrfs-check, incluso si nunca lo necesitan, y la eliminación de subvolumen parece crítica si desea rotar subvolúmenes de la misma manera que lo hace snapper.
StrongBad
La copia de seguridad de archivo @ProBackup probablemente no sea el término correcto para Time Machine. Parece que Time Machine es más que una copia de seguridad incremental, pero no me sentí cómodo llamándola una copia de seguridad basada en instantáneas como snapper o rsnapshot, pero tal vez eso sería mejor. Me alegra que edite el término, ya que parece que sabe mucho sobre el campo.
StrongBad
Por lo que leí en la página de inicio de Snapper, Snapper no es una herramienta de respaldo. A pesar de que el pargo puede retroceder en el tiempo, no significa que sea como Time Machine. La diferencia esencial es que Time Machine almacena copias de todos los datos en un medio separado, donde Snapper ni siquiera puede crear una copia.
Pro Backup
@ProBackup finalmente, por favor escriba una respuesta y explique por qué mis conclusiones sobre la respuesta en la lista de correo son incorrectas. De esa manera podemos ver cómo se siente la comunidad.
StrongBad
3

Puede tener un total combinado de 2 64 instantáneas y subvolúmenes.

La btrfspágina wiki de diseño dice (empahsis mine):

Los subvolúmenes son básicamente un btree con nombre que contiene archivos y directorios. Tienen inodos dentro del árbol de raíces de árboles y pueden tener propietarios y grupos que no sean raíces. Los subvolúmenes pueden recibir una cuota de bloques, y una vez que se alcanza esta cuota, no se permiten nuevas escrituras. Todos los bloques y extensiones de archivo dentro de subvolúmenes son contados por referencia para permitir instantáneas. Se pueden crear hasta 2 64 subvolúmenes en el FS.

Las instantáneas son idénticas a los subvolúmenes , pero su bloque raíz se comparte inicialmente con otro subvolumen. Cuando se toma la instantánea, el recuento de referencia en el bloque raíz aumenta y la copia en el sistema de transacción de escritura garantiza que los cambios realizados en la instantánea o en el subvolumen de origen sean privados para esa raíz. Las instantáneas se pueden escribir y se pueden volver a tomar instantáneas varias veces. Si se desean instantáneas de solo lectura, su cuota de bloque se establece en uno en el momento de la creación.

Tom Hale
fuente