¿Qué significa la bandera de montaje 'barrera' en Linux?

20

El manual para la opción de montaje 'barrera' es:

barrera = 0 / barrera = 1

Esto deshabilita / habilita el uso de barreras de escritura en el código jbd. Barrera = 0 deshabilita, barrera = 1 habilita (predeterminado). Esto también requiere una pila de E / S que pueda soportar barreras, y si jbd obtiene un error en una escritura de barrera, deshabilitará las barreras nuevamente con una advertencia. Las barreras de escritura imponen el orden adecuado en disco de las confirmaciones de diario, lo que hace que el uso de cachés de escritura de disco volátil sea seguro, con alguna penalización de rendimiento. Si sus discos están respaldados por batería de una forma u otra, deshabilitar las barreras puede mejorar el rendimiento de manera segura.

Pero no sé qué significa la frase " ordenación adecuada en disco de confirmaciones de diario ".

Supongamos el orden normal: diario 1, datos 1; diario 2, datos 2.
¿Cuál de los siguientes resultados de pedido sucederá si configuro barrier=0?

  1. revista 2, datos 2; revista 1, datos 1;
  2. datos 1, diario 1; datos 2, diario 2.
hoja de espada
fuente
git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/… es probablemente una lectura que vale la pena.
Håkan Lindqvist
1
Si lee acerca de los sistemas de archivos de diario, se dará cuenta de que es importante escribir el diario primero, luego ejecutar el diario y así escribir los datos reales en el disco. La barrera asegura que el diario se escriba antes de ejecutarse. De lo contrario, el diario nos será inútil.
ctrl-alt-delor
@richard Cuando se usa el indicador "nobarrier" en la incursión dura de BBWC, el disco no pudo garantizar que el diario se escriba antes de que se ejecuten sus datos, ¿no importa esta condición?
leafonsword
No sé lo suficiente como para saber si importa. Pensaría que, en el peor de los casos, es tan malo como no tener un diario, pero lo que he leído no parece tan malo, sin embargo, no puedo discernir las sutilezas. Tengo barrier=1, y corre lo suficientemente rápido para mí. A menos que estés haciendo cosas realmente pesadas, lo dejaría puesto. Tiene memorias intermedias de memoria RAM, por lo que las cosas se escribirán cuando sea posible, sin ralentizar las aplicaciones. Y muy poco retraso en la escritura en el disco. Si desea ver cuánto aceleran las memorias intermedias de ram, agregue sync = 1 a su directorio de inicio e intente usar su sistema durante un día o dos.
ctrl-alt-delor

Respuestas:

15

La mayoría de los sistemas de archivos modernos son sistemas de archivos de registro en diario, lo que significa que realizan un seguimiento de los cambios que aún no se han escrito en el disco en una estructura de datos interna llamada diario. En el caso de un bloqueo, este diario se reproducirá para asegurarse de que todas las escrituras se realizaron con éxito, evitando la corrupción de archivos.

Al escribir realmente los datos en el disco, la caché de escritura reordenará las escrituras para intentar maximizar el rendimiento, pero debe asegurarse de que los datos del archivo real se escriban en el disco antes de los metadatos, para asegurarse de que si se produce un bloqueo ocurre que los metadatos no estarán desactualizados con los datos.

El problema es que muchos discos tienen cachés propios que también pueden reordenar las escrituras. Algunos sistemas de archivos supondrán que eso sucederá y forzarán al disco a vaciar el caché en ciertos puntos para evitar esto, y se llama, write barrierspor ejemplo, en ext4 y Linux en general.

Sin embargo, para los discos modernos, el sacrificio de rendimiento por hacer esto es insignificante, y no debe deshabilitar las barreras de escritura a menos que sea absolutamente necesario.

kyrias
fuente
1

De este artículo de LWN :

El código del sistema de archivos debe, antes de escribir el registro de confirmación [de diario], debe estar absolutamente seguro de que toda la información de la transacción ha llegado al diario. Simplemente hacer las escrituras en el orden correcto es insuficiente; Las unidades contemporáneas mantienen grandes cachés internos y reordenarán las operaciones para un mejor rendimiento. Por lo tanto, el sistema de archivos debe indicar explícitamente al disco que obtenga todos los datos del diario en los medios antes de escribir el registro de confirmación; Si el registro de confirmación se escribe primero, el diario puede estar dañado. El subsistema de E / S en bloque del núcleo hace que esta capacidad esté disponible mediante el uso de barreras; en esencia, una barrera prohíbe la escritura de cualquier bloque después de la barrera hasta que todos los bloques escritos antes de la barrera estén comprometidos con los medios. Mediante el uso de barreras,

qinganfan
fuente