Skip to Content

Ceph: què és i com desplegar un sistema d'emmagatzematge distribuït

13 d’octubre de 2025 per
Ilimit Comunicacions S.L., Oscar Mas

Soc Òscar Mas i us vull ensenyar una eina de Storage, que és com una navalla Suïssa, ja que serveix per a qualsevol mena de Storage que vulguem presentar a un equip. Aquesta eina es diu Ceph.

Abans d'entrar en profunditat a explicar que és Ceph, hem de tenir clar tots els tipus de Storage que existeixen. Per sort nostra, només hi ha tres tipus:

  • De fitxers, més conegut com: File Storage
  • De blocs, més conegut com: Block Storage
  • D'objectes, més conegut com: Object Storage

Cada tipus de Storage, té una funcionalitat concreta i és molt important saber diferenciar-les, ja que sí per exemple, fem servir un tipus de Storage per una cosa, que no és el més adient, podríem arribar a tenir problemes. Imaginem per exemple que posem una màquina virtual en un sistema d'objectes, això seria catastròfic, ja que el rendiment que ens donaria seria pèssim. Però millor abordem en profunditat cada tipus de Storage.

File Storage

Aquest tipus de sistema de fitxers, és el que coneix tothom. És el que fem servir en els nostres equips per treballar diàriament, el qual està estructurat en carpetes i es poden donar permisos d'accés a unes carpetes o fitxers. En poques paraules, és on emmagatzemem les nostres fotos, música, pel·lícules, documents de text, fulls de càlculs, etc....

Un detall molt important (que igual és obvi), és que si per exemple tenim un fitxer de text molt gran, quan modifiquem el fitxer i volem guardar un canvi encara que sigui molt petit, es modifica tot el fitxer. Això s'ha de tenir en compte per a més endavant

Block Storage

Aquest tipus de sistema d'emmagatzemament, és molt freqüent veure-ho en sistemes de virtualització, i és on s'ubiquen els discs durs dels equips virtuals.

En ser un sistema bastant crític, per accedir a aquest tipus d'emmagatzemament, normalment es van servir diversos camins o com tècnicament es diu paths. Per dir-ho d'una manera més senzilla: es connecten diversos cables que van a parar al mateix lloc, per garantir que sí falles algun cable (path), sempre hi haurà un altre cable, pel qual podrem arribar a les dades.

La gran diferència que hi ha entre el sistema d'arxius File Storage, és que si tens un fitxer molt gran i modifiques una petita part, el que estàs modificant és aquesta petita part, no tot el fitxer sencer.  Gràcies a això, quan es fan còpies de seguretat, el primer cop que es fa aquesta còpia de seguretat, copia el fitxer sencer, i en les següents voltes que es realitza la còpia de seguretat, només es copien les diferències (block), que poden ser moltes o poques en funció de les modificacions que s'hagin fet.

Object Storage

Aquest sistema d'emmagatzemament, és el menys conegut i és un sistema per gestionar grans quantitats de dades "no estructurades".  Aquestes dades "no estructurades", poden ser tota mena de fitxers.

Gràcies a Amazon (en concret AWS), aquest sistema d'emmagatzemament de dades, s'ha fet molt popular, gràcies al seu emmagatzemament estrella, que es diu S3 (Simple Storage Service)

Ceph

Un cop tenim clars els tres tipus d'emmagatzemament, podem començar a explicar Ceph, el qual pot entregar els tres tipus d'emmagatzemament. D'aquí ve el terme que he fet servir abans de navalla Suïssa.

El primer que hem de saber és que Ceph és programari lliure i de codi obert. La seva primera versió oficial va ser el 2012. El 2018 es va crear la Ceph Fundation (amb membres com RedHat, Intel, Canonical o Western Digital) per gestionar la direcció i futur del projecte. 

Red Hat, el va introduir Ceph en el seu sistema de virtualització Red Hat Enterprise Virtualization (RHEV), a conseqüència de tenir molts problemes amb el seu sistema d'emmagatzemament, que fins aleshores feia servir GlusterFS. GlusterFS és un bon sistema d'emmagatzemament, però com diu el seu propi nom és un File Storage i no és el millor sistema per gestionar Màquines Virtuals.

El nom de Ceph ve de "cephalopod", el qual té moltes potes i les mou totes de forma coordinada. Aquest simbolitza perfectament un sistema distribuït amb molts equips treballant de forma simultània. Quan parlem d'un sistema distribuït, el que volem dir és que si agafem uns equips físics, li posem una sèrie de discs durs i instal·lem Ceph, tots treballaran units com si fossin un sol i podem fer que les dades es gravin en discs que estan ubicats en diferents equips, d'aquesta manera si un o diversos equips s'aturessin per qualsevol motiu, les dades continuarien vives.

La diversió que te Ceph, és que a part de distribuir les dades entre equips i fer que tots treballin de forma coordinada, podem arribar a ubicar les dades en diferents ubicacions: imaginem que tenim uns equips amb uns quants discs durs a la primera planta i a la segona tenim uns altres equips amb uns altres discs durs, podem arribar a fer que una dada es gravi dos cops, un cop en la primera planta i el segon cop en la segona planta. D'aquesta manera si li passes alguna cosa a una de les plantes, les dades estarien intactes a l'altra planta.

Tenint aquests conceptes clars, per fer una demostració del funcionament de Ceph, el que farem és en comptes de muntar una mega infraestructura, farem una demostració on un equip sol faci de Ceph.

Laboratori amb Ceph

⚠️ Aquest muntatge és per estudiar el funcionament de Ceph, mai s'ha de posar en producció, ja que tota la lògica resideix en un sol equip i això trenca tota la filosofia de Ceph. ⚠️

Aquest tipus de laboratori es diu tècnicament All-in-one i per fer-lo necessitem:

  • Un equip amb sistema operatiu Debian GNU/Linux
  • L'equip ha de tenir diversos discs durs, en aquest cas li hem posat tres discs de mides diferents, perquè quedi tot més clar.

Configuració de la màquina virtual amb Ceph All-in-One sobre Debian 12 amb diversos discos durs

Un cop desplegat el sistema operatiu, verificarem que es veuen correctament els discs durs. No hem de fer res més amb ells, ja que Ceph s'encarregarà de gestionar-los.

root@ceph-aio:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda    254:0    0   64G  0 disk
├─vda1 254:1    0   63G  0 part /
├─vda2 254:2    0    1K  0 part
└─vda5 254:5    0  975M  0 part [SWAP]
vdb    254:16   0   15G  0 disk
vdc    254:32   0   20G  0 disk
vdd    254:48   0   30G  0 disk

Seguidament, instal·larem l'eina de cephadm, que ens permetrà més endavant instal·lar el sistema de Ceph. Si volem veure les versions de Ceph, les podem trobar en aquesta URL.

root@ceph-aio:~# apt update && apt install -y cephadm
root@ceph-aio:~# cephadm add-repo --release squid

root@ceph-aio:~# apt-cache show versions cephadm | grep Version
Version: 19.2.0-1~bpo12+1
Version: 16.2.11+ds-2

Un cop sabem la versió de Ceph que volem instal·lar, que en el nostre cas serà la versió 19 (Squid). Prepararem el sistema, perquè el desplegament surti correcte i l'instal·larem.

root@ceph-aio:~# useradd -m -s /bin/bash cephadm
root@ceph-aio:~# echo "cephadm ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers.d/cephadm
root@ceph-aio:~# chmod 0440 /etc/sudoers.d/cephadm
root@ceph-aio:~# mkdir -p /home/cephadm/.ssh
root@ceph-aio:~# chown cephadm:cephadm -R /home/cephadm/
root@ceph-aio:~# passwd cephadm
root@ceph-aio:~# apt update && apt install -y cephadm=19.2.0-1~bpo12+1

root@ceph-aio:~# su cephadm -
cephadm@ceph-aio:/root$ sudo cephadm bootstrap --mon-ip 172.26.0.239

Com a nota important, cal dir que la ip (172.26.0.239) és la IP de l'equip que hem desplegat.

Un cop instal·lat el sistema de Ceph, li indicarem que volem fer servir tots els discs durs que hem afegit amb anterioritat:

root@ceph-aio:~# cephadm shell
root@ceph-aio:/# ceph orch apply osd --all-available-devices

Per no entrar en temes tècnics, podem dir que Ceph els hi diu als discs durs OSDs.

Un cop afegits tots els discs durs al sistema de Ceph, verificarem que tots estiguin "up".

root@ceph-aio:/# ceph osd status
ID  HOST       USED  AVAIL  WR OPS  WR DATA  RD OPS  RD DATA  STATE
0  ceph-aio  26.4M  14.9G      0        0       0        0   exists,up
1  ceph-aio  26.4M  19.9G      0        0       0        0   exists,up
2  ceph-aio  26.4M  29.9G      0        0       0        0   exists,up

Ara el que farem és posar una contrasenya a l'administració web (GUI), per posteriorment poder accedir-hi i aprofitarem per habilitar el mòdul de telemetria i acceptar la EULA via cli.

root@ceph-aio:/# echo "SuperPassword" > dashboard_password.yml
root@ceph-aio:/# ceph dashboard ac-user-set-password admin -i dashboard_password.yml
root@ceph-aio:/# ceph mgr module enable telemetry
root@ceph-aio:/# ceph telemetry on --license sharing-1-0

Ara ja tindríem el nostre sistema de Ceph, per poder entregar emmagatzemament de tots els tipus. El problema que ens trobem, és que com he dit abans, aquest sistema està pensat en un mínim de tres equips, per si passés cap incidència. Llavors el que farem és permetre que es puguin crear emmagatzemaments amb una sola replica.

root@ceph-aio:/# ceph osd lspools
1 .mgr
root@ceph-aio:/# ceph config set global mon_allow_pool_size_one true
root@ceph-aio:/# ceph osd pool set .mgr size 1 --yes-i-really-mean-it
root@ceph-aio:/# ceph health mute POOL_NO_REDUNDANCY

Un cop fet tot el procediment anterior, ja tindríem preparat un sistema de Ceph, ara només quedaria verificar que tot està bé.

root@ceph-aio:/# ceph -s
  cluster:
    id:     91ac2cd2-a784-11ef-b15c-bc241146a3a9
    health: HEALTH_OK
            (muted: POOL_NO_REDUNDANCY)

  services:
    mon: 1 daemons, quorum ceph-aio (age 11m)
    mgr: ceph-aio.yfbdlq(active, since 6m)
    osd: 3 osds: 3 up (since 3m), 3 in (since 6m)

  data:
    pools:   1 pools, 1 pgs
    objects: 2 objects, 449 KiB
    usage:   80 MiB used, 65 GiB / 65 GiB avail
    pgs:     1 active+clean

I per últim i no menys important, accedir a l'administració web (GUI) del Ceph. Les dades d'accés serien:

  • URL: https://172.26.0.239:8443/
  • Nom d'ususari: admin
  • Contrasenya: SuperPassword

Dashboard de Ceph mostrant l'estat inicial del clúster, la versió 19.2 Squid i les mètriques d'utilització

Per no allargar-nos més, en següents posts, explicarem com accedir-hi a les dades del Ceph que hem desplegat.