Hyper-V 可扩展交换机保存操作

停止、保存或实时迁移 Hyper-V 子分区时,将保存分区的运行时状态。 在保存操作期间,Hyper-V 可扩展交换机扩展可以保存有关可扩展交换机网络适配器的运行时数据, (NIC) 。

在 Hyper-V 子分区上执行保存操作时,可扩展开关接口会通知扩展有关该操作的信息。 通过以下对象标识符 (OID) 请求通知扩展:

OID_SWITCH_NIC_SAVE
可扩展交换机接口向可扩展交换机的协议边缘发出信号,以在可扩展交换机 NIC 的保存操作期间发出此 OID。 当它处理此 OID 请求时,扩展将返回 NIC 的运行时数据。 保存运行时数据后,将通过 OID_SWITCH_NIC_RESTORE的 OID 集请求还原。

当它收到 OID_SWITCH_NIC_SAVE 方法请求时,扩展可以执行以下操作之一:

  • 如果扩展具有要保存的运行时数据,它将初始化 NDIS_SWITCH_NIC_SAVE_STATE 结构,并设置各种成员(如 ExtensionId 成员)以标识自身及其要保存的数据。 该扩展还会将数据保存在 NDIS_SWITCH_NIC_SAVE_STATE 结构中,从结构开头开始的 SaveDataOffset 字节,然后使用 NDIS_STATUS_SUCCESS 完成 OID 方法请求。

  • 如果 NDIS_SWITCH_NIC_SAVE_STATE 结构未提供足够的缓冲区大小(在 NDIS_OBJECT_HEADER Size 成员中枚举来保存运行时状态),则扩展会将方法结构的 BytesNeeded 字段设置为NDIS_SIZEOF_NDIS_SWITCH_NIC_SAVE_STATE_REVISION_1加上保存数据所需的缓冲区量, 并使用 NDIS_STATUS_BUFFER_TOO_SHORT 完成 OID。 OID 将以所需的大小重新颁发。

  • 如果扩展没有要保存的运行时数据,则必须调用 NdisFOidRequest。 这会将 OID 方法请求转发到可扩展交换机驱动程序堆栈中的基础扩展。 有关此过程的详细信息,请参阅 在 NDIS 筛选器驱动程序中筛选 OID 请求

有关此 OID 请求的详细信息,请参阅 处理OID_SWITCH_NIC_SAVE请求

OID_SWITCH_NIC_SAVE_COMPLETE
可扩展交换机接口向可扩展交换机的协议边缘发出信号,以在可扩展交换机 NIC 的运行时数据的保存操作完成后发出此 OID。

此 OID 请求通知扩展,仅对指定的可扩展交换机 NIC 完成了保存操作。

有关此 OID 请求的详细信息,请参阅 处理OID_SWITCH_NIC_SAVE_COMPLETE请求

在保存运行时数据期间,可扩展交换机的协议边缘会发出 OID_SWITCH_NIC_SAVE 的 OID 请求,OID_SWITCH_NIC_SAVE_COMPLETE Hyper-V 子分区的网络接口已连接。 如果停止或实时迁移多个 Hyper-V 子分区,协议边缘会针对每个网络接口连接发出单独的OID_SWITCH_NIC_SAVE集和OID_SWITCH_NIC_SAVE_COMPLETE请求。

注意 可扩展交换机的协议边缘不会交错保存同一 NIC 的运行时数据。 仅当上一个保存操作在同一 NIC 上完成之后,协议边缘才会为 NIC 启动运行时数据保存操作。 但是,协议边缘可能会在另一个 NIC 执行另一个保存操作时启动 NIC 的保存操作。 因此,我们强烈建议扩展以非交错方式执行保存操作。 例如,扩展不应假定在为另一个 NIC 完成正在进行的保存操作之前,无法在另一个 NIC 上启动新的保存操作。