0% ont trouvé ce document utile (0 vote)
3 vues136 pages

Introduction à Ceph et son architecture

Ceph est un système de stockage open-source versatile, conçu pour fonctionner sur un cluster de serveurs standards, offrant des interfaces pour les objets, les fichiers et les blocs. Il est essentiel pour la gestion des données, garantissant leur intégrité et leur disponibilité, même en cas de pannes matérielles. L'architecture de Ceph repose sur des composants tels que les Moniteurs, les Serveurs de Métadonnées et les Daemons de Stockage d'Objets, permettant une auto-gestion et une résilience du système.

Transféré par

interventiondivine
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues136 pages

Introduction à Ceph et son architecture

Ceph est un système de stockage open-source versatile, conçu pour fonctionner sur un cluster de serveurs standards, offrant des interfaces pour les objets, les fichiers et les blocs. Il est essentiel pour la gestion des données, garantissant leur intégrité et leur disponibilité, même en cas de pannes matérielles. L'architecture de Ceph repose sur des composants tels que les Moniteurs, les Serveurs de Métadonnées et les Daemons de Stockage d'Objets, permettant une auto-gestion et une résilience du système.

Transféré par

interventiondivine
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Ceph, bases & déploiement

Yann Dupont
CCIPL / DSIN Université de Nantes
[Link] École de stockage IN2P3 – GANIL CAEN- 12-16 juin 2017
Les données sont irremplaçables

Une machine en panne se remplace.


Les données perdues le sont à jamais.
Des années de travail peuvent disparaître.

Il s'agit du patrimoine de votre institution.

2 Ceph école stockage IN2P3 12-16 Juin 2017


Ceph ?

Système de stockage complet et versatile,


utilisable de nombreuses façons.

Architecturé sur un cluster de serveurs standards.


Fournit nativement des interfaces objet, système de fichiers et bloc.

Très utilisé dans le monde open-source : couvre de nombreux cas d’usage.


3 Ceph école stockage IN2P3 12-16 Juin 2017
Ceph ?

Partie serveur
Seulement sous
Linux

(FreeBSD +- OK)

Système de stockage complet et versatile,


utilisable de nombreuses façons.

Architecturé sur un cluster de serveurs standards.


Fournit nativement des interfaces objet, système de fichiers et bloc.

Très utilisé dans le monde open-source : couvre de nombreux cas d’usage.


4 Ceph école stockage IN2P3 12-16 Juin 2017
Opensource
Historique des versions [Link]
47 Préversions (!)
07 / 2012 Argonaut (v 0.48)
01 / 2013 Bobtail (v 0.56)
05 / 2013 Cuttlefish (v 0.61)
08 / 2013 Dumpling (v0.72) LTS
Rachat 11 / 2013 Emperor (v 0.67) Tous les 6 mois
LTS tous les ans
LTS
Majeure 05 / 2014 Firefly (v0.80)
10 / 2014 Giant (v0.87)
04 / 2015 Hammer (v0.94) LTS
renumérotation 11 / 2015 Infernalis (v9.2.z)
04 / 2016 Jewel (v10.2.z) LTS Base de RedHat CEPH storage v2
01 / 2017 Kraken (v11.2.z)
?? / 2017 Luminous (v12.2.z) LTS
5 Ceph école stockage IN2P3 12-16 Juin 2017
Numéros de versions
Versions actuelle :

LTS v10.2.7 (11 avril 2017)


Version X.Y.Z
(Nom de code Jewel)
X pair = version à long support (LTS)
Support : (open source)
Jewel 04/2016 → 11/2017
Y=0 development / preview
Y=1 beta
v11.2.0 (Kraken) : 20/01/2017
Y=2 stable
LTS v12.2.0 : Sans doute juillet
Z = version mineure
(Nom de code Luminous)

6 Ceph école stockage IN2P3 12-16 Juin 2017


Installation de la souche logicielle

## exemple debian : /etc/apt/[Link].d/[Link]

##ceph
deb [Link] jessie main

apt update ; apt install ceph

Il est aussi possible de compiler (préparez le café ...)

7 Ceph école stockage IN2P3 12-16 Juin 2017


Sous le capot .

8 Ceph école stockage IN2P3 12-16 Juin 2017


APPLI APPLI MACHINE CLIENT
Architecture /VM

RADOSGW RBD CEPHFS


Une passerelle Un gestionnaire de Un système de
LIBRADOS d'architecture "REST" périphériques bloc, fichiers distribué,
Une librairie compatible avec S3 fiable et totalement avec un client
permettant aux et SWIFT distribué, disposant incorporé au noyau
applications un d'un client incorporé Linux et un support
accès direct à au noyau Linux et pour FUSE
RADOS, supportant d'un pilote KVM
C,C++, Java, Python,
Ruby et PHP
1

RADOS
Un ensemble d'objets distribués, fiable et autonome, géré par des nœuds de stockage
capables d'auto gestion et auto réparation

9 Ceph école stockage IN2P3 12-16 Juin 2017


APPLI APPLI MACHINE CLIENT
Architecture /VM

2
RADOSGW RBD CEPHFS
Une passerelle Un gestionnaire de Un système de
LIBRADOS d'architecture "REST" périphériques bloc, fichiers distribué,
Une librairie compatible avec S3 fiable et totalement avec un client
permettant aux et SWIFT distribué, disposant incorporé au noyau
applications un d'un client incorporé Linux et un support
accès direct à au noyau Linux et pour FUSE
RADOS, supportant d'un pilote KVM
C,C++, Java, Python,
Ruby et PHP

RADOS
Un ensemble d'objets distribués, fiable et autonome, géré par des nœuds de stockage
capables d'auto gestion et auto réparation

10 Ceph école stockage IN2P3 12-16 Juin 2017


APPLI APPLI MACHINE CLIENT
Architecture /VM

3
RADOSGW RBD CEPHFS
Une passerelle Un gestionnaire de Un système de
LIBRADOS d'architecture "REST" périphériques bloc, fichiers distribué,
Une librairie compatible avec S3 fiable et totalement avec un client
permettant aux et SWIFT distribué, disposant incorporé au noyau
applications un d'un client incorporé Linux et un support
accès direct à au noyau Linux et pour FUSE
RADOS, supportant d'un pilote KVM
C,C++, Java, Python,
Ruby et PHP

RADOS
Un ensemble d'objets distribués, fiable et autonome, géré par des nœuds de stockage
capables d'auto gestion et auto réparation

11 Ceph école stockage IN2P3 12-16 Juin 2017


APPLI APPLI MACHINE CLIENT
Architecture /VM

RADOSGW RBD CEPHFS


Une passerelle Un gestionnaire de Un système de
LIBRADOS d'architecture "REST" périphériques bloc, fichiers distribué,
Une librairie compatible avec S3 fiable et totalement avec un client
permettant aux et SWIFT distribué, disposant incorporé au noyau
applications un d'un client incorporé Linux et un support
accès direct à au noyau Linux et pour FUSE
RADOS, supportant d'un pilote KVM
C,C++, Java, Python,
Ruby et PHP

RADOS
Un ensemble d'objets distribués, fiable et autonome, géré par des nœuds de stockage
capables d'auto gestion et auto réparation

12 Ceph école stockage IN2P3 12-16 Juin 2017


Architecture de Ceph + = mieux

Nombre impair Nombre impair

MON MDS OSD


Monitor Meta Data Server Object Storage Daemon
Vérifie le bon état du cluster
Gère les méta données Stocke les objets
Assure la communication initiale
OPTIONNEL sur filesystem local (XFS)
avec les clients
(uniquement pour CephFS) Communique avec les clients
Vérifie les droits d'accès
Débit disque et réseau
Machine (VM) dédiée conseillée.

13 Ceph école stockage IN2P3 12-16 Juin 2017


Architecture de Ceph + = mieux

Nombre impair Nombre impair


Nombre impair

Pour éviter le
MON MDS OSD
Monitor Meta Data Server Object Storage Daemon
Vérifie le bon état du cluster
Split BRAIN
Gère les méta données Stocke les objets
Assure la communication initiale
OPTIONNEL sur filesystem local (XFS)
avec les clients
(uniquement pour CephFS) Communique avec les clients
Vérifie les droits d'accès
Débit disque et réseau
Machine (VM) dédiée conseillée.

14 Ceph école stockage IN2P3 12-16 Juin 2017


Split brain (site [Link])

15 Ceph école stockage IN2P3 12-16 Juin 2017


Les machines A et B se contrôlent
Split brain Cluster (1) régulièrement et se
synchronisent.

Dans Ceph,
Les mon se surveillent entre eux
B OK Cluster OK Les osd se surveillent entre eux
(et previennent les mons)
Machine A
Client
Ping B C1
Dans Ceph,
Lien PAXOS est utilisé pour gérer la
Cohérence du cluster.
Ping A Client
C2
Machine B
A OK Cluster OK

16 Ceph école stockage IN2P3 12-16 Juin 2017


Lorsque un client modifie une
Split brain Cluster (2) valeur, les machines se
synchronisent

B OK Cluster OK
Machine A
Put A=10 Client
A=10 Put A=10 C1

Lien
A=10
Client
C2
Machine B
A OK Cluster OK

17 Ceph école stockage IN2P3 12-16 Juin 2017


Un autre client obtiendra une
Split brain Cluster (3) valeur cohérente

B OK Cluster OK
Machine A
Client
C1

Lien
Get A Get A
Client
A=10 C2
Machine B A=10
A OK Cluster OK

18 Ceph école stockage IN2P3 12-16 Juin 2017


Ce système fonctionne bien en
Split brain Cluster (4) cas de panne matérielle.

Cluster dégradé
Je suis le seul
B OK
HS survivant

Machine A
Put A=10 Client
Put A=10 Lorsque B est réparée,
A=10 C1
elle se resynchronisera.
Lien

Client
C2

19 Ceph école stockage IN2P3 12-16 Juin 2017


Split brain Cluster (5)
Les deux parties ne se voient plus
Chacune croit que l’autre est HS
Cluster dégradé Les machines ne sont plus synchronisées
Je suis le seul
B HS survivant Fonctionnement incohérent
Machine A SPLIT BRAIN
Put A=15 Client
Put A=15 C1

Get A
Client
A=10 C2
Machine B A=10
Cluster dégradé
A HS Je suis le seul
survivant
20 Ceph école stockage IN2P3 12-16 Juin 2017
Split brain Cluster (6)
A,B OK Cluster OK
Machine C

B,C OK Cluster OK

Lien
Machine A Utiliser un système de Quorum :
Basé sur des votes ;
Quorum = majorité absolue des votes.
Lien
Seuls les systèmes satisfaisant ce quorum
sont valides.

Machine B (D’où nombre impair de machines : imblocable)


A,C OK Cluster OK

21 Ceph école stockage IN2P3 12-16 Juin 2017


2 votes (A,C)
Split brain Cluster (7) Quorum=2
Je peux continuer
B HS B est isolé
2 votes (A,C) Machine C
Quorum=2
B HS Je peux continuer
B est isolé

Lien
Machine A
ICI 3 machines, donc quorum=2

B est isolé et va se bloquer pour ne pas


Lien diverger et être incohérente.

Au retour du réseau, la machine B va se


Machine B resynchroniser.
1 vote (B)
A,C HS quorum=2
Je me bloque
Je suis isolé
22 Ceph école stockage IN2P3 12-16 Juin 2017
Resynchronisation
Une machine qui a été isolée ou en panne
Chaque opération est versionnée
va pouvoir utiliser ces transactions pour se
Les machines doivent être synchronisées ( NTP )
resynchroniser.
ceph-mon-lmb-C-1:~# ceph -s
cluster 046b934b-f8c9-42b3-8e16-22e05c7379bf
health HEALTH_OK
monmap e9: 3 mons at
{a=[Link]:6789/0,b=[Link]:6789/0,d=[Link]:6789/0}, election
epoch 2044, quorum 0,1,2 b,a,d
mdsmap e238: 1/1/1 up {0=0=up:active}
osdmap e47004: 12 osds: 12 up, 12 in
pgmap v70989076: 6600 pgs, 17 pools, 10230 GB data, 2853 kobjects

23 Ceph école stockage IN2P3 12-16 Juin 2017


Architecture de Ceph

Pas de SPOF
pas de SPOF Passif/Actif :
scalable Pas de SPOF
pas (encore) scalable scalable
(change en Luminous)

MON MDS OSD

Démons en espace utilisateur Linux : de simples programmes

24 Ceph école stockage IN2P3 12-16 Juin 2017


En vrai,
Création d’un cluster CEPH pour cette semaine

Bonnes pratiques
On utilisera des VM
Désirable Peut être plusieurs démons/VM
MON, MDS, OSD : (MAUVAISE PRATIQUE)
machines séparées (Sync global régulier)

Au moins 3 MON MON avec


Au moins 3 MDS disque rapide.
Maximum d’OSD

MDS avec
disque rapide. Pratique pour manipuler
Pas représentatif des performances
OSD nécessite de la volumétrie
Va changer avec bluestore disque dédié, formatage en XFS
Journal sur SSD (mutualisé)
25 Ceph école stockage IN2P3 12-16 Juin 2017
Des machines « Pro !»

Performances,
Fiabilité

Assurées !

26 Ceph école stockage IN2P3 12-16 Juin 2017


Dimensionner son architecture
Réplication synchrone Beaucoup d’OSD
(la partie la plus lente ralentit le reste) Être vigilant sur la configuration
Débit != Latence
Performance : tous les éléments comptent

Réseau :
Bonne carte et bon driver (éviter bnx2x !) >=1 cœur / OSD
Iperf3 entre les nœuds pour vérifier le débit cœurs rapides : utiles pour Erasure coding
Bon switch pour baisser les latences Utiles pour OSD sur SSD, (cpu facteur limitant)
Rdma supporté – Infiniband, omnipath ?

Utiliser des contrôleurs non bloquants


1 SSD sur 4 pour les OSD (journaux) Utilisé pour les processus OSD ( 512 Mo → 4 Go )
OSD sur 7,2k, 15k ou SSD : dépend du profil Et cache I/O par les kernel Linux
PAS DE RAID

27 Ceph école stockage IN2P3 12-16 Juin 2017


Machine typique OSD volumétrique
R720/R730/R740xd (marché matinfo)

OSD.1 OSD.2 OSD.3 OSD.4

Libre Libre Libre Libre


Libre Libre Libre Libre
plus de RAID Hardware, Mode Jbod 2 interfaces réseau (10 Gbit/s)
Des SSD SLC partagés (Journaux) ? 2 CPU avec cœurs, au moins 1/OSD...)
Disques 8, 10 To 7200 Rpm SAS NL De la mémoire
12 OSD ou 16 OSD / machines Des canaux disques non bloquants
Capacité Brute : > 100 To
28 Ceph école stockage IN2P3 12-16 Juin 2017
Machine typique OSD rapide
R630/R640 (marché matinfo)

Libre Libre Libre


OSD.1 OSD.2 OSD.3 Libre Libre

Mode Jbod 2/4 interfaces 10 ou 40 Gbit/s ou..


Des SSD SLC SAS 12G ou Nvme CPU rapide (privilégier le Mhz)
Ou des sas 2,5’’ 1 To 15k RPM De la mémoire
Capacité Brute : ~ < 10 To Des canaux disques non bloquants

29 Ceph école stockage IN2P3 12-16 Juin 2017


Mixer OSD capacitifs et rapides ?

Faisable
Et
Intéressant.

Cf Crush.

30 Ceph école stockage IN2P3 12-16 Juin 2017


Machines typiques MON/MDS

Machines virtuelles suffisantes ? ...


Pas nécessité de disques rapides ? ...

Attention en cas de cluster non nominal !


(quand le cluster n’est pas en bon état, le mon stocke de nombreuses informations)

Attention à la reconstruction ! Le mon est très sollicité.

31 Ceph école stockage IN2P3 12-16 Juin 2017


Installation de ceph
Choix 1 : ceph-deploy, simple et rapide, mais choix par défaut
Ce qu’on va faire !
Choix 2 : manuellement : meilleur contrôle, mais plus compliqué
Installer les sources de ceph Créer le [Link] Créer les mons
Installer les paquets Créer les clés de sécurité ceph Ajouter les OSD
Formatter les volumes en XFS, les monter Créér l’id du cluster Ajouter les MDS
Ajouter les journaux, les métas données

Choix 3 : docker : rapide à démarrer, mais complexe pour aller en production...


docker run -d --net=host -v /etc/ceph:/etc/ceph -e MON_IP=[Link] -e CEPH_PUBLIC_NETWORK=[Link]/24 ceph/demo

Ou faire son Dockerfile


Choix 4 : via un outil d’automatisation (puppet, juju, chef,ansible,salt ...)
Automatisation du choix 2

Choix 5 : On peut aussi compiler ...(2H!!), puis passer au choix 2 : Installer à la main.

32 Ceph école stockage IN2P3 12-16 Juin 2017


Tuner ses machines (côté serveur)
sollicite beaucoup tous les compartiments du système.

Kernel : Faire le bon choix entre kernel récent et stable : 4.4 est notre choix (en deadline, plus en CFQ)
(4.9 est à qualifier) – CFQ servait à descendre la priorité des scrubs (Pre-Jewel)

4.12 : multiqueue + I/O scheduler : à évoluer pour prochain kernel LTS dans le cas des SSD : Kyber

Un bug du kernel peut avoir des résultats désastreux, BIEN les qualifier.
Un kernel trop ancien peut sévèrement pénaliser les performances, la gestion des disques (XFS)

XFS : formater avec les derniers utilitaires (format V5, qui implique crc=1, finobt=1)
Tuner la mémoire (favoriser inodes/dentries dans [Link]): vm.vfs_cache_pressure = 10

Utilisation de rbd et cephfs implique des objets de 4 Mo ,


pour éviter la fragmentation, monter xfs avec allocsize=4M

Bonnes cartes réseau ( *du moins, bon pilotes* ) ...


33 Ceph école stockage IN2P3 12-16 Juin 2017
Topologie Réseau
Objectifs : Avoir le meilleur débit
Mais aussi baisser la latence au maximum entre les clients et les OSD (entre eux)

3 réseaux séparés

1 pour l’administration (Gbit/s suffisant)


1 pour le réseau public (entre clients et OSD) (10 Gbit/s ou + conseillés)
1 privé (pour les communications inter OSD) (10 Gbit/s ou + conseillés)

MTU 9000 sur le privé. Également sur le public si possible.


Si Bonding : utiliser un mode actif/actif ( lacp, xmit_hash_policy=layer3+4)

Un routage est possible pour les réseau publics et privés


MAIS nécessite un bon commutateur/routeur (pour ne pas pénaliser la latence)

34 Ceph école stockage IN2P3 12-16 Juin 2017


Clients
Mode Objet Bloc FS

Kernel Linux X Oui : krbd Oui : cephfs

User (FUSE) X OUI OUI

User X Oui, via librbd X


(KVM/Qemu)

Via Applicatif Oui : via R. GW Oui : Nfs ganesha ?


(Mode S3/swift) Oui : Iscsi
Exemple :
Nextcloud

35 Ceph école stockage IN2P3 12-16 Juin 2017


Faire évoluer son cluster

En taille : simplement ajouter des OSD au cluster : Les triplets des PG sont redistribués
→ Ce qui entraîne un mouvement important des données.

Le faire de façon symétrique (par exemple, si 3 DC → 3 OSD )

En performance : Ajouter des machines plus spécialisées (SSD , disques différents, CPU...)
(et utiliser des racines différentes).

Luminous devrait permettre une typologie des OSD et (à priori?) permettrait de ne plus avoir à
spécifier des racines différentes.

36 Ceph école stockage IN2P3 12-16 Juin 2017


Faire évoluer son cluster
D’une version LTS vers LTS+1 (Hammer->Jewel → Luminous)
D’une version stable (LTS ou non) vers +1 (Infernalis → Jewel → Kraken → Luminous)

Avoir tous les éléments en phase extrêmement conseillé !


ceph-mon-lmb-A-1:~# ceph tell mon.* version
mon.b: ceph version 10.2.5 (c461ee19ecbc0c5c330aca20f7392c9a00730367)
mon.a: ceph version 10.2.5 (c461ee19ecbc0c5c330aca20f7392c9a00730367)

ceph tell osd.* version


osd.0: "version": "ceph version 10.2.5 (c461ee19ecbc0c5c330aca20f7392c9a00730367)"
osd.1: "version": "ceph version 10.2.5 (c461ee19ecbc0c5c330aca20f7392c9a00730367)"

Toujours tenir compte de sa topologie et son domaine de panne (par ex : DC par DC)

Upgrader les paquetages


Upgrade les MON. Attendre stabilisation. Lire les releases notes !
Upgrader les OSD. Attendre stabilisation.
Upgrader les MDS. Attendre stabilisation.

37 Ceph école stockage IN2P3 12-16 Juin 2017


[Link]
Une partie globale
Une partie spécifique pour les mon, mds, osd... (serveurs)
Une partie spécifique pour les clients
[global]
fsid = 18857a8a-f828-462a-9214-5db66def3806
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

public network = [Link]/24,[Link]/24, [Link]/24


cluster network = [Link]/24, [Link]/24, [Link]/24

[mon]
mon debug dump transactions = false
mon compact on start = true
mon initial members = a,b,c

[mon.a]
host = ceph-mon-lmb-D3-1
mon_addr = [Link]:6789

[mon.b]

38 Ceph école stockage IN2P3 12-16 Juin 2017


[Link]
[osd]
osd data = /CEPH/D3.$id
osd_journal = /var/lib/ceph/osd/ceph-$id/journal-$id
osd journal size = 5000
journal aio = true
;; Un peu d'optimisation d'I/O
osd op threads = 8
osd disk threads = 2
filestore op threads = 4

filestore journal writeahead = true ; defaut pour XFS, mais pour LXC
filestore flusher = false ;
filestore max sync interval = 15;

osd mkfs type = xfs

[osd.0]
host = ceph-osd-lmb-D3-1

[osd.1]
host = ceph-osd-cha-D3-1

[osd.2]

39 Ceph école stockage IN2P3 12-16 Juin 2017


[Link]
[client]
rbd cache = true
rbd cache size = 1024 Mib

admin socket = /var/run/ceph/$cluster-$type.$id.$pid.$[Link]

debug_auth = 0/0
debug_buffer = 0/0
debug_context = 0/0
debug_crypto = 0/0
debug_finisher = 0/0
debug_ms = 0/0
debug_objectcacher = 0/0
debug_objecter = 0/0
debug_rados = 0/0
debug_rbd = 0/0
debug_striper = 0/0
debug_tp = 0/0

40 Ceph école stockage IN2P3 12-16 Juin 2017


Créer un nouveau pool
root@debian:~# ceph osd pool create objets_utiles 64 replicated
pool 'objets_utiles' created
root@debian:~# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
3055G 3050G 5311M 0.17
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
rbd 0 1742M 0.17 1016G 501
objets_utiles 2 0 0 1016G 0

64 = nombre de PG du pool Beaucoup de paramètres par défaut


Replicated = façon dont les données sont stockées
Mode repliqué : chaque OSD (3 par défaut) ont une copie complète de la donnée
Mode Erasure : comme Raid 5 (en simplifiant)

41 Ceph école stockage IN2P3 12-16 Juin 2017


Repliqué vs Erasure

Codage différent de l’information.

Repliqué X 3 = 3 OSD détiennent une copie intégrale du fichier


Erasure 2+1 = 2 OSD détiennent 50 % du fichier , 1 OSD détient une transformée mathématique
qui peut reconstruire une partie manquante.

Exemple : Parité en Raid5 (Fonction XOR sur code binaire)

Repliqué X 3 = Très Sûr Erasure Coding 2+1 moins sûr


Très rapide Plus lent en écriture
Très consommateur d’espace Moins consommateur d’espace

42 Ceph école stockage IN2P3 12-16 Juin 2017


Stocker un objet

Ceci est un objet


(utile)

43 Ceph école stockage IN2P3 12-16 Juin 2017


Stocker un objet dans RADOS

Où ?
Comment ?

Un cluster CEPH présente des pools de stockage.


Ils sont créés au besoin. (1 de base).

Chaque pool dispose de ses caractéristiques,


ses droits d’accès, Stockage dans
sa règle de placement d’objets (CRUSH). pool objets_utiles

44 Ceph école stockage IN2P3 12-16 Juin 2017


Pools

GLOBAL:
SIZE AVAIL RAW USED %RAW USED
43483G 16986G 26496G 60.94
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
mirrors 3 3341G 7.68 7646G 863776
cloud-perso 4 1296G 2.98 5097G 465044
os-patrons 6 209G 0.48 5097G 67193
os-dsin-prv 7 907G 2.09 5097G 262322
logs 9 2583G 5.94 5097G 666408
data-dsin 11 432G 1.00 5097G 111371
data-tiers 12 180G 0.41 5097G 46168
objets-utiles 13 21234M 0.05 5097G 5379
esxi-backup 14 8973M 0.02 5097G 2916

45 Ceph école stockage IN2P3 12-16 Juin 2017


Stocker & Récupérer un objet
root@debian:~#dd if=/dev/urandom of=FichierTireBouchon bs=1M count=16
root@debian:~# md5sum FichierTireBouchon
eb05fa217d1b9569c426b07e92a84854 FichierTireBouchon

root@debian:~#rados put -p objets_utiles ObjetTireBouchon FichierTireBouchon

root@debian:~# rados ls -p objets_utiles


ObjetTireBouchon

root@debian:~# rados -p objets_utiles stat ObjetTireBouchon


objets_utiles/ObjetTireBouchon mtime 2016-12-10 19:14:45.000000, size
16777216

root@debian:~# rados get -p objets_utiles ObjetTireBouchon


FichierTireBouchon2
root@debian:~# md5sum FichierTireBouchon2
eb05fa217d1b9569c426b07e92a84854 FichierTireBouchon2
46 Ceph école stockage IN2P3 12-16 Juin 2017
CRUSH

Où et comment placer les objets


dans le pool ?

Le faire simplement et rapidement ?

Qui fait le choix ?

47 Ceph école stockage IN2P3 12-16 Juin 2017


Règles CRUSH
Description de la Règles de placement
hiérarchie du matériel des objets
root default rule rbd {
datacenter lmb ruleset 2
room lombarderie-ltp type replicated
host abouriou min_size 1
vm ceph-osd-lmb-C-1-1 max_size 10
osd.0 up 1 step take default
vm ceph-osd-lmb-C-1-2 step chooseleaf firstn 0 type datacenter
osd.1 up 1 step emit
host magon }
vm ceph-osd-lmb-C-3-1
osd.8 up 1
vm ceph-osd-lmb-C-3-2
osd.9 up 1 Tout est stocké globalement dans le cluster
datacenter loi
[...] Tout le monde (y compris le client) dispose de la
dernière version.

48 Ceph école stockage IN2P3 12-16 Juin 2017


Groupes de placement
ceph osd pool get objets-utiles pg_num
pg_num: 1024

Un pool est découpé Le pool objets-utiles dispose de 1024 PG


en groupes de placement (PG).
ceph osd pool get objets-utiles size
1 PG contient la liste des Size: 3
OSD contenant les copies Le pool os-patrons est configuré
de l’objet. pour dupliquer 3 fois l’objet

Carte des PG change lors de la ceph pg dump ( 13.3fb → [3,4,8] )


modification de la topologie
(algorithme). Le PG 3fb du pool 13 (objets-utiles)
utilisera les serveurs de stockage (OSD)
Le client PLACE ses objets. 3, 4 et 8

49 Ceph école stockage IN2P3 12-16 Juin 2017


Chaque pool dispose de
caractéristiques différentes :
Pools & PG
Nombre de PG (32,28,24)
Taille
1 Placement des données...
2
1.32 Un objet est placé dans
2.28 3 Le PG d’un pool

Chaque PG va contenir de
3.24 nombreux objets

Si beaucoup d’objets à stocker :


avoir plus de PG dans un pool

1.12 3.5 permet d’avoir moins d’objets par


1.1 1.2 2.1 2.2 2.3 3.1 3.2 PG
3.3 3.4

50 Ceph école stockage IN2P3 12-16 Juin 2017


Pool 13 : objets_utiles (3 copies)
Règles CRUSH PG dump 13.3fb
[3,4,8]
Root
Default
1 3 2
Datacenter Datacenter Datacenter
CHA LMB LOI

Host Host Host Host Host Host


Yquem Mornag Abouriou Magon Zantho Koudia

vm vm vm vm vm vm vm vm vm vm vm vm
cha-c-1-1 cha-c-1-2 cha-c-3-1 cha-c-3-2 lmb-c-1-1lmb-c-1-2 lmb-c-3-1lmb-c-3-2 loi-c-1-1 loi-c-1-2 loi-c-3-1 loi-c-3-2

OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD
2 3 6 10 0 1 8 9 4 5 11 7

51 Ceph école stockage IN2P3 12-16 Juin 2017


Si le choix se fait sur host
Règles CRUSH PG dump 13.3fb
[3,6,4]
Root
Default

Datacenter Datacenter Datacenter


CHA LMB LOI
1 2 3
Host Host Host Host Host Host
Yquem Mornag Abouriou Magon Zantho Koudia

vm vm vm vm vm vm vm vm vm vm vm vm
cha-c-1-1 cha-c-1-2 cha-c-3-1 cha-c-3-2 lmb-c-1-1lmb-c-1-2 lmb-c-3-1lmb-c-3-2 loi-c-1-1 loi-c-1-2 loi-c-3-1 loi-c-3-2

OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD
2 3 6 10 0 1 8 9 4 5 11 7

52 Ceph école stockage IN2P3 12-16 Juin 2017


Si le choix se fait sur vm
Règles CRUSH PG dump 13.3fb
[4,7,5]
Root
Default

Datacenter Datacenter Datacenter


CHA LMB LOI

Host Host Host Host Host Host


Yquem Mornag Abouriou Magon Zantho Koudia

1 3 2
vm vm vm vm vm vm vm vm vm vm vm vm
cha-c-1-1 cha-c-1-2 cha-c-3-1 cha-c-3-2 lmb-c-1-1lmb-c-1-2 lmb-c-3-1lmb-c-3-2 loi-c-1-1 loi-c-1-2 loi-c-3-1 loi-c-3-2

OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD
2 3 6 10 0 1 8 9 4 5 11 7

53 Ceph école stockage IN2P3 12-16 Juin 2017


Ici, 4+1 (objet découpé en 4)
Erasure coding + d’axes, moins de place occupé
Placement au niveau des hosts
Root
Default

Datacenter Datacenter Datacenter


CHA LMB LOI

2
1 Host Host 3 Host Host 4 Host Host P
Yquem Mornag Abouriou Magon Zantho Koudia

vm vm vm vm vm vm vm vm vm vm vm vm
cha-c-1-1 cha-c-1-2 cha-c-3-1 cha-c-3-2 lmb-c-1-1lmb-c-1-2 lmb-c-3-1lmb-c-3-2 loi-c-1-1 loi-c-1-2 loi-c-3-1 loi-c-3-2

OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD
2 3 6 10 0 1 8 9 4 5 11 7

54 Ceph école stockage IN2P3 12-16 Juin 2017


Sur les OSD
ceph osd map test-ANF ObjetTireBouchon
osdmap e15976 pool 'test-ANF' (18) object 'ObjetTireBouchon'
-> pg 18.4384205 (18.5) -> up ([2,3,4], p2) acting ([2,3,4], p2)

ceph osd tree

-1 31.85030 root default


-5 10.61696 datacenter lmb

-13 10.61667 datacenter loi


-12 10.61667 room loire-presidence
-11 10.61667 host koudia
-10 10.61667 vm ceph-osd-loi-B-1
2 3.53899 osd.2 up 1.00000 1.00000
5 3.53899 osd.5 up 1.00000 1.00000

55 Ceph école stockage IN2P3 12-16 Juin 2017


Sur les OSD
root@koudia:/var/lib/lxc/10-ceph-osd-loi-B-1/rootfs/CEPH/B.2/current/18.5_head# ls -al
total 16444
drwxr-xr-x 2 64045 64045 86 juin 12 11:16 .
drwxr-xr-x 554 64045 64045 32768 juin 12 11:15 ..
-rw-r--r-- 1 64045 64045 0 juin 12 11:15 __head_00000005__12
-rw-r--r-- 1 64045 64045 16777216 juin 12 11:16 ObjetTireBouchon__head_04384205__12

root@koudia:/var/lib/lxc/10-ceph-osd-loi-B-1/rootfs/CEPH/B.2/current/18.5_head# ls -al
total 16444
drwxr-xr-x 2 64045 64045 86 juin 12 11:16 .
drwxr-xr-x 554 64045 64045 32768 juin 12 11:15 ..
-rw-r--r-- 1 64045 64045 0 juin 12 11:15 __head_00000005__12
-rw-r--r-- 1 64045 64045 16777216 juin 12 11:16 ObjetTireBouchon__head_04384205__12

56 Ceph école stockage IN2P3 12-16 Juin 2017


Sur les OSD
xattr -l ObjetTireBouchon__head_04384205__12
[Link].spill_out:
0000 30 00 0.

[Link]._:
0000 0F 08 F5 00 00 00 04 03 31 00 00 00 00 00 00 00 ........1.......
0010 10 00 00 00 4F 62 6A 65 74 54 69 72 65 42 6F 75 ....ObjetTireBou

[Link]:
0000 02 02 19 00 00 00 00 00 00 00 00 00 00 00 01 00 ................
0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............

[Link]._@1:
0000 FF .
root@koudia:/var/lib/lxc/10-ceph-osd-loi-B-1/rootfs/CEPH/B.2/current/18.5_head# ls -al
total 16444
drwxr-xr-x 2 64045 64045 86 juin 12 11:16 .
drwxr-xr-x 554 64045 64045 32768 juin 12 11:15 ..
-rw-r--r-- 1 64045 64045 0 juin 12 11:15 __head_00000005__12
-rw-r--r-- 1 64045 64045 16777216 juin 12 11:16 ObjetTireBouchon__head_04384205__12

57 Ceph école stockage IN2P3 12-16 Juin 2017


Crush (l’outil)

Placement des données non uniformes

Straw2
Tunables

Nouveautés de Luminous

58 Ceph école stockage IN2P3 12-16 Juin 2017


Distribution des données non uniforme

ceph-mon-lmb-A-1:~# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
66469G 24553G 41915G 63.06
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
data 0 0 0 6360G 0
metadata 1 0 0 6360G 0
rbd 2 0 0 6360G 1
data-kvm-tiers 33 2107G 24.89 6360G 540584
ECisa2p1 50 22024G 63.39 12721G 5648511
HOTECisa2p1 51 818G 11.41 6360G 209939

ceph report > ceph_report.json

59 Ceph école stockage IN2P3 12-16 Juin 2017


Distribution des données non uniforme
crush analyze --crushmap ceph_report.json --pool 3

~id~ ~weight~ ~PGs~ ~over/under filled %~


~name~
cloud3-1363 -6 419424 1084 7.90
cloud3-1364 -7 427290 1103 7.77
cloud3-1361 -4 424668 1061 4.31
cloud3-1362 -5 419424 1042 3.72
cloud3-1359 -2 419424 1031 2.62
cloud3-1360 -3 419424 993 -1.16
cloud3-1396 -8 644866 1520 -1.59
cloud3-1456 -11 665842 1532 -3.94
cloud3-1397 -9 644866 1469 -4.90
cloud3-1398 -10 644866 1453 -5.93

Worst case scenario if a host fails:

~over filled %~
~type~
device 30.15
host 10.53
root 0.00

60 Ceph école stockage IN2P3 12-16 Juin 2017


Sécurité des données.
Chantrerie 3 salles machines
(CHA)
Notion de
10.5 Km
RTT = 0.335 ms
domaine de
panne
Lombarderie 13 Km
(LMB) RTT = 0.440 ms Données stockées
sur 3 points
géographiques
4 Km
RTT = 0.275 ms Latence vs Performance
Loire
(LOI)

61 Ceph école stockage IN2P3 12-16 Juin 2017


Latence
OSD.3 >1,5 ms par transaction
(CHA)

ms
1.1 ~ 600 iops
0.7
ms

Mais par thread.


OSD.8
(LMB)
Plus de threads = plus
0.6 m
s d’I/O mécaniquement
1.

s
ms
5

0 .9 m
m
0.3
s

OSD.4
(LOI)

62 Ceph école stockage IN2P3 12-16 Juin 2017


Récapitulatif
Authentif.
OSD

Contrôle Liste
Cluster
Des
Contient Stockent
Des Composé PG
de Sur

Pool Assignés à
Applique Disque et
contient des FS local
Règles de Objets
Placement
(CRUSH) Conditionne le placement

63 Ceph école stockage IN2P3 12-16 Juin 2017


Interface Objet (LibRados, RadosGW)
Nécessite Mon, OSD

Rados, librados = mode natif.

Objet stocké de façon monolithique ou découpé en blocs d’une certaine taille.

Utilitaire rados pour intéragir directement (cf TP)


Clients : outils cloud, applications WWW

RESTful (web) service: Swift, S3


implémenté via l’outil RadosGW (couche de translation utilisant un serveur WWW embarqué)
Une grande partie de S3 est implanté.

64 Ceph école stockage IN2P3 12-16 Juin 2017


Interface bloc RBD (Rados Block Device)
Nécessite Mon, OSD
Émule des périphériques de type bloc. San Virtuel.
Gère les snapshots, copy on write, import, export, miroir asynchrone, thin provisionning

Performant, peut remplacer des baies SAN.

Clients :

Krbd,Fuse,Librbd.
Pas de client Windows ou Vmware.

Support librbd pour KVM → Windows peut quand même en bénéficier.


Support iSCSI via un gateway (ne faisant pas partie de CEPH) : il existe plusieurs solutions.

Comme n’importe quel périphérique bloc, peut aussi être réexporté par samba ou NFS.

65 Ceph école stockage IN2P3 12-16 Juin 2017


Volume segmenté en blocs de 4 Mo,
alloués à la demande
Volumes RBD ? assignés à un PG (Placement Group)

PG distribués selon règles (CRUSH)


PG
6.1 de placement du pool
PG
6.9

ICI: règles de placement simples


PG 6 6.74

6.3e
PG
PG

Root =datacenter
6.6

6.3f b
PG Size = 3

Pool 6, volume RBD


Os-templates/debian8
“map” pré-calculée,
Distribuée aux clients
Pas de serveur de metadonnées
Accès simple & direct

66 Ceph école stockage IN2P3 12-16 Juin 2017


On continue à stocker des
Volumes RBD ? objets dans un pool.

PG
Les objets = blocs de 4 Mo
6.1 de données.

( 1000 secteurs de type AF,


8000 de type standard)

Allocation de l’objet
lors de sa 1ere écriture

Possible de créer autant de


volumes que nécessaire

Attention à la sur-réservation !

67 Ceph école stockage IN2P3 12-16 Juin 2017


Migration à chaud
Migration à chaud d'une VM:
CHA
Routage local Migration des seuls processus
Vlan accès Ceph
n
it o Données immobiles,
g ra accessibles
i
M avec la même performance

Le vlan d'accès aux clusters Ceph


doit être disponible sur les
LMB serveurs hôtes
Routage local
Vlan accès Ceph
LOI
Routage local
Vlan accès Ceph

68 Ceph école stockage IN2P3 12-16 Juin 2017


Nécessite Mon, OSD
RBD : aspect stockage
root@koudia:/var/lib/lxc/10-osd-loi-B-1/rootfs/CEPH/B.5/current/13.20_head/DIR_0# ls -al

-rw-r--r-- 1 64045 64045 4194304 nov. 15 2016


rbd\udata.13b065238e1f29.0000000000011d37__head_91FFB7A0__d
-rw-r--r-- 1 64045 64045 4194304 déc. 4 2016
rbd\udata.13b065238e1f29.0000000000011ecc__head_AB3C29A0__d
-rw-r--r-- 1 64045 64045 4194304 nov. 15 2016
rbd\udata.13b065238e1f29.0000000000011fed__head_64F906A0__d Tous les objets font
-rw-r--r-- 1 64045 64045 4194304 avril 19 10:07 Exactement 4 Mo
rbd\udata.13b065238e1f29.00000000000121f3__head_3AC539A0__d
-rw-r--r-- 1 64045 64045 4194304 avril 19 10:07
rbd\udata.13b065238e1f29.00000000000121f9__head_E554E6A0__d
-rw-r--r-- 1 64045 64045 4194304 avril 19 10:07
rbd\udata.13b065238e1f29.00000000000121fe__head_D86EFAA0__d
-rw-r--r-- 1 64045 64045 4194304 avril 19 10:07
rbd\udata.13b065238e1f29.000000000001222a__head_0843B0A0__d

69 Ceph école stockage IN2P3 12-16 Juin 2017


Snapshots

Il est possible de faire des snapshots globaux


(au niveau RADOS / pool )
Où au niveau de l’Image RBD (attention, l’un ou l’autre)

Dans RBD les snapshots peuvent être clonés (y compris dans un autre pool)
Et deviennent des nouvelles images à part entière, comme un calque
Docker procède aussi ainsi (overlayFS)

70 Ceph école stockage IN2P3 12-16 Juin 2017


Layering
Kvm
Kvm Snap Jessie V2 Clone
Kvm Jessie V2 PATRON
Kvm Clone (wheezie)
Clone
(wheezie)
PATRON +50Mo 0 Mo
Kvm
Cl 0+évo Clone
Mo one
(wheezie)
Snap 0
Kvm Clone
600 Mo (wheezie)

e
on
Clone

Kvm
0+évo

Cl
(Jessie)

0+évo
ne
o
Kvm
Cl
Kvm (Jessie)
(Jessie) Snap PATRON Kvm
(Jessie)

+500 Mo Màj 0 Mo Clone


0+évo
71 Ceph école stockage IN2P3 12-16 Juin 2017
Features

Par défaut Jewel active certaines features pour les volumes RBD :
deep-flatten,fast-diff,object-map,exclusive-lock

Cela les rend incompatibles avec krbd (sauf noyau très récent)
Mais ne pas les désactiver aveuglément, car compatibles libRBD

Il est possible de mettre à jour librbd sans mettre à jour KVM.

Gains en fonctionnalité ET performances (on doit redémarrer ou migrer la VM).


Exclusive-lock : Empêche une image d’être montée en simultané sur 2 VM
Object-map : Optimise la recherche des objets entre « Layers » (et suppression volumes)
Fast-diff & Deep Flatten permettent d’être plus efficace dans les exports Rados.

72 Ceph école stockage IN2P3 12-16 Juin 2017


Accès simultané

Client Client
1 Accès R/W Accès R/W 2

(BOUM ! )

Activer Exclusive-lock : Empêche une image d’être montée en simultané sur 2 VM


Ou utiliser un FS cluster sur l’image : Ocfs2, Gfs2...

Ou utiliser Cephfs (ou un appli utilisant le mode objet)

73 Ceph école stockage IN2P3 12-16 Juin 2017


Interface file system distribué: CephFS
Nécessite Mon, OSD, MDS

Très longtemps considéré comme insuffisant pour la production.


Déclaré stable depuis Jewel.
Outil de check/réparation disponible.

Mais pas forcément scalable : Support multi-mds déconseillé pour Jewel (mode actif passif : cf TP)
Pour Luminous, Actif/Actif stable

Et pas forcément performant : benchmarks ?

Fichiers découpés en blocs de 4 Mo (comme RBD).

Support Linux kernel ou fuse.

74 Ceph école stockage IN2P3 12-16 Juin 2017


Rbd vs Cephfs
Place libre reportée
df -h
[..]
/dev/rbd0 99G 1.2G 93G 2% /mnt/rbd
[Link]:/ 3.0T 9.5G 3.0T 1% /mnt/cephfs

Attention : sur Jewel


Efficience sur petits fichiers (copie de 35k fichiers, 1,2 Go) Luminous devrait être meilleur.
root@debian:/# time cp -ax / /mnt/rbd

real 0m32.595s
user 0m0.216s
sys 0m2.488s

root@debian:/# time cp -ax / /mnt/cephfs/

real 3m30.366s
user 0m0.492s
sys 0m3.908s

75 Ceph école stockage IN2P3 12-16 Juin 2017


Allocations sur un disque

Exemple des allocations d’un


système de fichiers EXT4 au
fil du temps

(Benchmark de 5 minutes).

76 Ceph école stockage IN2P3 12-16 Juin 2017


Communication entre FS et Système bloc sous jacent
Sur la vidéo, les blocs alloués apparaissent en noir.

Ceph répére les nouveaux blocs alloués et crée des objets Le FS peut ainsi être vide, alors que le volume
RBD à chaque nouveau besoin CEPH est alloué à 100 %
(blocs de 4Mo émulant des secteurs disques)
Le problème est le même avec les SSD ou
Allocation à la volée, consommation à l'utilisation. Les baies intelligentes (compellent).

Il est possible de provisionner des volumes de 200 Il faut INFORMER le système bloc sous-jacent
To sans les avoir physiquement. À l’aide d’une commande spéciale : TRIM

→ Quand le système de fichiers efface un fichier, il va → Monter le fs en mode discard (lent)


juste le déréférencer de sa table d’inodes (ou équivalent)
Ou utiliser périodiquement fstrim.
→ Le système bloc sous-jacent n’a aucun moyen
de savoir que les blocs alloués ne sont plus utilisés !
77 Ceph école stockage IN2P3 12-16 Juin 2017
RBD : Usage direct avec KVM
(librbd, virtio-scsi)
<disk type='network' device='disk'>
Support du trim/discard
<driver name='qemu' type='raw' cache='writeback' discard='unmap'/>
Pour l'invité
<auth username='nfsgw'>
<secret type='ceph' uuid='260ee1cc-c10a-44c0-a708-6f466c8adb2b'/>
Possibilité de fstrim
</auth>
ou mount -o discard
<source protocol='rbd' name='NFS/IRTS'>
<host name='[Link]' port='6789'/>
Synchronisation de
<host name='[Link]' port='6789'/>
l'allocation par le FS
<host name='[Link]' port='6789'/>
Et l'allocation par la
</source>
couche bloc.
<target dev='sdb' bus='scsi'/>
<controller type='scsi' index='0' model='virtio-scsi'>
Virtio-scsi + lent que virtio
</controller>
(10% ?)

78 Ceph école stockage IN2P3 12-16 Juin 2017


Tout pool peut être tier d'un autre.
sans nécessité de similarité
Tier, cache (taille ≠, réplicat X2 ≠ EC 4+1, racine ≠)

Vers les Le tier peut cacher (overlay) le pool d'origine


Client Caches (overlays)
Il a des modes (write back, forward, read-only)
Il a des règles (nb max objet, taux remplissage
Fréquence flush...)
Direct
Ssd Ssd WB
Ssd WB Ssd Read only d.1
b.1 b.2 Flush : 2min

Promote
b.3

Promote

Promote
Promote
Flush
Flush

Flush
Pool B.1 Pool B.4
(X2) Pool B.2 Pool B.3 (X3) Pool D.1
(X3) (EC 2+1)
(EC 4+1)

79 Ceph école stockage IN2P3 12-16 Juin 2017


2 machines au sein du datacenter
Setup machines SSD Latence minimale (- de 0,1ms)

r ie
tre
Réplicat x2 (!!)

an
(x3 en Juillet 2017)

ch
rs
ve
b/s
Découpage en clusters/LXC comme

G
R630 S6010 autres machines

40
8x SSD 400 Gb DC-A
40 Gb/s 40 Gb/s Machines orientées performance
Lombarderie (E5 2637 , 3,5 Ghz
40 Gb/s

SSD write intensive)

4 ports 10 Gb/s
40 Gb/s 40 Gb/s
40 2 bondings 2x10 Gb/s mode actif
R630 S6010 Gb Passage en 2x40 Gb/s
/s v
8x SSD 400 Gb DC-B ers
L oir
e
80 Ceph école stockage IN2P3 12-16 Juin 2017
Risques associés

Adhérence des objets au cache : jamais flushé si mauvais réglage des règles.

En cas de crash du cache, peut-on récupérer les pools sous-jacents ?

Erasure Coding : Pas mieux que 2+1 pour garantir une tolérance à la panne.
(sur notre setup)

PAS à mettre sur tous les POOLS.

81 Ceph école stockage IN2P3 12-16 Juin 2017


Cache SSD : valable ou pas ?
« Votre kilométrage peut varier ! »
Le cache n’est pas toujours conseillé dans les docs de ceph.

BUG (#19773) QUI SERA CORRIGÉ EN 10.2.8


-OPTION(osd_tier_promote_max_objects_sec, OPT_U64, 5 * 1024*1024)
-OPTION(osd_tier_promote_max_bytes_sec, OPT_U64, 25)
+OPTION(osd_tier_promote_max_objects_sec, OPT_U64, 25)
+OPTION(osd_tier_promote_max_bytes_sec, OPT_U64, 5 * 1024*1024)

qui inverse 2 paramètres du « throttling » du cache


et qui le rend peu utile sans cette correction.

Exemple d’utilisation sur une plateforme d’IaaS (OpenNebula).

[Video].

82 Ceph école stockage IN2P3 12-16 Juin 2017


OSD Lents et Rapides
-1 173.87997 root default
-5 57.95999 datacenter lmb
-4 57.95999 room lombarderie-ltp
ceph-mon-lmb-I1-1:~# ceph osd tree -3 57.95999 host waimea
ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -2 57.95999 vm ceph-osd-lmb-I1-1
-17 1.08600 root ssd 0 7.24500 osd.0 up 1.00000 1.00000
-20 0.54300 rack DC-1-UNIV-A7 9 7.24500 osd.9 up 1.00000 1.00000
-18 0.54300 host fleurie
-15 0.54300 vm ceph-osd-lmb-I1-ssd1 -9 57.95999 datacenter cha
3 0.18100 osd.3 up 1.00000 1.00000 -8 57.95999 room chantrerie-local-telephonie
4 0.18100 osd.4 up 1.00000 1.00000 -7 57.95999 host akarua
5 0.18100 osd.5 up 1.00000 1.00000 -6 57.95999 vm ceph-osd-cha-I1-1
-19 0.54300 rack DC-1-UNIV-B7 1 7.24500 osd.1 up 1.00000 1.00000
-16 0.54300 host chiroubles 16 7.24500 osd.16 up 1.00000 1.00000
-14 0.54300 vm ceph-osd-lmb-I1-ssd2 1.00000
6 0.18100 osd.6 up 1.00000 1.00000 -13 57.95999 datacenter loi
7 0.18100 osd.7 up 1.00000 1.00000 -12 57.95999 room loire-presidence
8 0.18100 osd.8 up 1.00000 1.00000 -11 57.95999 host mahi
-10 57.95999 vm ceph-osd-loi-I1-1
2 7.24500 osd.2 up 1.00000 1.00000
23 7.24500 osd.23 up 1.00000 1.00000

83 Ceph école stockage IN2P3 12-16 Juin 2017


OSD Lents et Rapides
ceph-mon-lmb-I1-1:~# ceph osd pool get opennebula crush_ruleset
crush_ruleset: 0
ceph-mon-lmb-I1-1:~# ceph osd pool get HOT-opennebula crush_ruleset
crush_ruleset: 1
Le principe est
# rules
rule replicated_ruleset { d’avoir plusieurs
ruleset 0
type replicated
Racines différentes
min_size 1
max_size 10
step take default
D’appliquer des
step chooseleaf firstn 0 type datacenter Règles crush dessus
step emit
}
rule replicated_ssd_ruleset { Et appliquer ces
ruleset 1
type replicated
Règles crush spécifiques
min_size 1 Sur des pools
max_size 10
step take ssd
step chooseleaf firstn 0 type rack
step emit
}

84 Ceph école stockage IN2P3 12-16 Juin 2017


L'ami MURPHY

85 Ceph école stockage IN2P3 12-16 Juin 2017


Quelques mots de sagesse

Une volumétrie importante !

Démarrer plusieurs clusters CEPH


(soit physique, soit virtuels)

Exemple : cluster de sauvegarde

Des besoins différents


Des administrateurs différents
Des versions différentes

86 Ceph école stockage IN2P3 12-16 Juin 2017


Éviter le désastre
SCRUB automatique pour le cluster
(patrouille sur les PG et fait des tests de cohérence)
Ne PAS utiliser size=2

Utiliser les outils sous-jacent du FS des OSD


([Link] -m crc=1,finobt=1)

Utiliser des noyaux éprouvés


Une distribution à jour
Des versions de Ceph à jour (mais pas trop)

Monitoring
Lire les logs
Avoir une bonne connaissance du système sous-jacent
Lire les listes de diffusion

87 Ceph école stockage IN2P3 12-16 Juin 2017


Éviter le désastre

SAUVEGARDER !
Risque n°1 :
Erreur Humaine !

88 Ceph école stockage IN2P3 12-16 Juin 2017


Monitoring
Vue inkscope

Répliqua x3

~75 To
utiles

9 pools

89 Ceph école stockage IN2P3 12-16 Juin 2017


Quelques conseils

S’abonner aux listes de diffusion

Prendre le temps de suivre quelques présentations

Admettre le fait que les versions changent tous les ans.

90 Ceph école stockage IN2P3 12-16 Juin 2017


Kraken

Format disque bluestore stabilisé


Erasure coding sans Tiers pour RBD
Scrub en pause pendant les phases de
reconstruction / rééquilibrage des données
...

V11.2.0 → Stable non LTS


Kraken = support limité

91 Ceph école stockage IN2P3 12-16 Juin 2017


Luminous (12.2.0)
Bluestore stabilisé
(Formatage spécifique du disque, checksums, compression, journaux plus petits)

Plus d’obligation de mettre en place un système de cache/tier pour les pools d’erasure coding

Nouveau protocole réseau ‘AsyncMessenger’ plus efficace par défaut

Meilleur temps de détection des pannes d’OSD (pour éviter les freezes)

En cas de reconstruction, les scrubs sont automatiquement dépriorisés

Rados GW NFSv3

....

92 Ceph école stockage IN2P3 12-16 Juin 2017


Retour d’expérience à Nantes
Production à Nantes depuis début 2013, tests depuis 2011...
Utilisation du mode BLOC, pas CephFS.

Déploiement en clusters de containers.

Pour une présentation plus complète de Ceph, notre infrastructure, son évolution :
cf Jres 2013, Meetup Openstack Paris, Ceph Days Paris 2014, Bio Ouest 2014, Cargo Days 2015...
TutoJres 18, ANF CNRS

Et voir l’évolution de la plateforme (et des transparents !!)

93 Ceph école stockage IN2P3 12-16 Juin 2017


Chantrerie
État début 2012 (CHA)
Des services majoritairement
redondés et distribués

Stockage SAN
trop centralisé
Loire
> 500 To
(LOI)
> 100 Luns

94 Ceph école stockage IN2P3 12-16 Juin 2017


Espace de stockage distribué

Après une longue quête,


validation de CEPH
début 2012

95 Ceph école stockage IN2P3 12-16 Juin 2017


Objectif global
DSIN = PRODUCTION, pour ~ 40.000 personnes
Tout type de données & services hébergés
1) Fiabilité
2) Fiabilité
3) Fiabilité
4) Tolérance à la panne
5) Tolérance à la panne de cerveau
… Solution à un problème posé dès 2004 !
10) Pérennité Pierre angulaire du travail à venir
11) Volumétrie (IaaS, Cloud)
12) Économie
13) Performance (pas de HPC!)

96 Ceph école stockage IN2P3 12-16 Juin 2017


Topologie réseau à Nantes
Chantrerie 3 points de
(CHA) présence
10.5 Km
RTT = 0.335 ms
Fibre noire
(Allumée
Local Lombarderie 13 Km par la DSIN)
RTT = ~ 0.1 ms (LMB) RTT = 0.440 ms
40 Gbit/s
4 Km entre sites
RTT = 0.275 ms
Loire
(LOI) 1 Datacenter

97 Ceph école stockage IN2P3 12-16 Juin 2017


Mise en œuvre optimale
• 2011/2012 : aucun guide de mise
en œuvre...
– Expériences heureuses
puis malheureuses !
– Erreurs de débutant...
– Peinture pas encore sèche !
• Partage d'expérience
– Liste de diffusion
– Canal IRC
– Meetups, Ceph Days, Ceph Breizh
– Jres, OpenStack summit
– Blogs
• 2017 : Plus simple, commun

98 Ceph école stockage IN2P3 12-16 Juin 2017


Bugs & déceptions (2012)
Cluster
Peu d'OSD très volumineux (baies SAN) :
1 unique GROS cluster CEPH
Journaux sur disques : mauvaise idée, Leeeent !
Kernel
Bug mémoire virtuelle, crash fréquent des OSD
Filesystems
BTRFS ( Lent, se fige, plante...)
XFS (1 Bug sévère et dévastateur) (Vite corrigé)

Cluster presque plein + bugs + effet domino à la


reconstruction = « On casse l'incassable »

Un désastre peut arriver


Choix architecturaux pour atténuer celà
99 Ceph école stockage IN2P3 12-16 Juin 2017
Ne pas mettre tous ses œufs dans le même panier

Une volumétrie importante

Des besoins différents


Des administrateurs différents

Démarrer plusieurs clusters CEPH


mais de façon virtuelle

(Utilisation de virtualisation,
conteneurs LXC)

100 Ceph école stockage IN2P3 12-16 Juin 2017


Déploiements (depuis fin 2013)

D OSD.1 D OSD.2 D OSD.3 C OSD.1


C OSD.2 D OSD.4 B OSD.11 E OSD.1
A OSD.15 Libre Libre Libre
1 OSD = 1 Disk = 1 LXC Déploiements symétriques
plus de RAID Hardware par plaque.
2 SSD SLC partagés (Journaux)
12 OSD / machines 3 machines identiques.
Capacité Brute : 48 To
101 Ceph école stockage IN2P3 12-16 Juin 2017
Évolution (Mi 2015)

A OSD.79
A OSD.78
A OSD.77
D OSD.26
D OSD.27
D OSD.25

D OSD.28

Libre

Libre
Libre
Libre
Libre
LXC D LXC A
1 OSD = 1 Disk «Seulement» 5 LXC max/machine.
1 seul LXC par cluster Beaucoup d'axes. Orientation
Pas de SSD. Journal en tête des disques. performances en lecture
24 OSD / machines (Racines IaaS)
Capacité Brute : ~ 24To
102 Ceph école stockage IN2P3 12-16 Juin 2017
Évolution (Début 2016 /2017)

Libre

Libre
Libre
Libre
Libre
Libre OSD.1 Libre
OSD.1 OSD.2 OSD.3 Libre Libre

LXC D LXC A
1 OSD = 1 Disk Mellanox 40 Gb/s.
1 seul LXC par cluster
SSD Write intensive 12G SAS (Sandisk) Sera décliné avec des SSD
8 OSD / machines Read intensive , moins cher pour
Capacité Brute : ~ 3,2To Certains clusters.
103 Ceph école stockage IN2P3 12-16 Juin 2017
Gen 5
Pour fin 2017
Machines déployées, capacité BRUTE globale (Perf lecture)
Gén Destination Nb Taille Version Volume
1 Mixé 3 12 x 3 To R720xd 108
2 SSD MLC Juin 2013

2 Mixé/Perf 6 12 x 4 To R720xd, 288


2 SSD SLC Nov 2013
Juin 2014

2-- Stockage de masse, 3 12x2 (utilisés), 0 SSD R720xd 72


2- BUDGET 3 12x4 (utilisés), 0 SSD Juin 2014 144

3 Perf lecture 3 24x1 (2,5'' sas 10k) R720xd 72


pas de SSD. Nov 2014

4 Stockage de masse 9 16 x 8 To R730xd 1152 (!)


+9 Pas de SSD. Nov 2015 +
Nov 2016 1152 (!)
4c PERF !! Cache, 2 8x400 Gb SSD R630 6,4
écriture, latence. write intensive Nov 2015 cache
104 Ceph école stockage IN2P3 12-16 Juin 2017
Clusters Ceph et destination (usage * volume * admin )
Nom Usage Depuis Taille Version
A Tiers (labos de recherche) 07/2015 Pourrait être Stable LTS (Jewel)
très importante
B Incubation 03/2013 Petit Stable, Jewel → Kraken
C Production vSAN 05/2014 Moyenne Stable LTS (Firefly→ Jewel)
C2 systèmes, racines, images
D Backups 01/2013 Très importante Stable LTS : Firefly→
D2,D3 11/2015 D2 : Hammer D3 : Jewel
E Expérimental 06/2014 Petit Versions de développement instables
F Data IaaS, 04/2016 Moyen à important Stable LTS : Jewel
Data Vsan
G Sécurité, logs 05/2016 Important Stable LTS : Jewel
archives video-surveillance
H Home dirs (cloud) 05/2016 Pourrait être Stable LTS : Jewel
très importante
I Iaas (Racines, Images) 05/2016 Importante Stable LTS : Jewel

105 Ceph école stockage IN2P3 12-16 Juin 2017


Implantation sur chaque site
12xOSD, Gen1
CHA 10 Gb/s Public : MON (A,B,C,D E)
Routage local bond0.2090 MDS (A,B,C,D,E)
Vlans 2090,2096 24xOSD, Gen2

10 Gb/s Cluster :
bond0.2096
b /s 12xOSD, Gen2-
G
40

40 Gb
LMB (datacenter) 24xOSD, Gen3

s/
Routage local
Vlans 2091,2097
40 LOI 48xOSD, Gen4
Gb Routage local
/s
Vlans 2092,2098

106 Ceph école stockage IN2P3 12-16 Juin 2017


Tolérance à la panne : Testé !

(Fibres!) Panne climatiseur


CHA & arrêt d'urgence
LMB

Panne d'onduleur
et disjoncteur Les problèmes sur machine physique sont rares
LOI En général, une salle machine complète est impactée
3 répliquas permettent d'éviter une reconstruction

107 Ceph école stockage IN2P3 12-16 Juin 2017


Connexions réseau, scalabilité
Les clients initient des
connexions directes avec les OSD
= Scalabilité

Beaucoup de connexions,
stresse les firewalls

10 Gbits/s pour de
Bonnes performances

108 Ceph école stockage IN2P3 12-16 Juin 2017


TP.

109 Ceph école stockage IN2P3 12-16 Juin 2017


À faire sur une des VM
Choix 1 : ceph-deploy
Lancer ceph-deploy depuis un des noeuds ssh root@mon1

Provisionner les mon initiaux ceph-deploy new mon1 mon2 mon3


Installation des paquetages debian ceph-deploy install mon1 mon2 mon3
Création effective des mon ceph-deploy mon create-initial
ceph -s
Ceph est déja installé et fonctionnel, mais il n’y a pas d’OSD health HEALTH_ERR
no osds
ceph-deploy osd create mon1:/dev/vdb
Préparer les volumes des OSD (formattage, etc) ceph-deploy osd create mon2:/dev/vdb
ceph-deploy osd create mon3:/dev/vdb

Création optionnelle des mds (pour cephfs) ceph-deploy mds create mds1 mds2 mds3

ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
Cluster CEPH 3055G 3055G 100M 0 1 pool par
fonctionnel !
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
défaut : rbd
rbd 0 0 0 1018G 0

110 Ceph école stockage IN2P3 12-16 Juin 2017


Créer un client de test
À faire sur le contrôleur Ou via l’interface WWW
opennebula
onetemplate instantiate 7 --name ceph_client_A1 --cpu 1 --memory 768 --nic 'oneadmin[PRIVATE_666]'
--net_context --ssh '/home/[Link]/.ssh/id_rsa.pub'
rsync -av .ssh/ceph_key* .ssh/config root@[Link]:/root/.ssh
ssh root@[Link] "chown [Link] ~/.ssh/*"

Copier la config et les clefs ceph depuis un des mon (pas bon pour la sécurité !)
root@mon1 : rsync -av /etc/ceph [Link]:/etc
Sur la VM cliente

ssh root@[Link]
echo deb [Link] jessie main > /etc/apt/[Link].d/[Link]
apt update && apt upgrade && apt install ceph-common
ceph -s
ceph df
mkdir /mnt/rbd
mkdir /mnt/cephfs

111 Ceph école stockage IN2P3 12-16 Juin 2017


Attention !!!

Le client est ici administrateur.

“Cette cascade est réalisée par des professionnels.


Ne tentez en aucun cas de le reproduire à la maison.”

112 Ceph école stockage IN2P3 12-16 Juin 2017


/etc/ceph/[Link]

[Link] à l’issue de l’installation


cat /etc/ceph/[Link] Beaucoup de customisation
[global] possible
fsid = 33e96316-614a-40d8-aea5-
dba146686d5e
mon_initial_members = mona1, mona2, mona3
mon_host =
[Link],[Link],[Link]
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
NE DEVRAIT PAS ÊTRE
[Link] PARTAGÉ
[[Link]]
key = AQALHUxY6GaqBRAAaCqUwzQeQ0JIZr4nCCfe8g==

113 Ceph école stockage IN2P3 12-16 Juin 2017


Sur toute machine ayant a clef admin

Manipulation des pools

root@debian:~# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
3055G 3050G 5310M 0.17
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
rbd 0 1742M 0.17 1016G 501 Pool par défaut
root@debian:~# ceph osd pool get rbd size
size: 3
root@debian:~# ceph osd pool get rbd pg_num Réplicat x3
pg_num: 64
64 placement groups

114 Ceph école stockage IN2P3 12-16 Juin 2017


Créer un nouveau pool
root@debian:~# ceph osd pool create objets_utiles 64 replicated
pool 'objets_utiles' created
root@debian:~# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
3055G 3050G 5311M 0.17
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
rbd 0 1742M 0.17 1016G 501
objets_utiles 2 0 0 1016G 0

115 Ceph école stockage IN2P3 12-16 Juin 2017


Stocker & Récupérer un objet
root@debian:~#dd if=/dev/urandom of=FichierTireBouchon bs=1M count=16
root@debian:~# md5sum FichierTireBouchon
eb05fa217d1b9569c426b07e92a84854 FichierTireBouchon

root@debian:~#rados put -p objets_utiles ObjetTireBouchon FichierTireBouchon

root@debian:~# rados ls -p objets_utiles


ObjetTireBouchon

root@debian:~# rados -p objets_utiles stat ObjetTireBouchon


objets_utiles/ObjetTireBouchon mtime 2016-12-10 19:14:45.000000, size
16777216

root@debian:~# rados get -p objets_utiles ObjetTireBouchon


FichierTireBouchon2
root@debian:~# md5sum FichierTireBouchon2
eb05fa217d1b9569c426b07e92a84854 FichierTireBouchon2
116 Ceph école stockage IN2P3 12-16 Juin 2017
Explications :

root@debian:~# ceph osd map objets_utiles ObjetTireBouchon


osdmap e21 pool 'objets_utiles' (2) object 'ObjetTireBouchon' -> pg 2.4384205 (2.5) -> up
([2,1,0], p2) acting ([2,1,0], p2)

ceph pg dump

root@mona1:/var/lib/ceph/osd/ceph-0/current/2.5_head# ls -al
total 16396
drwxr-xr-x 2 ceph ceph 72 Dec 10 17:35 .
drwxr-xr-x 260 ceph ceph 8192 Dec 10 17:27 ..
-rw-r--r-- 1 ceph ceph 0 Dec 10 17:27 __head_00000005__2
-rw-r--r-- 1 ceph ceph 16777216 Dec 10 17:51 ObjetTireBouchon__head_04384205__2

root@mona3:/var/lib/ceph/osd/ceph-2/current/2.5_head# md5sum
ObjetTireBouchon__head_04384205__2
eb05fa217d1b9569c426b07e92a84854 ObjetTireBouchon__head_04384205__2

117 Ceph école stockage IN2P3 12-16 Juin 2017


RBD : tests (avec krbd)

2 pools de créés
ceph df
rbd ls La commande rbd utilise le pool rbd par défaut
rbd create test1 --size=100G --image-feature layering Création d’un volume (idem LUN)
rbd info test1 Informations sur le volume créé
rbd map test1
mkfs.ext4 /dev/rbd0 On le mappe sur la machine
mount /dev/rbd0 /mnt/rbd
df
ceph df Remarquer que les 100G n’ont pas étés alloués
time cp -avx / /mnt/rbd
df
ceph df Mais qu’ici l’allocation (x3) a eu lieu

118 Ceph école stockage IN2P3 12-16 Juin 2017


RBD : tests (avec krbd)

time rm -rf /mnt/rbd


Allocation à la volée.
ceph df
Supression depuis fs != suppression de ceph
time cp -avx / /mnt/rbd
Nécessite trim (uniquement virtio-scsi dans kvm)

Répéter plusieurs fois.

119 Ceph école stockage IN2P3 12-16 Juin 2017


RBD : snapshots, clone

ceph df
rbd snap test1@snap1 Le Snapshot n’utilise pas de place
rbd snap ls test1
rbd snap protect test1@snap1
ceph df
rbd clone test1@snap1 test2
Le clone non plus. Attention à l’UUID
ceph df
rbd map test2
mount /dev/rbd1 /mnt/2

120 Ceph école stockage IN2P3 12-16 Juin 2017


Sur toute machine ayant a clef admin

Cephfs
Création des pools nécessaires
ceph osd pool create ANF_cephfs_data 64 replicated
ceph osd pool create ANF_cephfs_metadata 64 replicated
Création du système de fichiers
ceph fs new ANF_fs ANF_cephfs_metadata ANF_cephfs_data
ceph fs ls
name: ANF_fs, metadata pool: ANF_cephfs_metadata,
data pools: [ANF_cephfs_data ]
ceph fs set_default ANF_fs
Sur la VM cliente
Extraire la clef admin du keyring, ajouter le client de montage
ceph auth get [Link] | head -2 | tail -1 > /etc/ceph/[Link]
apt install ceph-fs-common

Montage du fs sur le client


mount -t ceph mds1,mds2,mds3:/ /mnt/cephfs -o name=admin,secretfile=/etc/ceph/[Link]

121 Ceph école stockage IN2P3 12-16 Juin 2017


Authentifications

ceph df Rbd ls rbd


ceph auth list rados -p ANF_cephfs_data ls | head

ceph auth list


ceph auth get-or-create-key [Link] mon 'allow r' osd 'allow rwx pool=rbd, allow rwx
pool=objets_utiles'
AQB5cE1Y1O/JDBAAVBtnxzCMu3y30eBXJzlBkw== Sur la VM cliente
cat /etc/ceph/[Link]
[[Link]]
key = AQB5cE1Y1O/JDBAAVBtnxzCMu3y30eBXJzlBkw==
mv [Link] [Link]
ceph df
ceph auth list La VM cliente n’a plus de droits admin
ceph df --id=ANF rbd ls rbd --id=ANF
ceph auth list --id=ANF rados -p ANF_cephfs_data –id=ANF ls | head

122 Ceph école stockage IN2P3 12-16 Juin 2017


Monitoring
Donne l’état du cluster en temps réel ou continu
ceph -s, ceph -w

Scruter /var/log/ceph :
monclient: _check_auth_rotating possible clock skew, rotating keys expired way too early (before 2016-
12-11 16:52:00.157565)
Détails de santé du cluster
ceph health
HEALTH_WARN mon.mona1 low disk space; mon.mona2 low disk space; mon.mona3 low disk space

Donne la hiérachie des objets, indique les osd up / down


ceph osd tree

Socket d’administration dans /var/run/ceph/[Link] Sur un OSD


ceph --admin-daemon /var/run/ceph/[Link] perf dump
ceph daemonperf /var/run/ceph/[Link]

123 Ceph école stockage IN2P3 12-16 Juin 2017


ceph -w en simultané
Changer les règles d’un pool

Passer un pool en réplicat 2, le repasser à 3


ceph osd pool get rbd size
ceph osd pool set rbd size 2
[Attendre]
ceph osd pool set rbd size 3

Augmenter les pg d’un pool


ceph osd pool get rbd pg_num
ceph osd pool get rbd pgp_num
ceph osd pool set rbd pg_num 128
[Attendre]
ceph osd pool set rnd pgp_num 128

124 Ceph école stockage IN2P3 12-16 Juin 2017


Désactiver / Activer les scrubs
En cas de reconstruction, évite de saturer davantage

ceph osd set noscrub


ceph osd set nodeep-scrub
ceph -s

ceph osd unset noscrub


ceph osd unset nodeep-scrub
ceph -s

125 Ceph école stockage IN2P3 12-16 Juin 2017


Ajouter un OSD (1)
oneimage create -d rozostore_image --name YD-dataA4 --type DATABLOCK --size 1024G --persistent --prefix vd
onetemplate instantiate 7 --name ceph_A4 --cpu 1 --memory 768 --nic 'oneadmin[PRIVATE_666]'
--net_context --ssh '/home/[Link]/.ssh/id_rsa.pub' --disk=1,YD-dataA4

ssh-copy-id -i .ssh/ceph_key.pub root@[Link] EDIT .ssh/config


[..]
Host mon3
Peupler le /etc/host
[..]
alias cephpdsh="pdsh -w root@10.100.0.[22-25,27]" Host osd4
###cephpdsh "echo '[Link] clienta1' >> /etc/hosts" Hostname [Link]
cephpdsh "echo '[Link] osda4' >> /etc/hosts" User root
IdentityFile
~/.ssh/ceph_key
rsync -av .ssh/ceph_key* .ssh/config root@[Link]:/root/.ssh
cephpdsh "chown [Link] ~/.ssh/*"

126 Ceph école stockage IN2P3 12-16 Juin 2017


À faire sur mona1
Ajouter un OSD (2)

root@mon1:~# ceph-deploy install osd4


ceph-deploy osd create osd4:/dev/vdb
ceph -w

Les données sont en train de migrer sur le 4 eme OSD


root@mona1:~# ceph osd map objets_utiles ObjetTireBouchon
osdmap e258 pool 'objets_utiles' (2) object 'ObjetTireBouchon'
-> pg 2.4384205 (2.5) -> up ([3,2,1], p3) acting ([3,2,1], p3)

Même PG, mais OSD différents : était [2,1,0]


root@mona1:~# ceph df

200 Go bruts.

127 Ceph école stockage IN2P3 12-16 Juin 2017


Règles crush.

root@mon1:~# ceph osd getcrushmap -o crushmap


got crush map from osdmap epoch 285

crushtool -d crushmap -o [Link]


EDIT [Link]

ceph osd crush add-bucket salle1 room


ceph osd crush add-bucket salle2 room
ceph osd crush add-bucket salle3 room
ceph osd crush move salle1 root=default Les changements dans la hiérarchie
ceph osd crush move salle2 root=default
ceph osd crush move salle3 root=default
engendrent un fort déplacement des
ceph osd crush move mon1 root=default room=salle1 données.
ceph osd crush move mon2 root=default room=salle2
ceph osd crush move mon3 root=default room=salle3
ceph osd crush move mon4 root=default room=salle1
ceph osd tree

128 Ceph école stockage IN2P3 12-16 Juin 2017


Règles crush.
root@mon1:~# ceph osd getcrushmap -o crushmap
root@mon1:~# crushtool -d crushmap -o [Link]
root@mon1:~# EDIT [Link]

Ajout d’une nouvelle règle en éditant La crushmap


rule replicat_salle {
ruleset 1
type replicated
min_size 1
max_size 10
step take default
step chooseleaf firstn 0 type room
step emit
}

root@mon1:~# crushtool -c [Link] -o crushmap2 La règle existe dans le cluster mais est
root@mon1:~# ceph osd setcrushmap -i crushmap2 Non appliquée.
root@mon1:~# ceph osd pool set rbd crush_ruleset 1
set pool 0 crush_ruleset to 1 Elle l’est !

129 Ceph école stockage IN2P3 12-16 Juin 2017


Créer un pool d’erasure coding
Plugin isa intel meilleur que jerasure (défaut)

ceph osd erasure-code-profile set p2p1ANF plugin=isa k=2 m=1 ruleset-failure-domain=room


ceph osd crush rule create-erasure r2p1AND p2p1ANF

ceph osd pool create poolEC 32 erasure p2p1ANF Place disponible 2x supérieure dans ce pool
ceph df

rbd create poolEC/test --size=1G


2016-12-11 20:16:33.118333 7f025000cd40 -1
librbd: error adding image to directory: (95) Pool EC pas directement utilisable par
Operation not supported RBD ou cephFS
rbd: create error: (95) Operation not supported

rados put -p poolEC ObjetTireBouchon FichierTireBouchon Mais utilisable en RADOS.


rados get -p poolEC ObjetTireBouchon FichierTireBouchon2 Raison : pas de support d’écriture partielle

130 Ceph école stockage IN2P3 12-16 Juin 2017


Ajouter un tiers répliqué au dessus
Permet d’utiliser un pool EC sur rbd, cephfs

Peut être intéressant en terme de performance


(pool chaud, pool froid)
root@debian:~# ceph osd pool create HOT 32 replicat_salle
root@debian:~# ceph df précise la règle de placement des données
root@debian:~# ceph osd tier add poolEC HOT
pool 'HOT' is now (or already was) a tier of 'poolEC' HOT devient un pool tiers, writeback
root@debian:~# ceph osd tier cache-mode HOT writeback
set cache-mode for pool 'HOT' to writeback
root@debian:~# ceph osd pool set HOT hit_set_type bloom
set pool 9 hit_set_type to bloom
Bloom = algorithme du cache/tier
root@debian:~# ceph osd tier set-overlay poolEC HOT
overlay for 'poolEC' is now (or already was) 'HOT' HOT masque le pool sous-jacent
root@debian:~# rbd create poolEC/test --image-feature layering --size=100G
root@debian:~# rbd map poolEC/test
/dev/rbd1
root@debian:~# [Link] -m crc=1,finobt=1 /dev/rbd1
root@debian:~# mount /dev/rbd1 /mnt/EC

131 Ceph école stockage IN2P3 12-16 Juin 2017


Corrections d’erreurs
Sur un OSD
root@mon2:/var/lib/ceph/osd/ceph-1/current/2.5_head# rm ObjetTireBouchon__head_04384205__2

Sur le client
rados get -p objets_utiles ObjetTireBouchon FichierTireBouchon2 ; md5sum FichierTireBouchon2
eb05fa217d1b9569c426b07e92a84854 FichierTireBouchon2

ceph pg scrub 2.5


instructing pg 2.5 on osd.2 to scrub

ceph pg scrub 2.5


instructing pg 2.5 on osd.2 to scrub

2016-12-11 15:09:35.174012 osd.2 [INF] 2.5 scrub starts


2016-12-11 15:09:35.176571 osd.2 [ERR] 2.5 shard 1 missing 2:a0421c20:::ObjetTireBouchon:head
2016-12-11 15:09:35.176754 osd.2 [ERR] 2.5 scrub 1 missing, 0 inconsistent objects
2016-12-11 15:09:35.176761 osd.2 [ERR] 2.5 scrub 1 errors

ceph pg repair 2.5


2016-12-11 15:11:31.192588 osd.2 [INF] 2.5 repair starts
2016-12-11 15:11:31.252131 osd.2 [ERR] 2.5 shard 1 missing 2:a0421c20:::ObjetTireBouchon:head
2016-12-11 15:11:31.252239 osd.2 [ERR] 2.5 repair 1 missing, 0 inconsistent objects
2016-12-11 15:11:31.252256 osd.2 [ERR] 2.5 repair 1 errors, 1 fixed

132 Ceph école stockage IN2P3 12-16 Juin 2017


Panne de serveurs

Kill violent d’OSD, de MON

Au niveau d’openNebula, « Shutter un serveur »

Relancer, vérifier...

133 Ceph école stockage IN2P3 12-16 Juin 2017


Crush tunables, support des options
Noyau 3.16 de base. Cluster Jewel
root@debian:~# rbd create rbd/test2 --size=500G Noyau client ancien
root@debian:~# rbd map rbd/test2 Upgrader le noyau ou limiter les features
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd
feature disable".

root@debian:~# umount -a Raffinement dans le placement des données


root@debian:~# ceph osd crush tunables optimal Déplace beaucoup de données.

root@debian:~# mount /dev/rbd0 /mnt/rbd Le noyau 3.16 ne peut accepter ces règles
[Ne rend pas la main] LibRBD est plus souple (pour KVM)

134 Ceph école stockage IN2P3 12-16 Juin 2017


Compatibilité krbd
Noyau 4.8 compatible, mais pas toutes
Les options

root@debian:~# uname -a
Linux 4.8.10-dsiun-dl-160725 #201 SMP Fri Nov 25 11:37:30 UTC 2016 x86_64 GNU/Linux

root@debian:~# rbd map test1


/dev/rbd0
root@debian:~# rbd map test2
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd
feature disable".
In some cases useful info is found in syslog - try "dmesg | tail" or so.
rbd: map failed: (6) No such device or address

root@debian:~# rbd info test2


features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
root@debian:~# rbd feature disable test2 exclusive-lock, object-map, fast-diff, deep-flatten
root@debian:~# rbd map test2
/dev/rbd1

135 Ceph école stockage IN2P3 12-16 Juin 2017


Merci !

Questions ?
Crédits : Opencliparts / Openstreetmap / [Link]

136 Ceph école stockage IN2P3 12-16 Juin 2017

Vous aimerez peut-être aussi