Sistema de archivos Cephfs

El cluster de Ceph nos permite utilizarlo como si fuera un disco en la red, esta funcionalidad se denomina "Sistema de archivos de Ceph" o CephFS. Se trata de un sistema de archivos del estandar POSIX que está distribuído y al cual nos vinculamos con RADOS para acceder a los datos guardados por el cluster.

Cephfs

Para tener disponible CephFS es necesario tener un servicio de Ceph Metadata Server (MDS) activo.

Los datos en sí los guardan y acceden por RADOS que se vincula a los ODS como en las otras forma de uso de Ceph que se han probado. Pero toda la metadada vinculada a los archivos (fechas, permisos, tipo de archivo, dueño, etc.) y su estructura jerárquica (directorios, links, etc.) es guardada y accedida a través RADOS que se vincula a los MDS.

Si consultamos los pools por defecto, veremos que ya disponemos de dos para estas tareas:

  • data
  • metadada
# rados lspools
leseb
.rgw
.rgw.gc
.rgw.control
.users.uid
.users
rbd
data
metadata

Para montar un storage Ceph como un disco de red, disponemos de dos métodos:

  • Driver del kernel, que podemos llamar nativo
  • FUSE, que podemos llamar aplicación

el resultado será el mismo: presentar Cephfs en un punto de montado local, la diferencia estará en la complejidad u oportunidad para hacerlo.

Driver del Kernel

Creamos un punto de montado:

# mkdir /mnt/kernel_cephfs

Consultamos la clave del usuario validado en Ceph para montar los servicios de Cephfs:

# cat /etc/ceph/keyring
[client.admin]
key = AQDepD1R6La1ChAAssVYkuQ+cIgxsSxLl9Vo6w==

Ejecutamos mount, pasando el tipo de filesystem (-t) y el usuario y clave en las opciones (-o) el filesystem a montar es la IP y puerto del monitor (MON).

# mount -t ceph \
  -o name=admin,secret=AQDepD1R6La1ChAAssVYkuQ+cIgxsSxLl9Vo6w== \
  192.168.251.100:6790:/ /mnt/kernel_cephfs

Con esto ya tendremos Ceph montado como cualquier otro servicio de disco de red, listo para usar:

# df -h /mnt/kernel_cephfs/
Filesystem              Size  Used Avail Use% Mounted on
192.168.251.100:6790:/   20G  2.4G   18G  13% /mnt/kernel_cephfs

FUSE

FUSE es más inteligente que el driver del kernel, pero requiere de un utilitario (aplicación) adicional: ceph-fuse.

Creamos un punto de montado

# mkdir /mnt/cephfs

Ejecutamos directamente ceph-fuse y el punto de montado como único parámetro. Ceph-fuse se encargará de leer la configuración del cliente Ceph para realizar las validaciones y conexiones necesarias.

# ceph-fuse /mnt/cephfs/
ceph-fuse[3271]: starting ceph client
2015-10-14 21:48:13.194691 7f6a649fd7c0 -1 init, newargv = 0x36bb550 newargc=11
ceph-fuse[3271]: starting fuse

Con esto ya tendremos Ceph montado como cualquier otro servicio de disco de red, listo para usar:

# df -h /mnt/cephfs/
Filesystem      Size  Used Avail Use% Mounted on
ceph-fuse        20G  2.4G   18G  13% /mnt/cephfs