Sistema de archivos distribuido de Qumulo
Codificación de Borrado
Protección de datos basada en la codificación de borrado.
La protección contra la pérdida de datos en caso de fallo del disco siempre incluye algún tipo de redundancia o duplicación de información en los dispositivos de almacenamiento.
La forma más simple de protección de datos es la duplicación. Reflejar significa que hay dos o más copias completas de los datos que se están protegiendo. Cada copia reside en un disco diferente, por lo que es recuperable si uno de los discos falla. La duplicación es sencilla de implementar, pero tiene desventajas en comparación con las técnicas de protección de datos más modernas. La duplicación es un desperdicio en términos del espacio requerido para la protección de datos; además, solo maneja un solo fallo de disco, que generalmente no es un nivel de seguridad suficientemente alto a medida que aumenta la densidad de los nodos y el tamaño de los grupos.
Otras estrategias para la protección de datos incluyen la creación de bandas RAID. RAID requiere una administración extremadamente compleja, y los tiempos de reconstrucción lentos obligan al administrador a elegir entre una reconstrucción inaceptablemente larga o una eficiencia de almacenamiento inaceptable.
SBS implementa su protección de datos basada en bloques con una técnica eficiente conocida como codificación de borrado (CE).
EC es más rápido, más configurable y más eficiente en cuanto al espacio que otras alternativas como la creación de reflejos y la creación de bandas RAID. EC codifica datos de bloques utilizando segmentos redundantes que se almacenan en diferentes medios físicos. Debido a la eficiencia de EC, hay más disco disponible para datos en comparación con los esquemas RAID y de creación de reflejo, y esto reduce el costo por terabyte utilizable.
EC se puede configurar con compensaciones por rendimiento, tiempo de recuperación en el caso de medios físicos fallidos y el número de fallos simultáneos permitidos. Usaremos las notaciones "m" y "n" para indicar una configuración EC específica, donde "m" indica el número total de bloques de medios físicos que se utilizarán para codificar de forma segura "n" bloques de usuario. La codificación tiene la propiedad de que "hasta m - n" bloques se pueden destruir sin pérdida de datos del usuario. En otras palabras, la supervivencia de cualquier colección de "n" discos es suficiente para recuperar todos los datos del usuario, incluso si algunos de los discos fallidos contienen datos del usuario. La eficiencia de la codificación se puede calcular como el número "n / m" o la proporción de bloques de usuario dividida por todos los bloques.
EC es más fácil de entender con ejemplos. Aquí hay un ejemplo simple llamado (3,2) codificación.
La codificación A (3,2) requiere tres bloques (m = 3), almacenados en tres dispositivos físicos distintos para codificar de forma segura dos bloques (n = 2). Dos de los bloques contienen los datos de usuario que queremos proteger y el tercero se llama bloque de paridad. El contenido del bloque de paridad se calcula mediante el algoritmo de codificación de borrado. Incluso este esquema simple es más eficiente que el reflejo: solo está escribiendo un bloque de paridad por cada dos bloques de datos. En una codificación (3, 2), si el disco que contiene cualquiera de los tres bloques falla, los datos del usuario en los bloques 1 y 2 son seguros.
Así es como funciona. Si el bloque de datos 1 está disponible, simplemente lo lee. Lo mismo es cierto para el bloque de datos 2. Sin embargo, si el bloque de datos 1 está inactivo, el sistema EC lee el bloque de datos 2 y el bloque de paridad y reconstruye el valor del bloque de datos 1 utilizando la fórmula Reed-Solomon (que en este ejemplo en particular es solo XOR a nivel de bits).
De manera similar, si el bloque de datos 2 reside en el disco defectuoso, los sistemas leen el bloque de datos 1 y el bloque de paridad. SBS se asegura de que los bloques estén en diferentes ejes para que el sistema pueda leer desde bloques simultáneamente. La codificación A (3,2) tiene una eficiencia de 2 / 3 (n / m), o porcentaje de 67. Si bien es mejor que el 50, la eficiencia porcentual de la duplicación en términos de almacenamiento de datos, la codificación (3,2) aún puede proteger solo contra un solo disco.
Como mínimo, Qumulo usa codificación (6, 4), que almacena un tercio más de datos de usuario en la misma cantidad de espacio que la duplicación, y la capacidad de tolerar dos fallas de disco en lugar de solo una como hace la duplicación. Incluso si dos bloques que contienen datos del usuario no están disponibles, el sistema aún necesita leer los dos bloques de datos restantes y los dos bloques de paridad para recuperar los datos faltantes.
Distribución de bloques virtuales protegidos a través de nodos.
Hay muchas consideraciones prácticas a tener en cuenta cuando implementación de codificación de borrado en sistemas con escalabilidad masiva. Para facilitar el proceso de escritura de los bloques de paridad requeridos (y para restaurar datos cuando falla un disco), SBS divide su espacio de direcciones virtuales de bloques 4K en segmentos lógicos llamados tiendas protegidas o pstores.
SBS administra cada pstore individualmente, lo que hace que el esquema de mapeo que asocia el espacio de direcciones protegido a los discos sea más flexible. Todas las pstores son del mismo tamaño. La protección de datos se implementa por completo en el nivel de pstore del sistema. Se puede pensar en un pstore como una tabla que asigna rangos de direcciones de bloque virtual protegidas a regiones contiguas de almacenamiento que residen en discos virtuales de los nodos del clúster de Qumulo.
Las regiones contiguas se llaman bstores. El mapa de pstores a bstores es almacenado por cada nodo del cluster.
Por confiabilidad, los nodos del cluster usan un algoritmo distribuido llamado Paxos para mantener el consenso sobre el conocimiento compartido globalmente, como el mapa pstore-to-bstore. El clúster forma un quórum de nodos para garantizar la seguridad de las estructuras de datos críticos del clúster. Cada bstore utiliza un segmento de un disco virtual específico (es decir, el bstore está asociado con un par de SSD y HDD en particular).
A cada bstore se le asigna un espacio contiguo en su HDD asociado, mientras que el espacio en el SDD asociado del bstore se asigna dinámicamente. Los metadatos sobre un bstore también existen en su SSD asociado. Los metadatos de Bstore incluyen información como las direcciones en uso y un mapa que indica qué direcciones de bloque en el almacenamiento SSD de referencia de bstore y cuáles están en el disco duro.
Durante una lectura o escritura, pstore decide a qué bstores se debe acceder. Cuando un cliente del sistema de archivos inicia una operación de escritura, ingresa a SBS como un flujo de datos en bruto. El sistema determina a qué bstores escribir los datos, calcula los datos de paridad y escribe los datos sin procesar y los datos de paridad en los SSD al mismo tiempo, incluso si los SSD están en muchos nodos diferentes. Una vez que se escriben los datos, el usuario recibe un acuse de recibo de que la escritura ha tenido lugar.
Los bloques de datos que contienen datos de usuario y bloques de paridad se escriben en bstores. Un bstore particular, para su vida útil, contiene bloques de paridad o bloques de datos, pero no ambos. Debido a que EC se implementa en la capa pstore de SBS, los bstores que contienen bloques de paridad y los bstores que contienen bloques de datos se comportan de manera idéntica. La cantidad de almacenamiento asignado a un bstore depende de la elección de EC. Para mantener el tamaño de pstore consistente, el tamaño de bstore del sistema cambia de acuerdo con el esquema de codificación. Por ejemplo, si el pstore es 70GB, entonces, con la codificación (6,4), cada bstore es sobre 17.5GB, que divide el pstore en bstores 4. Para la codificación (10, 8), los bstores tendrán aproximadamente la mitad de ese tamaño.
En la nube, Qumulo usa el mismo esquema de protección de datos que en las instalaciones, con una excepción. En las instalaciones, el esquema de protección de datos requiere que haya al menos cuatro nodos en un clúster. En la nube, es posible tener un clúster de un solo nodo porque el sistema de archivos de Qumulo puede usar la duplicación incorporada que se encuentra en cada bloque de almacenamiento elástico. Los clústeres de Qumulo de un solo nodo en la nube usan (5, 4) codificación de borrado.
Tiempos de reconstrucción rápida
Los tiempos de reconstrucción de Qumulo se miden en horas. En contraste, los sistemas de almacenamiento heredados diseñados para cargas de trabajo con muchos menos datos tienen tiempos de reconstrucción que se miden en días.
Un gran número de archivos, cargas de trabajo mixtas y una mayor densidad de discos han contribuido a la crisis en los tiempos de reconstrucción de los dispositivos de almacenamiento heredados. La espectacular ventaja de Qumulo es un resultado directo de la protección avanzada basada en bloques de SBS. La protección basada en bloques es ideal para las cargas de trabajo modernas de hoy en día, donde hay petabytes de datos y millones de archivos, muchos de los cuales son pequeños.
El sistema de protección SBS no necesita realizar largas caminatas de árbol ni operaciones de reconstrucción archivo por archivo. En cambio, las operaciones de reconstrucción funcionan en los pstores. El resultado es que los tiempos de reconstrucción no se ven afectados por el tamaño del archivo. Los archivos pequeños se manejan de manera tan eficiente como los archivos grandes y proteger millones de archivos es completamente factible. Además, el sistema de archivos de Qumulo está diseñado para que los tiempos de reconstrucción no se vean afectados negativamente por el tamaño del clúster. De hecho, lo opuesto es verdad. Con Qumulo, los clústeres más grandes tienen tiempos de reconstrucción más rápidos que los clústeres más pequeños.
La razón de esto es que SBS distribuye el esfuerzo de cálculo de reconstrucción a través de los nodos del clúster. Cuantos más nodos, menos trabajo debe realizar cada nodo durante una reconstrucción. Los dispositivos de almacenamiento heredados con tiempos de reconstrucción lentos son vulnerables a fallas adicionales que pueden ocurrir durante el proceso de reconstrucción prolongado.
En otras palabras, los tiempos de reconstrucción lenta tienen un impacto negativo en la confiabilidad. Normalmente, los administradores compensan esto mediante un exceso de aprovisionamiento (es decir, disminuyendo la eficiencia al agregar redundancia de datos). Con los rápidos tiempos de reconstrucción de Qumulo, los administradores pueden mantener sus objetivos de Media Time To Data Loss (MTTDL) sin una gran cantidad de redundancia, ahorrando tiempo y dinero.
Reconstruyendo los pstores
Cuando un disco falla, el almacén protegido todavía existe. Siempre se puede leer y escribir desde. Sin embargo, algunas pstores tendrán bstores faltantes o dañados. Estos se llaman pstores degradados. Debido a EC, puede seguir leyendo las pstores degradadas, pero los datos ya no están completamente protegidos. En otras palabras, en el primer fallo, todavía tiene integridad de datos pero está un disco más cerca de la pérdida de datos. Para volver a proteger los datos, el sistema trabaja pstore por pstore (en lugar de archivo por archivo con grupos RAID, como en sistemas heredados) para reconstruir los bstores que se encontraban en la unidad de disco fallida.
SBS asigna una pequeña cantidad de espacio adicional en disco, por lo que hay espacio para hacer esto. A esto se le llama moderación. Dado que el mapa global de pstore a bstore contiene el ID del disco virtual asociado de bstore, esta información facilita saber qué pstores necesitan procesarse cuando falla un disco en particular. Dado que el mapa que asocia pstores con bstores es lo suficientemente pequeño como para residir en la memoria de cada nodo, los nodos pueden traducir rápidamente direcciones de bloques virtuales de pstore a bstore.
Durante el proceso de reconstrucción, SBS lee y escribe bstores de forma secuencial. Como los bstores se distribuyen de forma contigua en el disco, los pstores degradados se pueden reconstruir muy rápidamente. Las operaciones secuenciales son mucho más rápidas que muchas operaciones pequeñas de E / S, que pueden ser lentas y causar contención en el disco. El proceso de reconstrucción de SBS es eficiente: los discos participan exactamente en una secuencia de lectura o escritura a la vez durante el proceso de reconstrucción. No se requiere ninguna E / S aleatoria.
Además, los bstores son lo suficientemente pequeños para que el trabajo de re-protección se distribuya de manera eficiente en todo el clúster.
Operaciones de archivo normales no afectadas por reconstrucciones
En los sistemas de archivos heredados, la contención de bloqueo afecta los tiempos de reconstrucción y ralentiza las operaciones del sistema de archivos estándar durante la reconstrucción. Esto se debe a que estas operaciones de archivo compiten con los subprocesos de reconstrucción / reprotección. Qumulo utiliza capas de escritura con esquemas de bloqueo independientes para que las operaciones de reconstrucción no compitan con el uso normal del sistema de archivos.
Cuando hay un error, no tiene sentido escribir en el conjunto incompleto de bstores en los pstores degradados. Las nuevas escrituras no estarían completamente protegidas y complicaría el trabajo de reconstrucción de bstore. Sin embargo, el clúster no debe experimentar tiempo de inactividad durante la operación de reconstrucción, y como resultado, las operaciones de escritura iniciadas por el usuario no pueden esperar a que se vuelva a proteger un pstore. Para realizar esas escrituras, el sistema agrega una nueva capa de bstores virtuales al pstore degradado. Esto se denomina "empujar una capa". Las escrituras van a la nueva capa de bstores y las lecturas combinan los valores de cada capa. Aquí hay un ejemplo:
Las nuevas escrituras entran en la capa superior de bstores. Una lectura combina los valores de la capa superior y la capa inferior mediante el uso de EC. Una vez que se reconstruye el bstore, la capa de empuje desaparece. Las capas se construyen utilizando componentes del sistema de transacciones de SBS de una manera que las hace no bloqueantes.
Los archivos pequeños son tan eficientes como los archivos grandes
Debido a que el sistema de archivos Qumulo utiliza protección basada en bloques, los archivos pequeños son tan eficientes como los archivos grandes.
Pueden compartir franjas con otros archivos y pueden compartir la protección. Cada archivo consta de los bloques de datos, al menos un bloque de inodo y cualquier otro bloque que se requiera. Los archivos muy pequeños están alineados en el bloque de inodo. El sistema utiliza bloques 4K y todos los bloques están protegidos en la relación de protección del sistema.
La eficiencia de Qumulo con archivos pequeños es una gran ventaja en comparación con los dispositivos de almacenamiento heredados, que utilizan la duplicación ineficiente para archivos pequeños y metadatos del sistema.
Toda la capacidad aprovisionada está disponible para archivos de usuario.
Los archivos de usuario de Qumulo pueden ocupar 100 por ciento de la capacidad provista, mientras que la ampliación de escala heredada solo recomienda usar 80 para 85 por ciento. La protección basada en bloques de Qumulo no requiere ninguna capacidad provista por el usuario para la re-protección, aparte de una pequeña cantidad de espacio para el ahorro, que se excluye de la capacidad provista por el usuario. En contraste, los dispositivos de almacenamiento heredados implementan protección ya sea con grupos RAID fijos, o con codificación de borrado archivo por archivo, lo que significa que la re-protección también ocurre a nivel de archivo y requiere la capacidad de recuperación provista por el usuario. Además, el sistema de archivos Qumulo informa con precisión la capacidad disponible para los archivos de usuario.
Una vez más, esta previsibilidad es una consecuencia de la protección basada en bloques. En los sistemas heredados, el uso del almacenamiento depende del tamaño del archivo, por lo que estos sistemas solo pueden informar sobre el espacio en bruto; los administradores deben adivinar cuánto espacio tienen realmente. Al comparar Qumulo con sistemas heredados, querrá considerar cuánta capacidad de provisión de usuarios está realmente disponible para usar en cada tipo de sistema.