Almacenamiento estable CLFS

Al escribir un registro en una transmisión del Sistema de Archivos de Registro Común (CLFS), el registro se coloca en un bloque de E/S de registro (en un área de serialización) en memoria volátil. Periódicamente, CLFS vacía los bloques de E/S de registro del área de agrupación a un almacenamiento estable, como un disco. En el dispositivo de almacenamiento estable, el registro consta de un conjunto de contenedores, cada uno de los cuales es una extensión contigua en el medio físico. Una colección de contenedores que forman el almacenamiento estable para una secuencia se denomina registro o un registro físico.

En la ilustración siguiente se muestra un contenedor.

diagrama que ilustra contenedores, bloques y registros.

En la ilustración anterior se muestra un contenedor que contiene tres bloques de E/S de registro. El primer bloque de E/S de registro contiene tres registros, el segundo contiene cinco registros y el tercero contiene dos registros. Como sugiere la ilustración, el principio de cada bloque de E/S de registro siempre se alinea con el principio de un sector en el medio de almacenamiento estable. Los bloques de E/S de registro en el almacenamiento estable varían en tamaño.

CLFS usa un conjunto de tres números para buscar un registro en un registro.

  • El identificador de contenedor identifica el contenedor que contiene el registro.

  • El desplazamiento del bloque proporciona el desplazamiento de bytes, dentro del contenedor, del principio del bloque de E/S de registro que contiene el registro.

  • El número de secuencia de registro identifica el registro dentro del bloque de E/S.

El número de secuencia de registro (LSN) de un registro CLFS contiene realmente esos tres fragmentos de información: identificador de contenedor, desplazamiento de bloque y número de secuencia de registro. Sin embargo, los LSN proporcionados para registrar clientes contienen identificadores de contenedor lógicos que CLFS debe asignar a identificadores de contenedor físicos antes de acceder a los registros en el almacenamiento estable.

CLFS usa identificadores de contenedor lógicos para proporcionar a los clientes la impresión de que los registros se escriben en una secuencia continua de contenedores, cuando en realidad se reciclan los contenedores físicos.

Supongamos que un registro tiene tres contenedores y un solo cliente está escribiendo registros CLFS en el registro. En el escenario siguiente se muestra cómo se puede reciclar un contenedor.

  1. El cliente escribe suficientes registros para rellenar los tres contenedores.

  2. El cliente establece la base de registro (llamando a ClfsAdvanceLogBase o ClfsWriteRestartArea). En uno de los registros del contenedor 2. Al hacerlo, el cliente dice que ya no necesita los registros en el contenedor 1.

  3. El cliente escribe otro registro en el registro y devuelve el LSN del registro recién escrito. El identificador de contenedor lógico de ese LSN es 4. Cuando los registros se vacían en almacenamiento permanente, los registros que el cliente ve en el contenedor lógico 4 van al contenedor físico 1.

En la ilustración siguiente se muestra el escenario; muestra cómo la secuencia de contenedores lógicos del cliente se asigna a contenedores físicos en almacenamiento permanente.

diagrama que ilustra los contenedores lógicos y físicos.

El identificador de contenedor lógico, el desplazamiento de bloques y el número de secuencia de registros se almacenan en un LSN para que los LSN de un flujo particular siempre formen una secuencia estrictamente creciente. El LSN (con identificador de contenedor lógico) de una entrada de registro escrita en una secuencia siempre es mayor que los LSN de las entradas de registro escritas anteriormente en esa misma secuencia. Los LSN sirven de doble propósito: (1) proporcionan a los clientes de una secuencia una secuencia ordenada de identificadores de registro y (2) proporcionan a CLFS la ubicación de los registros en el almacenamiento estable.

Dado el LSN de un registro, puede extraer el identificador de contenedor lógico, el desplazamiento del bloque y el número de secuencia de registros llamando a las funciones siguientes.

ClfsLsnContainer

ClfsLsnBlockOffset

ClfsLsnRecordSequence

El identificador de contenedor lógico es un número de 32 bits, por lo que hay 2^32 identificadores de contenedor lógico posibles y se encuentran en el intervalo 0x0 a través de 0xFFFFFFFF. Una secuencia puede tener como máximo 2^32 contenedores lógicos.

El desplazamiento del bloque se almacena en 23 bits del LSN, pero ClfsLsnBlockOffset devuelve un número de 32 bits alineado con el tamaño de sector del medio de almacenamiento estable. El desplazamiento del bloque siempre es un múltiplo de 512. Además, el desplazamiento del bloque es alineado con el tamaño del sector del medio de almacenamiento estable. Por ejemplo, si el tamaño del sector es de 1024 bytes, el desplazamiento del bloque es un múltiplo de 1024.

El número de secuencia de registros es un número de 9 bits, por lo que hay números de secuencia de registros posibles de 2^9 (512) y están en el intervalo 0x0 a través de 0x1FF. Un bloque de E/S de registro puede tener como máximo 512 registros.

Cuando se habilita la autenticación de archivos CLFS , CLFS crea archivos de transacción con la extensión .cnpf junto con el archivo de registro base (BLF) y los archivos de contenedor. Si un archivo de registro no está cerrado de forma limpia, el archivo de transacción contiene los datos necesarios para que CLFS recupere el archivo de registro.

Consulte también

Autenticación de archivos CLFS

ClfsAdvanceLogBase

ClfsWriteRestartArea

ClfsLsnBlockOffset

ClfsLsnContainer

ClfsLsnRecordSequence