Archivo de objetos

El archivo de objetos posibilita guardar archivos en un contenedor (pool) y recuperarlos por su nombre y no requiere estructura jerárquica (como carpetas). Permite además independizarnos del espacio disponible, la replicación y disponibilidad de datos.

Los archivos como objetos se guardan en "espacios" llamados pool, que es un concepto normal en sistemas de almacenamiento empresariales. El pool en Ceph es una partición lógica para archivar objetos que está distribuída a lo largo del los nodos (OSDs) para proveer resilencia. Los permisos de acceso se otorgan para cada pool y los pools pueden ser creados siguiendo diferentes criterios de acuerdo a las necesidades de las aplicaciones o de archivo.

En esta guía creamos un pool llamado datastore en el cual guardamos el archivo /etc/passwd con el nombre myobject. Seguidamente recuperamos el archivo myobjet del storage.

objet storage

Ceph ya viene on varios pools creados por defecto, que podemos consultar:

# ceph osd lspools
6 leseb,7 .rgw,8 .rgw.gc,9 .rgw.control,10 .users.uid,11 .users,14 rbd,15 data,16 metadata,

el comando rados se utiliza en el cliente para el manejo de los objetos en el pool. También se puede utilizar los comandos S3 (s3cmd) de Amazon, pues el contenedor de objetos Ceph es compatible.

Podemos observar el estado de todos los pools con:

# rados df
pool name                 KB      objects    
.rgw                       0            0     
.rgw.control               0            8   
.rgw.gc                    0           32     
.users                     1            1   
.users.uid                 1            1  
data                       0            0 
leseb                      0            0 
metadata                   9           21            
rbd                        0            0             
total used         2134360          564
  total avail       18323112
  total space       20457472

Para generar nuestro propio pool:

# ceph osd pool create datastore 150
pool 'datastore' created

Y con rados put subimos nuestro archivo:

# rados -p datastore put myobject /etc/passwd

Podemos listar el contenido de nuestro pool

# rados -p datastore ls
myobject

Y ver su estado, que indica que contiene 1 objeto:

# rados df -p datastore
pool name                 KB      objects
datastore                  2            1
  total used         2476748          260
  total avail       17980724
  total space       20457472

Para descargar el archivo utilizamos rados get y le asignamos un nombre a la copia que se generará localmente:

# rados -p datastore get myobject mypass
$ cat pass

Estos pasos los podemos repetir, por ejemplo, creando 500 archivos con este comando:

# for i in $(seq 1 500) ; do rados -p datastore put myobject$i /etc/passwd; done

y ver con rados df -p datastore como aumenta la cantidad de archivos en el pool.