EVMS 定义了一个分层架构,其中每一层的插件都创建其下方一层或多层的抽象。EVMS 还允许大多数插件创建同一层内对象的抽象。以下列表从底层到顶层定义了这些层。
第一层(底层)由设备管理器组成。这些插件与硬件设备驱动程序通信以创建第一个 EVMS 对象。目前,所有设备都由单个插件处理。未来版本的 EVMS 可能需要额外的设备管理器来进行网络设备管理(例如,管理存储区域网络 (SAN) 上的磁盘)。
第二层由段管理器组成。这些插件处理磁盘驱动器的分段或分区。Engine 组件可以替代分区程序,例如 fdisk 和 Disk Druid,并且 EVMS 使用 Device Mapper 来替代内核中的磁盘分区代码。段管理器也可以“堆叠”,这意味着一个段管理器可以将另一个段管理器的输出作为输入。
EVMS 提供了以下段管理器:DOS、GPT、System/390� (S/390)、Cluster、BSD、Mac 和 BBR。可以添加其他段管理器插件以支持其他分区方案。
第三层由区域管理器组成。这一层为插件提供了一个位置,以确保与 Linux 和其他操作系统中现有的卷管理方案兼容。区域管理器旨在模拟在磁盘或分区之上提供逻辑抽象的系统。
与段管理器类似,区域管理器也可以堆叠。因此,区域管理器的输入对象可以是磁盘、段或其他区域。
EVMS 目前有三个区域管理器插件:Linux LVM、LVM2 和 Multi-Disk (MD)。
Linux LVM 插件提供与 Linux LVM 的兼容性,并允许创建卷组(在 EVMS 中称为容器)和逻辑卷(在 EVMS 中称为区域)。
LVM2 插件提供与 Red Hat 的 LVM2 工具引入的新卷格式的兼容性。此插件在功能上与 LVM 插件非常相似。主要区别在于新的、改进的元数据格式。
用于 RAID 的 Multi-Disk (MD) 插件在软件中提供 RAID 级别 linear、0、1、4 和 5。MD 是一个插件,显示为四个您可以选择的区域管理器。
下一层由 EVMS 功能组成。这一层是实现新的 EVMS 原生功能的地方。EVMS 功能可以构建在系统中的任何对象之上,包括磁盘、段、区域或其他功能对象。所有 EVMS 功能都共享一种通用的元数据类型,这使得功能对象的发现更加高效,并且损坏的功能对象的恢复更加可靠。EVMS 目前有三个可用功能:驱动器链接、坏块重定位和快照。
驱动器链接允许将任意数量的对象线性连接在一起成为一个单一对象。驱动器链接的卷可以通过在末尾添加另一个存储对象来扩展,或者通过删除最后一个对象来缩小。
坏块重定位 (BBR) 监视其 I/O 路径并检测写入失败(这可能是由磁盘损坏引起的)。如果发生此类故障,则来自该请求的数据将存储在新位置。BBR 跟踪此重映射。对该位置的额外 I/O 将重定向到新位置。
快照功能提供了一种在单个时间点创建卷的“冻结”副本的机制,而无需使该卷脱机。这对于在活动系统上执行备份非常有用。快照适用于任何卷(EVMS 或兼容性),并且可以使用任何其他可用对象作为后备存储。创建快照并将其制作为 EVMS 卷后,对“原始”卷的写入会导致该位置的原始内容被复制到快照的存储对象。对快照卷的读取看起来像是来自创建快照时的原始卷。
文件系统接口模块 (FSIM) 在某些卷管理操作期间提供与文件系统的协调。例如,当扩展或缩小卷时,文件系统也必须扩展或缩小到适当的大小。此示例中的排序也很重要;文件系统不能在卷之前扩展,并且卷不能在文件系统之前缩小。FSIM 允许 EVMS 确保这种协调和排序。
FSIM 还从 EVMS 用户界面之一执行文件系统操作。例如,用户可以通过与 FSIM 交互来创建新的文件系统并检查现有的文件系统。
集群管理器接口模块,也称为 EVMS 集群引擎 (ECE),与系统上安装的本地集群管理器接口。ECE 向 Engine 提供标准化的 ECE API,同时向 Engine 隐藏集群管理器详细信息。