BlueStore
BlueStore est l'implémentation de stockage de nouvelle génération pour Ceph. Etant donné que le marché des unités de stockage inclut désormais des unités SSD ou des unités SSD et de la mémoire rémanente via PCI Express ou NVMe, leur utilisation dans Ceph révèle certaines des limitations de l'implémentation du stockage FileStore . Bien que FileStore comporte de nombreuses améliorations pour faciliter le stockage SSD et NVMe, d'autres limitations subsistent. Parmi eux, l'augmentation des groupes de placement reste coûteuse en calcul, et la pénalité d'écriture double reste. Alors que FileStore interagit avec un système de fichiers sur une unité par blocs, BlueStore élimine cette couche d'adressage indirect et consomme directement une unité par blocs brute pour le stockage d'objets. BlueStore utilise le système de fichiers BlueFS très léger sur une petite partition pour ses bases de données k / v. BlueStore élimine le paradigme d'un répertoire représentant un groupe de placement, d'un fichier représentant un objet et de fichiers XATTRs représentant des métadonnées. BlueStore élimine également la double pénalité d'écriture de FileStore, de sorte que les opérations d'écriture sont presque deux fois plus rapides avec BlueStore sous la plupart des charges de travail.
BlueStore stocke les données en tant que:
- Données d'objet
Dans
BlueStore, Ceph stocke les objets en tant que blocs directement sur une unité par bloc brute. La partie de l'unité par bloc brute qui stocke les données d'objet ne contient PAS de système de fichiers. L'omission du système de fichiers élimine une couche d'indirection et améliore ainsi les performances. Toutefois, une grande partie de l'amélioration des performances deBlueStoreprovient de la base de données de blocs et du journal d'écriture anticipée.- Bloquer la base de données
Dans
BlueStore, la base de données de blocs gère la sémantique d'objet pour garantir la cohérence. L'identificateur unique d'un objet est une clé dans la base de données de blocs. Les valeurs de la base de données de blocs sont constituées d'une série d'adresses de blocs qui font référence aux données d'objet stockées, au groupe de placement de l'objet et aux métadonnées de l'objet. La base de données par blocs peut résider sur une partitionBlueFSsur la même unité par bloc brute qui stocke les données d'objet, ou sur une unité par bloc distincte, généralement lorsque l'unité par bloc principale est une unité de disque dur et qu'une unité SSD ou NVMe améliore les performances. La base de données par blocs fournit un certain nombre d'améliorations par rapport àFileStore, à savoir que la sémantique de clé / valeur deBlueStorene souffre pas des limitations des XATTRs du système de fichiers.BlueStorepeut affecter rapidement des objets à d'autres groupes de placement dans la base de données de blocs sans avoir à déplacer des fichiers d'un répertoire à un autre, comme c'est le cas dansFileStore.BlueStoreintroduit également de nouvelles fonctions. La base de données par blocs peut stocker la somme de contrôle des données d'objet stockées et ses métadonnées, ce qui permet des opérations de total de contrôle de données complètes pour chaque lecture, ce qui est plus efficace que l'épuration périodique pour détecter la pourriture des bits.BlueStorepeut compresser un objet et la base de données de blocs peut stocker l'algorithme utilisé pour compresser un objet-en veillant à ce que les opérations de lecture sélectionnent l'algorithme approprié pour la décompression.- Journal d'écriture anticipée
Dans
BlueStore, le journal d'écriture anticipée garantit l' atomicité, similaire à la fonctionnalité de journalisation deFileStore. CommeFileStore,BlueStoreconsigne tous les aspects de chaque transaction. Cependant, le journal d'écriture anticipéeBlueStoreou WAL peut exécuter cette fonction simultanément, ce qui élimine la pénalité d'écriture double deFileStore. Par conséquent,BlueStoreest presque deux fois plus rapide queFileStoresur les opérations d'écriture pour la plupart des charges de travail. BlueStore peut déployer le WAL sur le même périphérique pour stocker des données d'objet, ou il peut déployer le WAL sur un autre périphérique, généralement lorsque le périphérique de bloc principal est une unité de disque dur et qu'une unité SSD ou NVMe améliore les performances.