Ceph RGW: almacenamiento y direccionamiento de datos
1. Metadatos
La información de metadatos incluye: usuarios, depósitos e instancias de depósito. Entre ellos:
Usuario: se refiere principalmente a la información del usuario almacenada en el objeto.
Depósito: mantiene principalmente la información de mapeo entre el nombre del depósito y la identificación de la instancia del depósito.
Bucket.instance: Mantiene la información de la instancia del Bucket.
Ver los metadatos del usuario de la siguiente manera:
lista de metadatos de radosgw-admin usuario:
adquisición de metadatos de radosgw-admin usuario:testid:
radosgw-Administrar depósito de lista de metadatos:
radosgw-Administrar depósito de adquisición de metadatos: primero:
radosgw-Administrar depósito de lista de metadatos.instancia:
radosgw-admin Los metadatos obtienen la instancia del depósito: primero: {bucket _ id}
2. Índice del depósito
El índice del depósito se mantiene principalmente en la información del índice de un objeto. Un cubo corresponde a uno o más objetos rados (debajo de los fragmentos del cubo). Mantiene una estructura de mapeo clave-val y el mapeo se almacena en el omap del objeto (rocksdb). El objeto rgw y Val correspondiente a la clave son información de metadatos sobre el objeto rgw, que se necesita al recuperar los objetos almacenados en el depósito. Omap también contiene un encabezado que almacena información de la cuenta del depósito, como la cantidad de objetos en el depósito, el tamaño total, etc.
3. Datos
El contenido del objeto rgw se almacena en uno o más objetos rados. Los objetos Rados se dividen en cabezas y colas. El encabezado puede contener hasta 512 KB de datos. Si el tamaño del objeto rgw es inferior a 512 KB, solo se utiliza el encabezado. De lo contrario, los datos restantes se dividirán en múltiples objetos rados según el tamaño del objeto rados del grupo.
Utilice espacios de nombres para aislar varios espacios de almacenamiento en un grupo: Grupo: {zone}.rgw.meta:
Para el grupo: {zone}.rgw.log también contiene varios espacios de nombres:
Cuando un objeto se recupera del almacenamiento de objetos, contendrá tres elementos: usuario, depósito y objeto. RGW utiliza al usuario principalmente para obtener la ID de usuario de ACL de autenticación. El depósito y el objeto se utilizan para determinar la ubicación del objeto en el grupo.
Usuarios
Los datos del usuario se almacenan en {zone}.rgw.meta:users.uid, como se muestra a continuación:
Contiene dos partes: ups3: usuarios Autoinformación; Ups3.buckets: buckets a los que pertenece el usuario.
Ups3: Información básica del usuario, ACL/cuota de Bucekt/cuota de usuario, etc. Corresponde a la estructura RGWUserInfo
Ups3 definida en rgw_common.h. cubos: el cubo, la estructura de valores clave a la que pertenece el usuario, se almacena en la estructura omap; la estructura correspondiente cls_user_bucket_entry se define en rgw_common.h, y la operación de datos es la siguiente:
Descubra cuál depósitos que posee el usuario a través de {uid} . Depósitos, estos depósitos tienen los siguientes datos básicos.
Depósito
La información del depósito existe en {zone}.rgw.meta:root, como se muestra a continuación:
Primero: registre el depósito y el depósito_instance_id Relación correspondiente, correspondiente Estructura de datos: estructura RGWBucketEntryPoint.
. cubo . meta primero:1 C60 b 268-0a5d-4718-ad02-E4 b5 BCE 824 BF 44166.4: modo de direccionamiento. Estructura correspondiente: estructura RGWBucketInfo.
Las políticas de IAM y ACL del depósito se almacenan en el atributo del objeto de instancia del depósito. Como se muestra a continuación:
Obtenga los datos de política de IAM y ACL del depósito de la siguiente manera:
Destino
Índice del depósito: la información del objeto contenida en el depósito se almacena en un O en el mapa de múltiples objetos. Este omap es una estructura clave-valor, la clave es el nombre del objeto y el valor corresponde a struct rgw _ bucket _ dir _ entrada: cls _ rgw _ tipos.
Objeto de índice de depósito:
Como se muestra a continuación:
Debajo de este depósito, hay un objeto: ntp.conf:
Recuperación valor:
El encabezado de Omap registra las siguientes estadísticas:
Los datos del objeto de almacenamiento se almacenan en el grupo: {zone}. rgw.buckets.data. La composición y el direccionamiento de objetos se pueden dividir en las dos categorías siguientes:
Un objeto RGW puede estar compuesto por uno o más objetos rados. El primer objeto es el objeto principal de este RGW, que contiene principalmente información de metadatos, como manifiesto, ACL, tipo de contenido, etiqueta electrónica, metadatos personalizados, etc. Estos metadatos se almacenan en el xattr de este objeto principal. El manifiesto describe la distribución de este objeto rgw. Al mismo tiempo, este objeto principal puede contener hasta 4 MB de datos adicionales. Si el tamaño del objeto RGW es inferior a 4 MB, entonces el objeto RGW no se fragmentará, solo el objeto de encabezado.
Busque de la siguiente manera:
Actualmente hay un ntp.conf debajo del depósito, < 4 MB. Recupera su lista:
Como arriba:
.Max_head_size: indica el tamaño máximo del objeto principal;
Head_size: indica el tamaño del objeto principal actual;
Prefijo: se utiliza para direccionar objetos de partición en rados.
ACL de objeto RGW:
Cargue un objeto RGW de más de 4 MB y recupere su información de manifiesto:
Información de manifiesto:
Según el manifiesto Recuperar objetos:
Para un objeto RGW grande, se cortará en varios objetos RGW independientes y se cargará. Esto se llama multiparte. La ventaja del multitrayecto es que se reanuda la transmisión. El tamaño de corte predeterminado de la interfaz s3 es 15 MB.
Sube un objeto de 60 MB aquí.
Subido en cuatro partes, visualiza objetos rados:
Contiene tres tipos de objetos, cabeza, multiparte y sombra.
Lista en varias partes:
Toda la recuperación de objetos se basa en la información de la lista anterior para construir el índice de objetos:
En la información anterior, este RGW El tamaño del objeto es 48128000 bytes, dividido en cuatro segmentos, tres segmentos tienen 15 MB y el último segmento tiene 920 KB. Al mismo tiempo, el tamaño de la franja de cada segmento almacenado en el clúster de rados es de 4 MB. Por lo tanto, el segmento de 15 MB también se divide en cuatro objetos rados, un encabezado multiparte y tres segmentos de sombra. Un segmento de datos de 920 KB tiene solo un encabezado de varias partes.
rgw.root:
Contiene información como áreas, grupos de áreas y reinos.