Aller au contenu
6 minutes

Data locality : ce qui se passe après la migration à chaud d’une VM

Écritures locales tout de suite, lectures distantes pendant un temps, relocalisation déclenchée par des seuils précis. Le mécanisme de data locality d’AOS et ce qu’il change pour la latence.

Data locality : ce qui se passe après la migration à chaud d'une VM

Après une migration à chaud, une VM tourne sur un nœud qui ne porte pas forcément ses données. AOS ne déplace jamais ses disques en bloc : il rapatrie ce qui est lu, selon des seuils précis qu’il vaut mieux connaître avant d’interpréter une courbe de latence.

Le principe

Sur Nutanix, la CVM (Controller VM) de chaque hôte sert toutes les lectures et écritures des VM qui tournent à côté d’elle. En régime établi, les données d’une VM sont sur les disques de sa CVM locale, et la Nutanix Bible précise que les lectures sont alors servies localement « in most cases », sans toucher le réseau.

Quand la VM change d’hôte, que ce soit par migration ou lors d’un événement HA, c’est la CVM du nouvel hôte qui prend le relais.

Les écritures : locales tout de suite

Dès l’arrivée sur le nouvel hôte, les écritures se font localement et sont répliquées de façon synchrone vers d’autres CVM avant acquittement, comme détaillé dans le chemin d’une écriture et l’OpLog.

Les lectures : distantes, puis relocalisées

Les données écrites avant la migration sont restées sur l’ancien nœud. La CVM locale transfère ces lectures à la CVM distante. AOS détecte ces I/O venues d’un autre nœud et rapatrie les données en arrière-plan, uniquement à la lecture, pour ne pas saturer le réseau.

La Bible décrit deux mécanismes distincts :

Cache localityExtent group locality
Ce qui bougedonnées copiées dans le cache unifié du Stargate localextent groups migrés dans l’Extent Store local
Granularité4 Koextent group
Déclencheurtemps réel, si la CVM locale possède le vDisk3 touches aléatoires ou 10 séquentielles en 10 minutes, sauf réplique déjà locale

Deux précisions comptent pour le délai :

  • Le jeton du vDisk. Le cache exige la propriété du vDisk. L’ancien Stargate ne rend le jeton qu’après avoir vu des I/O distantes pendant plus de 300 secondes ; le Stargate local le prend alors. Avant, le cache reste côté ancien hôte.
  • L’échantillonnage. La relocalisation des extent groups est échantillonnée : plusieurs lectures dans un même échantillon de 10 secondes ne comptent que pour une touche.

Josh Odgers ajoutait sur son blog, en 2017, deux points : les données lues froides ne sont pas relocalisées, et quand un extent l’est, une des répliques redondantes est marquée pour suppression. La relocalisation ne laisse donc pas une copie des données en plus. Selon lui, elle consomme autant de réseau qu’une simple lecture distante.

L’effet sur la latence

Juste après une migration, une partie des lectures traverse le réseau vers une autre CVM tant que les seuils ne sont pas atteints, et le cache reste côté ancien hôte pendant plus de 300 secondes. Les données rarement lues peuvent rester distantes durablement.

Odgers indiquait en 2017 qu’à partir d’AOS 4.5, AOS mesure la latence locale et distante et peut servir une lecture depuis la réplique distante quand elle répond plus vite, un gain qu’il disait surtout visible sur les tiers SATA.

Sur un cluster hybride, ces lectures distantes peuvent finir sur des HDD : c’est le mécanisme détaillé dans maintenance d’un nœud, hybride contre full-flash. Pour établir qu’une latence vient bien du stockage, voir mesurer avant d’accuser le stockage.

L’exception : les disques lus par beaucoup de VM

Un disque de base lu par beaucoup de VM, comme une image VDI, ne peut être local partout. AOS le traite à part avec les shadow clones, décrits dans ce billet.

Ce qu’il faut retenir

  • Après une migration, les écritures sont locales immédiatement, mais toujours répliquées de façon synchrone vers d’autres CVM.
  • Les lectures de données anciennes passent par la CVM distante jusqu’à leur relocalisation, qui n’a lieu qu’à la lecture.
  • Seuils : 3 touches aléatoires ou 10 séquentielles en 10 minutes par extent group, plus de 300 secondes d’I/O distantes pour le jeton du vDisk.
  • Les données froides restent distantes : la localité se reconstruit sur le jeu actif, pas sur tout le disque.

In English

Writes become local immediately, reads stay remote for a while, and relocation is triggered by precise thresholds. How AOS data locality works after a live migration and what it changes for latency: an extent group is relocated after 3 random or 10 sequential touches within 10 minutes, and data read cold is not relocated.

Sources & vérification

Relevé sur : Documentation publique Nutanix (Nutanix Bible) et blog de Josh Odgers, relevé 2026-10

Comment les billets sont vérifiés et corrigés