Bcachefs publica parches para reescribir la contabilidad del disco
El sábado por la noche, Kent Overstreet publicó un conjunto de 21 parches para corregir el código de contabilidad del disco para el sistema de archivos Bcachefs. Este cambio rompe la compatibilidad con el formato de contabilidad en disco y, por lo tanto, requerirá una actualización al pasar a la nueva versión, que puede ser hasta Linux v6.9.
Overstreet ha estado trabajando en reescribir la contabilidad del disco de Bcachef durante un tiempo y este fin de semana publicó la serie de parches iniciales. Explicó esta reescritura:
El antiguo sistema de contabilidad de discos era rápido, pero tenía algunas limitaciones:
– Falta de escalabilidad: se basó en contadores de percpu divididos adicionalmente por el búfer de diario distinto, luego, justo antes de escribir el diario, recopilamos los contadores y los agregamos a la entrada del diario. Pero esto significa que todos los contadores se agregan a cada escritura del diario, lo que significa que no podrá admitir contadores para cada instantánea.
– Extender esto fue una molestia, razón por la cual, hasta ahora, no teníamos una contabilidad de compresión adecuada y obtener la relación de compresión requería un escaneo completo del árbol b.
En el nuevo esquema:
– Cada conjunto de contadores es una bkey, una clave en el btree (BTREE_ID_accounting). Esto significa que no están instalados en el cargador.
– La clave tiene una estructura extensible, disk_accounting_key, que es una unión etiquetada, que es solo una unión entre módulos POS.
– Los contadores son deltas, hasta que se vuelcan al btree subyacente, significa que las actualizaciones de los contadores son actualizaciones normales del btree; El búfer de escritura btree hace que las actualizaciones de contadores sean eficientes.
Dado que leer contadores del btree sería costoso (requiere un vaciado del búfer de escritura para actualizar los contadores), también mantenemos un conjunto paralelo de contabilidad en la memoria, un poco como el esquema anterior pero sin cada partición del búfer de diario. Los contadores en memoria en el árbol de eytzinger están indexados por disk_accounting_key/bpos, siendo los propios contadores percpu u64s.
Esto rompe el formato en disco del sistema de archivos y, por lo tanto, es necesario restablecer la contabilidad cuando actualiza (o degrada) después de esta nueva versión. Esto debería suceder de forma transparente a través del kernel fsck, pero existen algunas limitaciones conocidas para los usuarios de Linux 6.7 en este momento. La esperanza es que esta reescritura de la contabilidad del disco esté lista para Bcachefs en Linux v6.9.
Más detalles sobre este nuevo código vía Serie de parches.
“Alborotador. Amante de la cerveza. Total aficionado al alcohol. Sutilmente encantador adicto a los zombis. Ninja de twitter de toda la vida”.