# Ceph ## Mais c'est quoi Ceph est une plateforme libre de stockage distribué. Les objectifs principaux de Ceph sont d'être complètement distribué sans point unique de défaillance, extensible jusqu'à l'exaoctet et librement disponible. Les données sont répliquées, permettant au système d'être tolérant aux pannes. Ceph fonctionne sur du matériel non spécialisé. Le système est conçu pour s'autoréparer et automatiser au maximum ses tâches administratives afin de réduire les coûts d'exploitation. ### On y stock quoi concrètement ? Ceph met en œuvre le stockage d'objets distribué au moyen de RADOS (Reliable Autonomic Distributed Object Store), un moteur de stockage objet fiable, autonome et distribué. Côté client, sa bibliothèque logicielle native librados permet aux applications C, C++, Java, Python, Ruby et PHP un accès direct en mode objet. Différentes bibliothèques additionnelles permettent d'obtenir les abstractions nécessaires pour : * L'accès en mode bloc grâce à RADOS Block Device (RBD) * L'accès en mode fichier grâce à CephFS * L'accès en mode HTTP REST via les interfaces OpenStack Swift ou Amazon S3 grâce à la passerelle RADOS (RADOS Gateway ou RADOSW) ### Architecture ### Vocabulaires * **CRUSH** Controlled Replication Under Scalable Hashing. It is the algorithm Ceph uses to compute object storage locations. * **ruleset** A set of CRUSH data placement rules that applies to a particular pool(s). * **Pools** Pools are logical partitions for storing objects. * **OSD** A physical or logical storage unit (e.g., LUN). Sometimes, Ceph users use the term “OSD” to refer to Ceph OSD Daemon, though the proper term is “Ceph OSD”. ## Procédures ### Avant d'éteindre une machine physique pour maintenance courte Il est nécessaire de marquer le cluster avec le flag `noout`: `ceph osd set noout`. Il est également possible de le faire depuis l'interface de Proxmox, sur une machine physique, dans l'onglet `Ceph/OSD`. Une fois la machine à nouveau opérationelle, enlevez le flag `noout`: `ceph osd unset noout`. ### Activation cache-tiering ceph osd tier add rdb ssd ceph osd tier cache-mode ssd writeback ceph osd tier set-overlay rdb ssd Il faut penser a définir **MANUELLEMENT** les limites de remplissage du cache, ceph n'arrivant pas à les déterminer seul. ceph osd pool set ssd hit_set_type bloom ceph osd pool set ssd target_max_bytes 800000000000 ceph osd pool set ssd cache_target_full_ratio 0.9 ceph osd pool set ssd cache_target_dirty_ratio 0.7 ceph osd pool set ssd cache_target_dirty_high_ratio 0.8 ### Désactivation cache-tiering * Flush des donnés en cache (asynchrone, plusieurs minutes) ceph osd tier cache-mode ssd forward **S'ASSURER QUE LE CACHE EST VIDE**, via la commande: rados -p ssd ls Il est possible de le forcer manuellement via la commande: rados -p ssd cache-flush-evict-all * Suppression de la redirection depuis la pool de stockage ceph osd tier remove-overlay rdb * Suppression du cache-tiers ceph osd tier remove rdb ssd ## Troubleshooting #### Generic Troubleshooting # Check cluster status ceph -s|--status|status # Check cluster health ceph health {detail} # Watch live cluster change ceph -w|--watch Documentation: http://docs.ceph.com/docs/mimic/rados/operations/pg-states/ #### Inconsistent pg * Affichage des IDs des pg inconsistent ceph health detail * Réparation des pg : ceph pg repair * Si vous refaites un **ceph health detail**, il est normal que seul certains //pg// soit marqués en //repair//. Cela est dû au fait que ceph dispose d'un ordonnanceur qui répare les //pg// les uns après les autres. #### Supression de disques RADOS ``` # Liste des pools ceph osd lspools # Liste des disques rbd {pool-name} ls # Liste des snapshots d'un disque rbd snap ls {pool-name}/{image-name} # Unprotect d'une snapshot d'un disque rbd snap unprotect {pool-name}/{image-name}@{snapshot-name} # Purge des snapshots du disque rbd snap purge {pool-name}/{image-name} # Supression du disque rbd remove {pool-name}/{image-name} ``` * Si vous rencontrez le problème suivant lors de la suppression d'un disque ``` rbd: error: image still has watchers This means the image is still open or the client using it crashed. Try again after closing/unmapping it or waiting 30s for the crashed client to timeout. ``` * Listez les watchers de l'image en question ``` rbd status {pool-name}/{image-name} ``` * Unmap l'image sur l'hote: ``` # /!\ Sur l'hôte retourné par 'rbd status' # Vérifiez que l'image en question est présente rbd showmapped # Unmap l'image en question rbd unmap ``` ### Utilisation d'un disque sur une machine différente https://pve.proxmox.com/wiki/Moving_disk_image_from_one_KVM_machine_to_another