目录

简介

先决条件

要求

使用的组件

安装程序应用问题

谨慎使用安装程序应用

安装程序应用程序日志位置

安装程序应用迁移管理网卡

管理和VSM的逻辑交换机并非在所有交换机上创建

安装程序应用程序不使用基于群集的存储

安装程序应用创建的VSM配置问题

SCVMM无法连接到VSM

确认已安装提供程序

使用控制面板卸载/重新安装提供程序

检查分机合规性

验证VSM和SCVMM之间的连接

虚拟以太网模块(VEM)问题

Hyper-V主机未安装到N1KV

VSM上未显示VEM模块

主机重新启动后，所有VETH端口都关闭

找不到兼容交换机错误

其他问题和有用命令

VSM不能嵌套在Hyper-V上

虚拟机队列(VMQ)

使用Vemcmd查看VMQ资源

有用的PowerShell命令

Vemcmd和Vemlog位置

通过注册表验证物理适配器清单

由于临时模板，无法删除N1KV对象

分配给N1KV的VM接收逻辑交换机合规性错误

简介

本文档介绍在Microsoft(MS)Hyper-V服务器上排除Cisco Nexus 1000V(N1KV)系列交换机故障时使用的步骤。在Hyper-V上的实施与在ESXi上的实施有很大不同，因此会出现一些经常遇到的问题；因此，创建了此文档。

本文档中描述的大部分信息直接来自工程新产品介绍(NPI)，以及测试期间遇到的问题。本文档本质上是动态的，将相应更新。

先决条件

要求

Cisco 建议您了解以下主题：

- N1KV系列交换机

- MS Hyper-V服务器

使用的组件

本文档不限于特定的软件和硬件版本。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

安装程序应用问题

安装程序应用程序存在许多问题，本节介绍最常见的问题。

谨慎使用安装程序应用

以下是您应谨慎使用此应用程序的一些原因：

- 它等待的时间不够长，无法让虚拟管理引擎模块(VSM)在许多平台上启动，而且经常会失败。

- 它将管理(mgmt)接口移至MS逻辑交换机，并且不会通知您，即使您可能不希望管理接口移动。

- 创建的逻辑交换机不能使用组接口。这意味着交换机或管理接口没有冗余。

- 您不能简单地将另一个网络接口卡(NIC)添加到逻辑交换机中，以便将其组合；您必须使用组接口创建新交换机，并将所有设备移动以获得冗余。

- 应用无法识别您在上安装VSM的主机是否属于群集。这意味着虚拟磁盘安装在本地存储中，而不是群集存储中。

- 应用创建具有系统网络集的网络上行链路。每个网段都必须有系统网络集。这是一个主要漏洞，请注意。

安装程序应用程序日志位置

安装程序应用程序仅用于绿地环境。请勿尝试在先前建立的配置中使用应用。要验证安装程序是否出错，请导航至C:>用户> <用户名> > AppData >本地>临时> 2 > Nexus1000vInstaller_xxxxxxx.txt，然后检查日志。

安装程序应用迁移管理网卡

安装程序应用的默认（且仅限）行为是显示和使用管理接口所连接的物理NIC。运行安装程序应用程序时，只能选择一个NIC - mgmt NIC。

安装程序应用：

1. 创建MS逻辑交换机

2. 将具有VSM的两台主机添加到逻辑交换机

3. 将管理NIC迁移到逻辑交换机上的虚拟nNIC

4. 将VSM网络连接添加到该逻辑交换机

此图显示了一台主机现在如何分配MS逻辑交换机和传输管理流量的虚拟NIC:

在查看所创建的逻辑交换机时，您可以看到上行链路是使用No Uplink Team定义的。这是一个问题，因为您不能向此交换机添加其他网卡或组网卡。创建交换机后，您不能更改Team类型。此外，安装程序应用程序不允许您添加组接口。

要将交换机更改为成组，您必须将其删除，并使用组合集将其重新添加。这是可能的，但很乏味。您需要冗余，因此，如果它不成组，则可能会出现问题。

管理和VSM的逻辑交换机并非在所有交换机上创建

这是另一个问题，因为VSM仅与这两台主机关联。因此，实时迁移和思科家庭代理(HA)仅限于两台主机。您可以选择将其他Hyper-V主机迁移到已创建的MS逻辑交换机，但安装程序应用程序不会自动完成该交换机。

安装程序应用程序不使用基于群集的存储

创建VSM虚拟机(VM)设置时，“可用性”的值为“低”。MS仅允许在基于群集的存储中包含可用性值为“高”的虚拟机。这会将VSM虚拟磁盘(VD)和VM信息放置到Hyper-V主机的本地存储上。同样，这会限制VSM虚拟机的实时迁移和HA。

注意：遗憾的是，创建VSM后，未发现更改其可用性设置的过程。

安装程序应用创建的VSM配置问题

安装程序应用程序在VSM上创建非常基本的配置，并将其中一些配置导入System Center Virtual Machine Manager(SCVMM)。

应用从N1KV端执行以下操作：

- 创建默认逻辑网络

- 创建默认网段池

- 创建默认上行链路网络

- 使用通道组mac pinning创建默认eth端口配置文件

- 为无限制创建默认veth port-profile

- 创建默认IP池模板

- 在SCVMM中创建N1KV逻辑交换机

应用程序不仅在VSM上创建这些设置，而且在创建逻辑交换机时会将此信息填充到SCVMM中。

应用在配置方面表现良好，但上行链路网络有问题。网络上行链路的创建方式如下：

nsm network uplinkn1kv_uplink_network_1_VSM-install1

import port-profile n1kv_uplink_network_policy_VSM-install1

allow network segment pool n1kv_network_segment_pool_VSM-install1

native network segment n1kv_vmaccess_1_VSM-install1

system network uplink

publish network uplink

存在系统网络上行链路，这会导致问题。如果您有带系统网络上行链路设置的上行链路，则使用该上行链路的所有网段和端口配置文件也必须是系统。这意味着您最多只能有32个网段能够使用该上行链路。

这是否是问题尚不明确，但是，让我们展示一个示例，说明如果为VLAN 152构建新的网段和IP池模板，会发生什么情况:

VSM-install1(config)# nsm ip pool template vlan-152

VSM-install1(config-ip-pool-template)# ip address 192.168.152.2 192.168.152.253

VSM-install1(config-ip-pool-template)# network 192.168.152.0 255.255.255.0

VSM-install1(config-ip-pool-template)# default-router 192.168.152.1

VSM-install1(config)# nsm network segment segment-vlan-152

VSM-install1(config-net-seg)# switchport mode access

VSM-install1(config-net-seg)# switchport access vlan 152

VSM-install1(config-net-seg)# ip pool import template vlan-152

VSM-install1(config-net-seg)# member-of network segment pool n1kv_network_

segment_pool_VSM-install1

VSM-install1(config-net-seg)# publish network segment

VSM-install1(config-net-seg)#

刷新SCVMM N1KV扩展，并为您创建的网段添加VM网络。当您尝试将VM分配到新VM网络时，会出现以下错误：

Error (12700)

Failed while applying switch port settings 'Ethernet Switch Port Profile Settings'

on switch 'n1kv_VSM-install1': A device attached to the system is not functioning.

(0x8007001F). Unknown error (0x8005)

Error (26908)

Virtual switch on host to which the virtual network adapter is to be connected

(n1kv_VSM-install1) is a non compliant logical switch instance

导致这些错误的原因是网络上行链路传输系统网络，而网段不传输。您有两个选项：创建没有系统网络的新网络上行链路，或将系统网络添加到新网段。

SCVMM无法连接到VSM

Hyper-V与ESXi的VSM和SCVMM之间的连接不同。在Hyper-V解决方案中，SCVMM与我们的(Nexus 1000V)API对话。这意味着从SCVMM主机建立和维护连接。在VSM上使用show svs connection命令时，它不显示任何内容；此解决方案中没有SVS连接。

SCVMM还每三十分钟轮询一次VSM。这意味着，如果要立即看到VSM的更改显示在SCVMM上，则必须强制刷新。

确认已安装提供程序

Hyper-V的提供程序类似于ESXi上N1KV的插件。区别在于，每个VSM都没有唯一的提供商。您只需运行一次提供程序安装。这将向SCVMM填充了解如何与VSM通信所需的信息。

提供商不特定于每个VSM。提供程序已在Windows注册表中注册。您可以在注册表中搜索VSEM，或导航至以下位置：

如果处于无法删除提供程序的位置，则可以删除注册表中的条目并重新启动SCVMM服务。

注意注册表项中模块的位置。提供程序可动态加载库(DLL)应安装在c:\Program Files\Cisco\Nexus1000V中，以及用于安装提供程序的powershell脚本。确保DLL存在。

注意：如果DLL损坏，您必须将其删除并重新安装。

使用控制面板卸载/重新安装提供程序

通过从Hyper-V Server 2012控制面板卸载程序，可完成提供程序的卸载。要重新安装提供程序，请双击提供程序安装程序。

检查分机合规性

确保提供程序扩展在SCVMM中处于活动状态且符合。导航至“设置”>“配置提供程序”。验证Cisco Systems Nexus 1000V扩展是否处于活动状态。这表示扩展由SCVMM使用。

验证VSM和SCVMM之间的连接

SCVMM与VSM通信，因此必须从SCVMM主机进行故障排除。

检验：

- 您可以从SCVMM主机ping VSM。

- 您可以通过Web浏览器浏览到N1KV应用编程接口(API)。

如果无法ping通VSM，则验证Windows防火墙并检查网络连接问题。无需VSM和SCVMM必须位于同一子网。

要验证API，请使用Internet Explorer(IE)并浏览到包含以下字符串的VSM REST API:http://<vsm-ip>/api/n1kv。

您应收到以下输出：

如果无法到达API，则验证：

- SCVMM主机上未配置Internet代理。如果在IE中定义了代理，则SCVMM会继承代理。检查IE中的Internet设置以验证代理是否已定义。您可能需要为VSM添加例外。

- Web服务器和API可在VSM上访问。验证VSM上是否启用了http-server，以及是否启用了阻止端口80流量的防火墙。

注意：目前，VSM处理HTTP或HTTPS的API调用，但SCVMM仅限于HTTP。

虚拟以太网模块(VEM)问题

Hyper-V上的N1KV仅使用L3控制。无法通过L2控制控制Hyper-V。Hyper-V上的配置L3控制比VMware上的类似配置简单得多。VEM无需专用网卡；VSM直接与Hyper-V Server 2012管理NIC通信。无需将管理NIC连接到VEM模块，这意味着您不需要L3控制的特殊veth端口配置文件。

VEM的安装也更简单。没有带SCVMM的VMware Update Manager(VUM)组件。安装扩展组件的功能直接内置到SCVMM中。如果VEM未安装在Hyper-V主机上，则SCVMM会自动将VEM复制并安装在目标Hyper-V主机上。如果要手动安装VEM，只需双击主机上的VEM安装程序应用即可。卸载也是从“控制面板”中删除的一个简单程序。

Hyper-V主机未安装到N1KV

您可能会遇到的常见错误是Hyper-V主机未通过SCVMM添加到N1KV。要解决此问题，必须进行多次验证。

以下是VEM安装失败时在SCVMM中可能看到的典型错误：

检查Hyper-V主机上的旧网络团队

Hyper-V主机上可能有另一个N1KV的旧团队。如果是，则必须先删除旧组，然后才能将主机添加到N1KV。在Hyper-V主机上，运行Powershell并输入Get-NetSwitchTeam命令。如果出现旧组，则必须使用Remove-NetSwitchTeam命令将其删除。

PS C:\> Get-NetSwitchTeam

Name: HPV7b9901d8-70b8-4063-b60e-bcd6679384f7 <<<< Logical Switch name is ?HPV?

Members: Ethernet

PS C:\> Remove-NetSwitchTeam -Name HPV7b9901d8-70b8-4063-b60e-bcd6679384f7

网卡和N1KV的最大传输单元(MTU)不匹配

Hyper-V中的MTU设置通过NIC设置按NIC设置。创建团队时，MS要求团队中所有NIC的MTU设置相同。

设置和验证MTU设置有两种方法。第一种是通过网络适配器设置。第二种方法是使用Powershell。以下示例说明了如何使用Powershell来同时获取和设置MTU设置：

PS C:\Program Files (x86)\cisco\Nexus1000V>

Get-NetAdapterAdvancedProperty -RegistryKeyword

*jumbo* -Name ?

"

| Set-NetAdapterAdvancedProperty

-RegistryValue

由于N1KV配置过时/过时，新配置不起作用

您可能会遇到Hyper-V主机上存在不允许将其添加到新配置的过时N1KV配置的问题。通常，当您从SCVMM或Hyper-V管理器中删除旧N1KV时，它会清除配置。但是，在某种情况下，您必须从Hyper-V主机注册表中检查和删除旧的N1KV配置。

输入Regedit命令，并删除此位置的N1KV配置：

HKEY_LOCAL_MACHINE\SYSTEM > CurrentControlSet > Services > VMSMP >

Parameters >SwitchList

删除注册表项后，通过Hyper-V管理器清理并重新启动。

找不到所需的驱动程序错误

当您尝试将Hyper-V主机添加到N1KV时，可能会收到错误：找不到所需的驱动程序或MSI。以下是“作业”窗口中的错误示例：

这通常意味着N1KV VEM代码在SCVMM服务器上不存在。SCVMM服务器必须验证Hyper-V主机上安装的扩展。即使VEM代码已安装在Hyper-V主机上，N1KV VEM安装程序也必须复制到SCVMM服务器上的目录。

验证N1KV VEM安装程序是否已复制到SCVMM服务器上的C:\ProgramData\Switch Extension Drivers。如果文件不存在，则将文件复制到目录，并将Hyper-V主机添加到N1KV。

VSM上未显示VEM模块

在这种情况下，SCVMM中的一切似乎都正常工作，但VSM上从未显示模块。Hyper-V很少发生这种情况，因为配置如此简单。当它真的发生时，几乎没有什么简单的尝试。

在Hyper-V主机上重新启动N1KV进程

使用任务管理器或服务以在出现问题的Hyper-V主机上重新启动N1KV进程。

这是任务管理器中N1KV服务的截图 — 右键单击它，然后选择“重新启动:

VEM团队创建不正确

在SCVMM中创建逻辑交换机时，可以选择“无团队”或“团队”。使用N1KV时，您必须始终选择Team，即使您只连接了一个NIC。

以下屏幕截图说明在何处为逻辑交换机设置“组”设置：

主机重新启动后，所有VETH端口都关闭

Hyper-V在这方面非常有能力；如果它看到VM已通电，且管理发出重新启动，它会暂停VM的状态并重新启动。当系统重新联机时，它会尝试尽快使虚拟机重新联机。这假设您在重新启动之前没有从主机上实时迁移所有虚拟机。

问题是，Hyper-V在VEM流程实际启动之前使虚拟机重新联机。解决方法是设置VM的自动启动延迟。工程建议使用32秒的延迟，以便在Hyper-V尝试恢复所有VM并打开其电源之前，VEM和VSM能够通信。

找不到兼容交换机错误

当您尝试创建或将VM移动到N1KV或将VM从一台主机实时迁移到另一台主机时，可能会收到以下错误：

这是警告消息大于和错误。尽管它在作业屏幕中显示为错误，但它并不表示有严重损坏。问题是SCVMM尝试在自身、VSM和VEM之间保持兼容状态。由于某些原因，SCVMM偶尔会认为状态不同步，并确定对于某些主机，N1KV不合规。在Fabric > Logical switches> <您的N1KV逻辑交换机>下监控各台主机的合规性。

单击屏幕顶部功能区上的Hosts按钮：

如果主机不合规，则必须尝试修复主机。选择不合规的主机，然后单击屏幕顶部的Remediate按钮。这会触发SCVMM在自身、VSM和VEM模块之间同步数据。几分钟后，状态变为Compliant，您不会看到任何错误。

注意：合规性状态并不总是立即更新为合规。请等待一两分钟，如果它不工作，请重试。

其他问题和有用命令

本节介绍Hyper-V上N1KV的几个其他问题和有用命令。

VSM不能嵌套在Hyper-V上

您当前无法在嵌套Hyper-V主机上运行VSM。与ESXi不同，由于某种原因，VSM无法在虚拟Hyper-V主机上运行。工程部门了解问题，但目前优先级较低，因此要了解这一限制。但是，您可以在嵌套ESXi主机上运行VSM，因此这是一个可能的解决方法。

虚拟机队列(VMQ)

VMQ与VMware虚拟机设备队列(VMDQ)几乎相同。VMQ要求物理NIC支持VMQ。NIC为系统上的每个VM创建网络队列，允许网络流量直接从虚拟机监控程序流向虚拟机。这可提高虚拟机的网络性能。

注意：要使用VMQ，系统上的物理NIC必须支持VMQ/VMDQ。当前Cisco VIC适配器不支持VMQ/VMDQ。

用于检查VMQ的Powershell命令

在Hyper-V主机上通过Powershell检查VMQ信息时，使用了两个有用的命令：

- Get-NetAdapterVmq

- Get-NetAdapterVmqQueue

使用Vemcmd命令检查VMQ

以下是用于显示已为其分配队列的VETH信息的主命令：

>vemcmd show vmq allocation

LTL   VSM Port  Phy LTL  Queue id  Team queue id

49     Veth13       17        1                49

18        2              49

50     Veth14       17        2                50

18        3              50

51     Veth16       19        1                51

20        1              51

使用Vemcmd查看VMQ资源

此命令显示有关启用VMQ的物理NIC的信息：

>vemcmd show vmq resources

LTL   VSM Port  Max queues  Free queues

17     Eth3/1          16           10

18     Eth3/2          16           10

19     Eth3/3           8            7

有用的PowerShell命令

有几个Powershell命令可将数据拉入或推入VSM。这允许您将VM的安装和协调脚本化到N1KV。它还允许您提取显示SCVMM和N1KV对象之间关系的更详细信息。

从SCVMM使用Powershell

您必须确保使用具有SCVMM插件的Powershell。实现此目的最简单的方法是从SCVMM控制台启动Powershell:

Get-SCPortClassification 命令

此命令用于查看SCVMM端口分类与其链接到的N1KV端口配置文件之间的链路：

PS C:\Users\Administrator.HYPERV> Get-SCPortClassification

Name              : NexusNoRestrict-2

Description       :

ServerConnection  : Microsoft.SystemCenter.VirtualMachineManager.

Remoting.ServerConnection

ID                : 9f8819c1-8b53-42bd-a6fd-0173804e3194

IsViewOnly        : False

ObjectType        : PortClassification

MarkedForDeletion : False

IsFullyCached     : True

Get-SCVirtualNetworkAdapterExtensionPortProfile 命令

此命令用于查看有关上行链路端口配置文件的信息：

PS C:\Users\Administrator.HYPERV> Get-SCVirtualNetworkAdapterExtensionPortProfile

Name                    : NoRest-unicast-norest

ExternalId              : 308ad66b-7c42-4067-90af-13f7a6e59afe

NetworkEntityAccessType : ExternallyManaged

VirtualSwitchExtension  : n1kv-test

Tags                    : {}

AllowedVNicType         : Both

MaxNumberOfPorts        : 32

MaxNumberOfPortsPerHost : 216

ProfileData             : 0

ServerConnection        : Microsoft.SystemCenter.VirtualMachineManager.

Remoting.ServerConnection

ID                      : 8934a01c-0cb7-4ee2-ae9d-21ff5b26568f

IsViewOnly              : False

ObjectType              : VirtualSwitchExtensionVirtualPortProfile

MarkedForDeletion       : False

IsFullyCached           : True

Get-SCConfigurationProvider命令

此命令用于查看有关SCVMM服务器上加载的提供程序扩展的信息：

PS C:\Users\Administrator.HYPERV> Get-SCConfigurationProvider

Name              : Cisco Systems Nexus 1000V

Type              : VirtualSwitchExtensionManager

Description       : Provider for Cisco Systems Nexus 1000V

Virtual Switch Extension Manager

LatestVersion     : 1.0

PublishDate       :

Publisher         : Cisco Systems, Inc.

Manufacturer      : Cisco Systems, Inc.

Model             : {Nexus 1000V}

Error             :

ServerConnection  : Microsoft.SystemCenter.VirtualMachineManager.

Remoting.ServerConnection

ID                : 22a8f431-b5fe-4ee8-a0f5-9b5a99f723f2

IsViewOnly        : False

ObjectType        : ConfigurationProvider

MarkedForDeletion : False

IsFullyCached     : True

Vemcmd和Vemlog位置

VEM命令在C上可用：> Program Files(x86)> Cisco > Nexus1000V。

通过注册表验证物理适配器清单

要验证到注册表中N1KV的物理适配器连接，请访问此注册表位置：

- 注册表配置单元：HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet

- 注册表项：服务> Nexus1000V >参数> HostPhyAdapters

由于临时模板，无法删除N1KV对象

如果您通过SCVMM服务模板应用实施模板并构建虚拟机，并允许自助服务用户创建自己的虚拟机，则可能会遇到此问题。此临时模板不是通过SCVMM的可查看对象。必须使用SCVMM Powershell才能使用此命令删除临时模板：

Get-SCVMTemplate | where {$_.Name -like "Temporary*"} | Remove-SCVMTemplate

分配给N1KV的VM接收逻辑交换机合规性错误

有时，合规性错误只是SCVMM运行方式的函数。N1KV在SCVMM中可能完全兼容，但您仍会收到合规错误。

您可能还会收到以下消息，在此消息中，您不允许选择或修改VM的任何网络设置：

当MS群集的一个节点出现问题时，会发生这种情况。SCVMM发现所有节点都不合规，并且不允许您进行更改，直到您删除或修复出现问题的节点。这是SCVMM中的预期行为。

要确定哪个节点有问题，请使用SCVMM或群集故障切换管理器，并修复问题节点。如果无法修复节点，则必须从集群中删除或暂停该节点。完成后，您可以向N1KV添加和修改虚拟机。