Desfragmentación Btrfs de archivos / carpetas

9

Acabo de instalar Ubuntu 11.10 en el sistema de archivos Btrfs y quiero hacer una pregunta sobre la desfragmentación de archivos.

¿Realmente necesito desfragmentar archivos o todo el sistema?

Desfragmentar # btrfs sistema de archivos desfragmentar / pool1 Desfragmentar

Desfragmentación de Btrfs

Un cero
fuente
No, btrs, ext4,3,2, ETC ... no requieren que desfragmente las unidades, lo sufren como cualquier otro sistema de archivos.
Uri Herrera
Pero de ninguna manera es lo mismo que NTFS.
Uri Herrera el

Respuestas:

13

Realmente no necesita desfragmentar los sistemas de archivos Btrfs manualmente.

Sí, Btrfs es COW (copia en escritura), lo que implicaría que fragmenta los archivos mucho más que Ext, pero esto se aborda en varios aspectos del diseño, incluida la capacidad de desfragmentar fácilmente el sistema de archivos mientras está en línea. Este extracto proporciona más detalles (énfasis mío):

Desfragmentación automática

Los sistemas de archivos COW (copiar-escribir-escribir) tienen muchas ventajas, pero también tienen algunas desventajas, por ejemplo, la fragmentación. Btrfs presenta los datos secuencialmente cuando los archivos se escriben en el disco por primera vez, pero un diseño COW implica que cualquier modificación posterior al archivo no debe escribirse sobre los datos antiguos, sino que debe colocarse en un bloque libre, que causar fragmentación (las bases de datos RPM son un caso común de este problema). Además, sufre los problemas de fragmentación comunes a todos los sistemas de archivos.

Btrfs ya ofrece alternativas para combatir este problema: en primer lugar, admite la desfragmentación en línea con el comando btrfs filesystem defragment. En segundo lugar, tiene una opción de montaje -o nodatacow, que deshabilita la VACA para los datos. Ahora btrfs agrega una tercera opción, la -o autodefragopción de montaje. Este mecanismo detecta pequeñas escrituras aleatorias en archivos y las pone en cola para un proceso de desfragmentación automática, por lo que el sistema de archivos se desfragmentará a sí mismo mientras se usa. Todavía no es adecuado para la virtualización o grandes cargas de trabajo de bases de datos, pero funciona bien para archivos más pequeños como rpm, SQLite o bases de datos bdb.

Por lo tanto, siempre y cuando no planee ejecutar un software intensivo en E / S como una base de datos bajo una carga significativa, debería ser bueno, siempre que monte sus sistemas de archivos con la autodefragopción.

Para verificar la fragmentación de los archivos, puede usar la utilidad filefrag :

$ find /path -type f -exec filefrag {} + >frag.list
# Now you can use your favourite tools to sort the data

En los sistemas Systemd, /var/log/journal/probablemente será el más fragmentado. También puede mirar ~/.mozillay otras bases de datos de navegadores.

Para desfragmentar, use:

$ sudo btrfs fi defrag -r /path
Félix Saparelli
fuente
¿Cómo sé si su desfragmentación ... o no ... comando para comprobar el estado de la desfragmentación
One Zero
2
Esta respuesta es incorrecta según el wiki de BTRFS : btrfs gotchas . El problema de la fragmentación de archivos se puede reproducir fácilmente ejecutando systemd-journald en un volumen btrfs. Aunque todavía no lo he probado, la opción autodefrag resuelve este problema.
Jonas Schäfer
He estado usando btrfs a tiempo completo durante al menos 18 meses, con systemd, firefox, etc. Una verificación rápida usando filefragrevela que los archivos de diario están realmente muy fragmentados (con un promedio de 10k extensiones cada uno), pero no he observado picos de CPU ni Impacto en el rendimiento. No tengo autodefragactivado, lo habilitaré e informaré en el próximo reinicio.
Félix Saparelli
Entonces: la fragmentación de archivos ocurre, autodefragayuda, el impacto en el rendimiento es menor en el mejor de los casos en los sistemas cotidianos. Obviamente, los servidores de carga pesada pueden necesitar medir y ajustar las cosas, pero, de nuevo, este es un software alfa, por lo que es posible que desee evitarlo de todos modos.
Félix Saparelli
find /path -type f -exec filefrag {} + >frag.listevita todos los FIBMAP unsupportederrores de directorios y otros archivos no regulares, y no se rompe con nombres de archivos extraños.
Peter Cordes
0

Por el bien de este tema, creo que es mejor aclarar que:

Any filesystem! = Utilidades de recuperación / gestión

Tenga en cuenta que el sistema de archivos se trata de cómo se organizan los datos en un hardware físico, todas las demás actividades se realizan con software y utilidades adicionales que, especialmente en GNU / Linux, son realizadas por personas que probablemente no están estrictamente relacionadas con quién hizo El sistema de archivos.

Probablemente este no sea el caso de los Btrfs, pero a veces estamos cerca de eso porque los entornos de escritorio y empresariales pueden proporcionar diferentes soluciones con diferentes grados de confiabilidad.

La respuesta a su pregunta es "no", pero es un "no" relacionado con el comportamiento normal de un sistema de archivos genérico, y cada utilidad que puede encontrar al respecto es simplemente un proyecto diferente.

Cuando necesite desfragmentar su sistema de archivos, tenga en cuenta que va a utilizar un software externo que no está realmente relacionado con la vida del sistema de archivos en sí, con todos los pros y los contras.

Micro
fuente
0

El comando para desfragmentar un sistema de archivos btrfs es

btrfs filesystem defragment sync -r -v -f [-czlib] / /home
usuario615852
fuente
0

Basado en esta respuesta se me ocurrió:

sudo find / -xdev -type f -exec filefrag {} + | sed -En 's/(.+): (\w+) extent.*/\2 \1/p' | sort -nr

Esto enumera los archivos más fragmentados primero, con el formato:

<num-fragments> <pathname>
Tom Hale
fuente