vSan Hybrid and All Flash – Read Cache – part 4

Dans cet article, nous allons découvrir comment vSan gère les lectures. Nous étudierons les lectures sur vSan en version Hybrid en fonction de la présence en cache ou non des blocs demandés par les VM ainsi que l’utilisation du cache suite au déplacement d’une VM par vMotion au sein du cluster. Bien entendu, nous aborderons aussi la version All Flash.

Comme nous l’avons vu dans l’article précèdent, en version Hybrid, vSan possède 1 disque SSD dédié par disk group. vSan utilise 70% de la capacité de ce disque comme cache en lecture et les 30% restant comme cache en écriture.

En version All Flash, vSan utilise 100% de la capacité d’un disque SSD ‘Write intensive’ dédié par disk group comme cache en écriture et tous les autres disques capacitifs (SSD) du disk group pour les lectures. En All Flash, il n’y a pas de gestion de bloc chaud et froid lors des opérations de lecture contrairement au mode hybrid qui nécessite le déplacement des blocs récemment lus (blocs chauds) sur les disques de cache SSD dédiés du disk group qui héberge les objets. En version All Flash, il n’existe pas de placement des blocs chauds sur un disque de cache SSD dédié par disk group. En effet, les lectures sont lues directement depuis les disques capacitifs eux-mêmes en SSD.

vSan utilise un algorithme lui permettant d’effectuer ses lectures en round-robin par bloc de 1MB et cela dans les deux modes (Hybrid & All Flash). Cet algorithme permet une répartition des lectures et l’exploitation de plusieurs disques de cache SSD, plusieurs cartes contrôleur RAID mais aussi plusieurs cartes réseaux (SFP+ ou BASE-T). Nous verrons dans les cas présentés ci-dessous que vSan n’utilise pas et ce volontairement de la Read Locality (sauf en streched cluster que nous étudierons dans un prochain article). En version Hybrid, lors de la migration d’une VM entre les hôtes ESXi du cluster, le cache n’est pas reconstruit sur l’hôte qui exécute la VM mais conserve sa localité d’origine sur les disques SSD des disk groups des hôtes qui détiennent l’objet.

VMware part du principe que les VMs sont fréquemment déplacées par des mécanismes de rééquilibrage comme DRS et que la pénalité de réécriture ou déplacement du cache en local est plus élevé que celle engendrée par le réseau 10Gbps. En All Flash, la question de mise en cache ne se pose pas car les lectures sont effectuées directement sur les disques capacitifs SSD des disk groups qui hébergent les objets et les réplicas d’objet.

En version 6.2, vSan introduit la fonctionnalité Client Cache qui améliore les performances en lecture. Cette fonctionnalité permet d’exploiter 0,4% de la mémoire RAM locale d’une machine virtuelle comme cache en lecture dans la limite 1GB par hôte ESXi. Notez que ce cache se situe coté client, ce qui signifie que les blocs d’une VM sont mis en cache sur l’hôte qui exécute la VM.

Dans les scénarios présentés ci-dessous, nous n’entrerons pas dans les détails de la consultation du cluster services (CMMD*) lors d’une demande de lecture qui permet de déterminer le propriétaire des données demandées.

* CMMDS : Cluster Monitoring, Membership, and Directory Services (nous détaillerons les mécanismes software interne vSan dans un prochain article)

Lecture d’un bloc de donnée en cache (version Hybrid):

Lecture d'un bloc de donnée en cache (version Hybrid):

La VM s’exécute sur l’hôte ESXi A.

La politique Number Of Failures To Tolerate est configurée 1

ESXi A est propriétaire de l’objet VMDK1.

ESXi B est propriétaire de l’objet réplica VMDK1′.

  1. La VM effectue la lecture d’un bloc de données dans son disque VMDK1.
  2. vSan vérifie la présence en cache du bloc demandé sur l’un des hôtes ESXi du cluster possédant l’objet VMDK1 ou le réplica de l’objet VMDK1′.
  3. Le bloc est trouvé dans le cache de l’hôte A. L’opération de lecture ne traverse pas le réseau et s’effectue localement sur l’un des disk group de l’hôte ESXi A par l’intermédiaire de sa carte contrôleur HBA interne.
  4. vSan effectue la lecture sur le disque de cache SSD du Disk Group 2 de l’hôte ESXi A
  5. L’information est remontée à la VM

Lecture d’un bloc de donnée (version All Flash):

Lecture d'un bloc de donnée (version All Flash):

La VM s’exécute sur l’hôte ESXi A.

La politique Number Of Failures To Tolerate est configurée 1

ESXi A est propriétaire de l’objet VMDK1.

ESXi B est propriétaire de l’objet réplica VMDK1′.

  1. La VM effectue la lecture d’un bloc de données dans son disque VMDK1.
  2. vSan vérifie la présence du bloc demandé sur l’un des hôtes ESXi du cluster possédant l’objet VMDK1 ou le réplica de l’objet VMDK1′.
  3. Le bloc est trouvé sur l’hôte A. L’opération de lecture ne traverse pas le réseau et s’effectue localement sur l’un des disk group de l’hôte ESXi A par l’intermédiaire de sa carte contrôleur HBA interne.
  4. vSan effectue la lecture sur les disques SSD du Disk Group 2 de l’hôte A
  5. L’information est remontée à la VM

Lecture d’un bloc de données en cache sur le réplica (version Hybrid):

Lecture d'un bloc de données en cache sur le réplica (version Hybrid):

La VM s’exécute sur l’hôte ESXi A.

La politique Number Of Failures To Tolerate est configurée 1

ESXi A est propriétaire de l’objet VMDK1.

ESXi B est propriétaire de l’objet réplica VMDK1′.

  1. La VM effectue la lecture d’un bloc de données dans son disque VMDK1.
  2. vSan vérifie la présence en cache du bloc demandé sur l’un des hôtes ESXi du cluster possédant l’objet VMDK1 ou le réplica de l’objet VMDK1′.
  3. Le bloc est trouvé dans le cache de l’hôte B. L’opération de lecture traverse le réseau et s’effectue sur l’un des disk group de l’hôte ESXi B par l’intermédiaire de sa carte contrôleur HBA interne.
  4. vSan effectue la lecture sur le disque de cache SSD du Disk Group 1 de l’hôte ESXi B
  5. L’information est remontée à la VM

Lecture d’un bloc de données sur le réplica (version All Flash):

Lecture d'un bloc de données sur le réplica (version All Flash):

La VM s’exécute sur l’hôte ESXi A.

La politique Number Of Failures To Tolerate est configurée 1

ESXi A est propriétaire de l’objet VMDK1.

ESXi B est propriétaire de l’objet réplica VMDK1′.

  1. La VM effectue la lecture d’un bloc de données dans son disque VMDK1.
  2. vSan vérifie la présence du bloc demandé sur l’un des hôtes ESXi du cluster possédant l’objet VMDK1 ou le réplica de l’objet VMDK1′.
  3. Le bloc est trouvé sur l’hôte B. L’opération de lecture traverse le réseau et s’effectue sur l’un des disk group de l’hôte ESXi B par l’intermédiaire de sa carte contrôleur HBA interne.
  4. vSan effectue la lecture sur les disques SSD du Disk Group 1 de l’hôte ESXi B
  5. L’information est remontée à la VM

Lecture d’un bloc de données non en cache (version Hybrid):

Lecture d'un bloc de données non en cache (version Hybrid):

La VM s’exécute sur l’hôte ESXi A.

La politique Number Of Failures To Tolerate est configurée 1

ESXi A est propriétaire de l’objet VMDK1.

ESXi B est propriétaire de l’objet réplica VMDK1′.

  1. La VM effectue la lecture d’un bloc de données dans son disque VMDK1.
  2. vSan vérifie la présence en cache du bloc demandé sur l’un des hôtes ESXi du cluster possédant l’objet VMDK1 ou le réplica de l’objet VMDK1′.
  3. Le bloc de données demandé n’est pas trouvé en cache. vSan effectue ses lectures en round-robin par block de 1MB (Lecture de 1MB sur l’hôte A, lecture de 1MB sur l’hôte B). Dans notre cas l’hôte A va être sélectionné par le round-robin.
  4. Le bloc de données non présent en cache sur l’hôte A et B, vSan va effectuer la lecture sur les disques capacitifs du disk group 2 de l’hôte A via sa la carte contrôleur HBA interne sans traverser le réseau.
  5. Le bloc de données va être placé dans le disque de cache SSD du Disk Group 2 de l’hôte ESXi A.
  6. L’information est remontée à la VM

Deux opérations de lecture, sur un bloc de données non en cache et un en cache (version Hybrid):

Deux opérations de lecture, sur un bloc de données non en cache et un en cache (version Hybrid):

La VM s’exécute sur l’hôte ESXi A.

La politique Number Of Failures To Tolerate est configurée 1

ESXi A est propriétaire de l’objet VMDK1.

ESXi B est propriétaire de l’objet réplica VMDK1′.

  1. La VM effectue la lecture du 1er bloc de données dans son disque VMDK1.
  2. vSan vérifie la présence en cache du 1er bloc puis du 2nd bloc demandé sur l’un des hôtes ESXi possédant l’objet VMDK1 ou le réplica de l’objet VMDK1′.
  3. Le 1er bloc de données demandé n’est pas trouvé en cache, vSan effectue ses lectures en round-robin par block de 1MB (Lecture de 1MB sur l’hôte A, lecture de 1MB sur l’hôte B). Dans notre cas l’hôte A va être sélectionné par le round-robin.

    Le 2nd bloc de données est trouvé dans le cache du Disk Group1 de l’hôte ESXi B

  4. Le 1er bloc de données n’étant pas dans les caches de l’hôte A et B, vSan va effectuer la lecture sur les disques capacitifs du disk group 2 de l’hôte A via sa carte contrôleur HBA interne sans traverser le réseau. Le 2nd bloc de données étant en cache sur l’hôte B, vSan effectue la lecture sur le disque SSD du Disk Group 1 de l’hôte ESXi B via le réseau.
  5. Le 1er bloc de données va être placé dans le disque de cache SSD du Disk Group2 de l’hôte ESXi A.
  6. L’opération de lecture du 1er puis du 2nd bloc de données est remontée à la VM.

Deux opérations de lecture, sur des blocs de données (version All Flash):

Deux opérations de lecture, sur des blocs de données (version All Flash):

La VM s’exécute sur l’hôte ESXi A.

La politique Number Of Failures To Tolerate est configurée 1

ESXi A est propriétaire de l’objet VMDK1.

ESXi B est propriétaire de l’objet réplica VMDK1′.

  1. La VM effectue la lecture du 1er bloc de données dans son disque VMDK1.
  2. vSan vérifie la présence du 1er bloc puis du 2nd bloc demandé sur l’un des hôtes ESXi possédant l’objet VMDK1 ou le réplica de l’objet VMDK1′ en round-robin.
  3. Le 1er bloc de données demandé est trouvé dans le disk group de l’hôte ESXi A. vSan effectue ses lectures en round-robin par block de 1MB (Lecture de 1MB sur l’hôte A, lecture de 1MB sur l’hôte B). Dans notre cas l’hôte A va être sélectionné.

    Le 2nd bloc de données est trouvé dans le Disk Group1 de l’hôte ESXi B

  4. Pour le 1er bloc de données, vSan va effectuer la lecture sur les disques capacitifs du disk group 2 de l’hôte A via sa carte contrôleur HBA interne sans traverser le réseau. Pour le 2nd bloc de données, vSan effectue la lecture sur les disques capacitifs du Disk Group 1 de l’hôte ESXi B via le réseau.
  5. L’opération de lecture du 1er puis du 2nd bloc de données est remontée à la VM.

Lecture d’un bloc de données en cache après vMotion de la VM (version Hybrid):

Lecture d'un bloc de données en cache après vMotion de la VM (version Hybrid):

La VM est déplacée par un vMotion de l’hôte ESXi A vers ESXi C

La politique Number Of Failures To Tolerate est configurée 1

ESXi A est propriétaire de l’objet VMDK1.

ESXi B est propriétaire de l’objet réplica VMDK1′.

  1. La VM effectue la lecture d’un bloc de données dans son disque VMDK1
  2. vSan vérifie la présence en cache du bloc demandé sur l’un des hôtes ESXi possédant l’objet VMDK1 ou le réplica de l’objet VMDK1′ via le réseau.
  3. Le bloc de données est trouvé sur le disque SSD de cache du disk group 2 de l’hôte A.
  4. vSan effectue la lecture sur les disques SSD du Disk Group 2 de l’hôte ESXi A
  5. L’information est remontée à la VM.

Lecture d’un bloc de données après vMotion de la VM (version All Flash):

Lecture d'un bloc de données après vMotion de la VM (version All Flash):

La VM est déplacée par un vMotion de l’hôte ESXi A vers ESXi C

La politique Number Of Failures To Tolerate est configurée 1

ESXi A est propriétaire de l’objet VMDK1.

ESXi B est propriétaire de l’objet réplica VMDK1′.

  1. La VM effectue la lecture d’un bloc de données dans son disque VMDK1
  2. vSan vérifie la présence du bloc demandé sur l’un des hôtes ESXi possédant l’objet VMDK1 ou le réplica de l’objet VMDK1′ via le réseau.
  3. Le bloc de données est trouvé sur le disk group 2 de l’hôte ESXi A.
  4. vSan effectue la lecture sur les disques SSD du Disk Group 2 de l’hôte ESXi A
  5. L’information est remontée à la VM.

twitterlinkedin
Publié dans Stockage, Virtualisation, Vmware vSphere Tagués avec : , , , ,

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*