El Journal de Ceph y su migración

cephCuando creamos y añadimos un nuevo osd a un cluster de Ceph, en el proceso de creación del sistema de archivos y su estructura, uno de los ficheros generados en este proceso es el encargado del almacenamiento de transacciones de escritura sobre el sistema de archivos.

El uso de un dispositivo de journal se justifica por dos razones: velocidad y consistencia.

  • Velocidad: ya que habilita al demonio del OSD a realizar pequeños procesos de escritura de una forma más ágil. Ceph trata escrituras aleatorias de pequeño tamaño de una forma secuencial utilizando este dispositivo, y proporciona más tiempo al sistema de archivos para realizar las escrituras de los datos. Facilitando la absorción de picos de carga, en cortos periodos de tiempo, seguidos por periodos sin ningún acceso en los que se realiza el volcado del dispositivo de journal.
  • Consistencia: el demonio del OSD necesita un interfaz con el sistema de archivos que garantice la atomicidad de las operaciones. De este modo, el demonio, describe la operación de escritura sobre el journal y con posterioridad aplica los cambios al sistema de archivos. Esto nos permite realizar actualizaciones atómicas de un objeto; de este modo, cada pocos segundos paraliza las escrituras y sincroniza el contenido del journal con el sistema de archivos, para posteriormente liberar el espacio y facilitar su reutilización. En caso de caida o parada no planificada del OSD, el demonio aplicará el journal a partir de la última operación de sincronización.

Por defecto en la creación de un osd, uno de los ficheros generados sobre el sistema de archivos es el fichero journal. El rendimiento del journaling varia sustancialmente si se trata de un fichero sobre un sistema de archivos o sobre un dispositivo raw. De está manera si hemos realizado una correcta planificación de nuestro entorno, a la hora de presentar el dispositivo siempre nos podemos reservar un espacio para este fin, realizando el journaling directamente sobre una partición específica del disco.

Para abordar esta tarea, en primer lugar debemos parar el OSD afectado y una vez detenido vaciaremos el contenido del fichero de journal sobre el sistema de archivos, para con posterioridad eliminarlo y crear un acceso simbólico al dispositivo sobre el que se realizará. Tras lo cual generaremos el journal y arrancaremos nuevamente el demonio poniendo en servicio el OSD con una mejora en el rendimiento de este proceso. En ocasiones nos puede solicitar el uuid de la partición, que deberá ir referenciada en el fichero journal-uuid y que simplemente contendrá el identificador de la misma. Sirva de ejemplo la siguiente secuencia de comandos:


### Parada del osd
service ceph stop osd.0
### Volcado del Journal
ceph-osd --flush-journal -i 0
### Crear el enlace simbólico a la partición
rm /var/lib/ceph/osd/ceph-0/journal
ln -s /dev/sde1 /var/lib/ceph/osd/ceph-0/journal
### Creación del nuevo journal
ceph-osd --mkjournal -i 0
service ceph start osd.0