EVMS définit une architecture en couches où les plug-ins de chaque couche créent des abstractions de la couche ou des couches en dessous. EVMS permet également à la plupart des plug-ins de créer des abstractions d'objets au sein de la même couche. Voici une liste de définitions de ces couches, du bas vers le haut.
La première (plus basse) couche se compose de gestionnaires de périphériques. Ces plug-ins communiquent avec les pilotes de périphériques matériels pour créer les premiers objets EVMS. Actuellement, tous les périphériques sont gérés par un plug-in unique. Les versions futures d'EVMS pourraient avoir besoin de gestionnaires de périphériques supplémentaires pour la gestion de périphériques réseau (par exemple pour gérer des disques sur un réseau de zone de stockage [storage area network, SAN]).
La seconde couche se compose de gestionnaires de segments. Ces plug-ins gèrent la segmentation ou le partitionnement des unités de disque. Les composants du moteur peuvent remplacer les programmes de partitionnement tels fdisk et Disk Druid, et EVMS utilise Device Mapper pour remplacer le code de partitionnement de disque intra noyau. Les gestionnaires de segment peuvent également être "empilés", c'est-à-dire qu'un gestionnaire de segment peut prendre en entrée la sortie d'un autre gestionnaire de segment.
EVMS fournit les gestionnaires de segments suivants : DOS, GPT, System/390® (S/390), Cluster, BSD, Mac, et BBR. D'autres plug-ins de gestionnaires de segments peuvent être ajoutés pour prendre en charge d'autres plans de partitionnement.
La troisième couche se compose de gestionnaires de zone. C'est à ce niveau que se mettent les plug-ins qui assurent la compatibilité avec les structures de gestion de volume que l'on trouve sous Linux et d'autres systèmes d'exploitation. Les gestionnaires de zone sont prévus pour façonner les systèmes qui fournissent une abstraction logique au-dessus des disques ou partitions.
Comme les gestionnaires de segment, les gestionnaires de zone peuvent également être empilés. Par conséquent, le(s) objet(s) en entrée d'un gestionnaire de zone peuvent être des disques, des segments ou d'autres zones.
Il y a actuellement dans EVMS trois plug-ins pour la gestion de zones : Linux LVM, LVM2, et Multi-Disk (MD).
Le plug-in Linux LVM fournit la compatibilité avec Linux LVM et permet la création de groupes de volume (connus dans EVMS sous le nom de conteneurs [containers]) et de volumes logiques (connus dans EVMS sous le nom de zones [regions]).
Le plug-in LVM2 fournit la compatibilité avec le nouveau format de volume introduit par les outils de LVM2 depuis Red Hat. Ce plug-in ressemble beaucoup au plug-in LVM en terme de fonctionnalités. La différence principale réside dans le nouveau format amélioré de métadonnées.
Le plug-in Multi-Disk pour RAID fournit les niveaux RAID logiciels suivants : linéaire, 0, 1, 4 et 5. MD est un plug-in qui présente à l'affichage quatre gestionnaires de zone parmi lesquels vous pouvez choisir.
La couche suivante se compose des fonctionnalités EVMS. C'est dans cette couche que sont implémentées les nouvelles fonctionnalités EVMS natives. Les fonctionnalités EVMS peuvent être construites sur n'importe quel objet dans le système, y compris les disques, segments, zones et autres objets de fonction. Toutes les fonctionnalités EVMS partagent un type de métadonnées commun à tous, ce qui rend la découverte d'objets de fonction bien plus efficace, et la récupération d'objets de fonction cassés bien plus sûre. Trois fonctionnalités sont actuellement disponibles dans EVMS : les liens de disque, la réallocation des blocs défectueux [Bad Block Relocation] et la prise d'instantanés.
Les liens de disque permettent de concaténer linéairement en un seul objet un nombre quelconque d'objets. Un volume utilisant le lien de disque peut être étendu en ajoutant un autre objet de stockage à la fin, ou réduit par suppression du dernier objet.
La réallocation des blocs défectueux (BBR) surveille son chemin d'entrée/sortie et détecte les erreurs d'écriture (celles-ci pouvant être causées par un disque endommagé). Lorsqu'un tel dysfonctionnement se produit, les données de cette requête sont stockées dans un nouvel emplacement.
La fonctionnalité de prise d'instantané fournit un mécanisme pour créer une copie "figée" d'un volume à un moment donné bien précis, sans avoir à déconnecter ce volume. Ceci est utile pour réaliser des sauvegardes sur un système en cours de fonctionnement. Les instantanés marchent avec n'importe quel volume (EVMS ou compatible), et peut utiliser n'importe quel autre objet disponible comme emplacement de sauvegarde. Après la création d'un instantané et sa transformation en volume EVMS, les écritures sur le volume "original" font que le contenu original de cet emplacement est copié vers l'objet de stockage de l'instantané. Les lectures du volume instantané ont l'air de provenir de l'original tel qu'il était au moment de la création de l'instantané.
Les modules d'interface de système de fichiers [File System Interface Modules (FSIM)] fournissent la coordination avec les systèmes de fichiers pendant certaines opérations de gestion de volume. Par exemple, lors de l'agrandissement ou de la réduction d'un volume, le système de fichiers doit également être agrandi ou réduit à la taille appropriée. L'ordre est également important dans cet exemple ; un système de fichiers ne peut être agrandi avant le volume, et un volume ne peut être réduit avant le système de fichiers. Les FSIM permettent à EVMS d'assurer cette coordination et cet ordonnancement.
Les FSIM exécutent également des opérations de système de fichiers depuis l'une des interfaces utilisateur d'EVMS. Par exemple, un utilisateur peut créer de nouveaux systèmes de fichiers et vérifier les systèmes de fichiers existant en interagissant avec les FSIM.
Les modules d'interface de gestionnaire de cluster [Cluster Manager Interface Modules], également connus sous le nom de EVMS Clustered Engine (ECE), sont interfacés avec le gestionnaire de cluster local installé sur le système. L'ECE fournit une API ECE standardisée pour le moteur, tout en cachant au moteur les détails du gestionnaire de clusters.