Colección de citas famosas - Colección de consignas - Análisis del arte minimalista de almacenamiento distribuido Minio

Análisis del arte minimalista de almacenamiento distribuido Minio

El sistema de almacenamiento de objetos MinIO está diseñado para el almacenamiento masivo de datos, inteligencia artificial y análisis de big data. Es un sistema de almacenamiento de objetos basado en el protocolo de código abierto

Apache License v2.0. Es totalmente compatible con la interfaz de Amazon S3, un solo objeto puede tener hasta 5 TB, adecuado para almacenar imágenes masivas, videos, archivos de registro, datos de respaldo, imágenes de contenedores/máquinas virtuales, etc. Como servicio de código abierto, MinIO ha aprendido de la experiencia y las lecciones relevantes de Glusterfs en su diseño y ha simplificado enormemente la complejidad del sistema. El tamaño actual es de solo 40 M y la implementación se puede completar con un solo comando. Además, minio abandona el proceso de migración requerido para la expansión del almacenamiento distribuido tradicional y adopta el modo de alianza para agregar clústeres, lo que simplifica enormemente el proceso de expansión. Además, minio también tiene codificación de borrado, protección de bits y lectura múltiple de escritura única (gusano); Analicemos brevemente las características e implementación específica de Mioio a su vez:

?Los metadatos y los datos se almacenan juntos en el disco. Los metadatos se almacenan en el archivo de metadatos (xl.json) en texto sin formato. Supongamos que el nombre del objeto es nombre_clave, el nombre del depósito donde se encuentra es nombre_depósito, la ruta del disco es /disco, luego la ruta de almacenamiento es: /disco/nombre_bucket/nombre_clave, el nombre del depósito de la unidad C en Windows es prueba, y el nombre del objeto es minio.exe. Los ejemplos son los siguientes Figura:

La parte 1 son los datos almacenados reales (el modo independiente son datos nativos, los distribuidos son bloques de código de borrado), xl. json es la cadena json como se muestra a continuación:

?En el mismo clúster, MinIO generará automáticamente varios grupos de borrado para distribuir los datos del depósito. Cuando falla una cierta cantidad de discos en un grupo de borrado (la cantidad de discos fallidos es menor o igual que la cantidad de discos de verificación), los datos correctos se pueden recuperar mediante el algoritmo de verificación de codificación de borrado. MinIO integra la biblioteca de codificación de borrado Reed-Solomon. Cuando MinIO almacena datos de objetos, primero los divide en varios fragmentos de igual longitud (para objetos grandes, el valor predeterminado es porciones de 5 MB) y luego cada fragmento se divide en varios fragmentos mediante el borrado. Algoritmo que incluye fragmentación de datos y fragmentación sin verificación, cada fragmento se coloca en un nodo de un grupo de borrado. Cada fragmento de datos y fragmento de verificación del objeto está protegido por el algoritmo de "atenuación anti-bits".

?MinIO utilizará el algoritmo hash crc32 para calcular un número entero basado en el nombre del objeto (similar al nombre de ruta completo del sistema de archivos). Luego use este número entero para dividir por el número de grupos de borrado para obtener un resto. Este resto se puede utilizar como número de serie del grupo de borrado, determinando así el grupo de borrado en el que se encuentra el objeto. MinIO utiliza el algoritmo hash CRC32, que es diferente del algoritmo hash Davies Meyer de glusterfs (el rendimiento y la probabilidad de conflicto no son similares a md4 y md5. La distribución del valor hash del algoritmo CRC32 es desigual, pero la velocidad de operación es extremadamente). rápido y superior a los múltiplos md4. En comparación con el equilibrio de capacidad, MinIO presta más atención a la velocidad de escritura de datos.

¿Cómo configurar un grupo de borrado?

El documento oficial lo explica así:

?Es decir, el tamaño total del grupo de borrado sólo se puede determinar a partir de estas 7 situaciones según el número de discos (o rutas) que proporcione el número) para seleccionar automáticamente el valor máximo, no podemos configurar de manera flexible el formato de almacenamiento de borrado m k.

Pero esto no es muy preciso, porque aunque no se puede configurar m k arbitrario, después de que el sistema ha seleccionado el número de conjuntos de codificación de borrado (es decir, m k), la clase de almacenamiento se puede usar para personalizar el número de m y k. el valor predeterminado es 1:1.

Clase de almacenamiento:

?MinIO admite la configuración de dos clases de almacenamiento, la clase de redundancia reducida y la clase estándar. La clase predeterminada es la clase estándar (1:1), que se puede utilizar. antes de iniciar el servidor MinIO. Estas clases se definen utilizando variables de entorno establecidas. Después de definir los datos y los discos de paridad para cada clase de almacenamiento utilizando variables de entorno, puede configurar la clase de almacenamiento del objeto solicitando el campo de metadatos x-amz-storage-class al cargar el objeto. Luego, el servidor MinIO respeta la clase de almacenamiento guardando el objeto en una cantidad específica de datos y discos de paridad. Para configuración y uso específicos, consulte la documentación oficial/minio/minio/tree/master/docs/erasure/storage-class

Desventajas del método de expansión tradicional

?Expandir agregando nodos En un solo clúster, generalmente es necesario realizar el equilibrio de datos; de lo contrario, aparecerán nuevos cuellos de botella en cada nodo de almacenamiento del clúster debido a una carga desigual. Además de la cuestión del momento de la operación de equilibrio de datos, durante el proceso de equilibrio, generalmente es necesario seguir almacenando los datos de migración de los nodos con alto uso y transferir los datos a los nodos con bajo uso. Cuando se expande el clúster, la ubicación de una gran cantidad de archivos escritos cambiará y será necesario migrar los archivos a la ubicación real. Cuando la capacidad del sistema de almacenamiento es relativamente grande, se migrará una gran cantidad de archivos/objetos y el proceso de migración puede hacer que el rendimiento de las aplicaciones de la capa superior se degrade debido a que ocupan una gran cantidad de recursos. Además, durante el proceso de migración de archivos/objetos, los fallos de la máquina pueden provocar situaciones inesperadas, especialmente cuando hay una gran cantidad de negocios. Por supuesto, los sistemas de archivos como Gluterfs tienen algunas soluciones relativamente complejas para estos problemas.

No se admiten ventajas ampliadas