Pour interpréter une latence de stockage, il faut savoir où atterrit une écriture, quand elle est acquittée et où une lecture va chercher ses données. Ce billet suit le trajet d’une I/O dans AOS, étape par étape, d’après la Nutanix Bible.
Le point d’entrée : Stargate
L’invité utilise son pilote habituel (virtio-scsi sur AHV), l’hyperviseur parle à la CVM locale par un protocole de stockage standard (iSCSI, NFS, SMBv3), et dans la CVM, « the Stargate process is responsible for handling all storage I/O requests ». Les contrôleurs de stockage sont passés en direct à la CVM : l’accès aux disques contourne l’hyperviseur. Les autres services de la CVM sont décrits dans ce billet.
Le trajet d’une écriture
À l’arrivée, un « write characterizer » décide si l’écriture passe par l’OpLog ou va directement à l’Extent Store.
Cas général : l’OpLog. L’OpLog est un journal, une zone de transit conçue pour absorber les rafales d’écritures aléatoires, les regrouper puis les drainer séquentiellement vers l’Extent Store. Il vit sur le tier SSD, dont tous les périphériques portent une part.
L’écriture n’est acquittée qu’après réplication synchrone vers l’OpLog d’autres CVM : une ou deux selon le RF, précise le chapitre Data Resilience de la Bible. Un checksum est calculé et stocké dans les métadonnées. Les pairs sont choisis par « episode » de 1 Go de données du vdisk, selon leur temps de réponse, leur charge et leur remplissage ; tous les nœuds participent pour éviter les nœuds chauds.
Exception 1 : le séquentiel. Une écriture est jugée séquentielle quand plus de 1,5 Mo d’écritures sont en attente sur un vdisk (gflag vdisk_distributed_oplog_skip_min_outstanding_write_bytes). Elle contourne alors l’OpLog et va directement à l’Extent Store. Une grosse I/O isolée ne suffit pas : « All other IOs, including those which can be large (e.g. >64K) will still be handled by the OpLog ».
Exception 2 : l’aléatoire soutenu. Avec AES (Autonomous Extent Store), les écritures aléatoires soutenues contournent aussi l’OpLog et vont directement à l’Extent Store ; les rafales gardent le trajet OpLog puis sont drainées. La Bible ne précise pas dans quelles conditions AES est actif sur un cluster.
écriture
└─ Stargate (CVM locale) ─ write characterizer
├─ rafale aléatoire : OpLog local (SSD) + réplication OpLog sur d'autres CVM ─ ack
│ └─ drain séquentiel ─> Extent Store
└─ séquentiel (> 1,5 Mo en attente) ou aléatoire soutenu (AES) ─> Extent Store
L’Extent Store
C’est le stockage persistant d’AOS, sur tous les tiers (NVMe, SSD, HDD). La donnée y arrive soit drainée de l’OpLog, soit en direct si elle est séquentielle ou soutenue. L’unité logique est l’extent de 1 Mo ; l’unité physique, l’extent group de 1 ou 4 Mo.
Sur hybride, quand l’occupation globale du tier dépasse un seuil (curator_tier_usage_ilm_threshold_percent, 75 par défaut), ILM (Intelligent Lifecycle Management) descend vers le HDD des données choisies par date de dernier accès. En full-flash, un seul tier, pas d’ILM.
Le trajet d’une lecture
La lecture suit trois étapes :
- OpLog : une donnée pas encore drainée est lue directement dans l’OpLog.
- Unified Cache : cache de lecture en RAM de la CVM, alimenté par blocs de 4 Ko. Une première lecture place la donnée dans le pool « single-touch », une seconde la promeut dans le pool « multi-touch » ; l’éviction suit un LRU.
- Extent Store : faute de cache, la donnée est lue sur disque et placée dans le pool single-touch.
Quand la donnée lue n’est pas sur le nœud local, par exemple après une migration de VM, c’est la localité des données qui joue : voir ce billet.
Ce qu’il faut retenir
- Une écriture aléatoire en rafale est acquittée après écriture dans l’OpLog local et réplication synchrone dans l’OpLog d’autres CVM.
- Au-delà de 1,5 Mo d’écritures en attente sur un vdisk, l’écriture est séquentielle et contourne l’OpLog ; avec AES, l’aléatoire soutenu aussi.
- Une lecture interroge l’OpLog, puis l’Unified Cache en RAM, puis l’Extent Store.
- Sur hybride, ILM descend vers le HDD des données choisies par date de dernier accès, au-delà de 75 % d’occupation du tier par défaut.
In English
Where a write lands, when it is acknowledged, why sequential I/O bypasses the OpLog, and in which order a read looks for its data. The AOS I/O path step by step: a random write is acknowledged only after synchronous replication to the OpLog of other CVMs, and reads are served by the OpLog, then the Unified Cache, then the Extent Store.
Sources & vérification
Relevé sur : Documentation publique Nutanix (Nutanix Bible), relevé 2026-10
- Nutanix Bible, Data I/O Path nutanixbible.com
- Nutanix Bible, Data Resilience and HA nutanixbible.com
- Nutanix Bible, AOS Architecture (Storage Tiering) nutanixbible.com
