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.
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