此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍在Connected Grid Module(CGM)- System Server(SRV)模块上创建和运行Windows虚拟机(VM)所需的步骤。
Cisco 建议您了解以下主题:
本文档中的信息基于以下软件和硬件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
当您想在CGR1000平台上运行IOx应用或VM时,可以使用CGM-SRV计算模块。CGM-SRV模块实际上是包含多核x86 CPU、内存和存储的小型服务器。CGR1120和CGR1240都可以具有其中一个模块来添加IOx功能。
在撰写本文时,有两种类型可用:
库存保留单位(SKU) | 固态驱动器(SSD) | RAM | CPU |
CGM-SRV-64 | 64GB(50GB可用) | 4GB | 4核800Mhz |
CGM-SRV-128 | 128GB(100GB可用) | 4GB | 4核800Mhz |
每个模块还有两个USB端口用于存储,并有自己的外部千兆以太网接口。
与任何其他支持IOx的设备一样,该模块可以托管不同类型的IOx应用,但由于CGM-SRV模块容量较大,它还可以运行完全配置的Windows或标准Linux分区(例如Ubuntu或CentOS)。
要在CGM-SRV模块上部署Windows VM,您首先需要创建包含Windows安装的QEMU QCOW格式的映像。在Linux计算机上使用KVM和virsh创建此映像的一种方法。
进一步提到的步骤根本不涉及CGR1xxx或CGM-SRV,它们只是创建基本Windows 7 VM QCOW映像的必需步骤,您可以在CGM-SRV的下一步中部署该映像。
对于本指南,您可以从新安装的CentOS7最低安装开始。其他Linux发行版的步骤必须相似,但可能稍有不同。
步骤1.首先检查主机是否支持VM扩展。在x86平台上,这些是AMD-V或英特尔的VT-X。大多数(如果不是全部)现代x86 CPU都支持这些扩展。即使运行VM,大多数虚拟机监控程序也提供传递/模拟这些扩展的选项。
为了检查安装的CPU是否支持这些扩展,您需要检查cpuinfo-output中是否存在vmx(对于VT-X)或svm(对于AMD-V)标志。
[root@cen7 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo 2
如果此命令的输出为0,则意味着找不到CPU支持VM扩展。在这种情况下,当您使用VM运行此计算机时,可以检查BIOS或虚拟机监控程序中是否启用了这些扩展。
步骤2.下一步是创建网桥,为可在KMV上运行的VM提供网络。
首先,您需要在内核中启用IP转发:
[root@cen7 ~]# echo "net.ipv4.ip_forward = 1"|sudo tee /etc/sysctl.d/99-ipforward.conf net.ipv4.ip_forward = 1 [root@cen7 ~]# sysctl -p /etc/sysctl.d/99-ipforward.conf net.ipv4.ip_forward = 1
要创建网桥,IP配置需要从实际接口移动到网桥本身,因为这是拥有IP地址的接口。
完成标准安装后,网络配置在/etc/sysconfig/network-scripts中:
[root@cen7 ~]# ls -1 /etc/sysconfig/network-scripts/ifcfg-* /etc/sysconfig/network-scripts/ifcfg-eno16777736 /etc/sysconfig/network-scripts/ifcfg-lo
步骤3.如您所见,当前有一个接口(环回接口除外),称为eno167777736。您需要将IP相关配置移到可以调用virbr0的网桥接口:
[root@cen7 ~]# vi /etc/sysconfig/network-scripts/ifcfg-virbr0 [root@cen7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-virbr0 DEVICE=virbr0 TYPE=BRIDGE ONBOOT=yes BOOTPROTO=static IPADDR=172.16.245.162 NETMASK=255.255.255.0 GATEWAY=172.16.245.2 DNS1=8.8.8.8
步骤4.之后,您需要从实际接口清理IP配置并将其连接到virbr0网桥:
[root@cen7 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 [root@cen7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 UUID=46f0f247-e164-40cc-866b-9133458d9df8 DEVICE=eno16777736 ONBOOT=yes BRIDGE=virbr0 HWADDR=00:0c:29:ce:96:38
步骤5.完成网络配置后,您可以继续安装KVM:
[root@cen7 ~]# sudo yum install kvm virt-manager libvirt virt-install qemu-kvm xauth dejavu-lgc-sans-fonts -y ... Complete!
步骤6.安装完成后,最好重新启动此计算机以应用新安装的模块和网络配置:
[root@cen7 ~]# init 6
步骤7.重新启动完成后,您应该能够访问网桥接口上配置的(相同)IP上的计算机。您必须检查KVM内核模块是否已加载:
root@cen7 ~]# lsmod|grep kvm kvm_intel 200704 0 kvm 589824 1 kvm_intel irqbypass 16384 1 kvm
步骤8.如果这看起来不错,您可以尝试使用virsh连接:
[root@cen7 ~]# sudo virsh -c qemu:///system list Id Name State ----------------------------------------------------
步骤9.最后一步是打开此计算机防火墙上的端口5900,以便VNC访问Windows安装:
[root@cen7 ~]# firewall-cmd --zone=public --add-port=5900/tcp --permanent success [root@cen7 ~]# firewall-cmd --reload success
现在,您有了可与KVM安装配合使用的系统,您可以在KVM上启动新的VM,并通过Windows安装对话框运行。
步骤1.将Windows 7安装ISO复制到您的VM(或通过网络访问):
[root@cen7 ~]# scp jedepuyd@172.16.X.X:/home/jedepuyd/win7install.iso /var jedepuyd@172.16.X.X's password: win7install.iso 100% 4546MB 62.1MB/s 01:13
步骤2.创建新的KVM VM,并使其从Windows 7 ISO启动:
root@cen7 ~]# virt-install --connect qemu:///system -n win7 -r 1024 --vcpus=2 --disk path=/var/lib/libvirt/images/win7.img,size=9 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type windows --os-variant win7 --accelerate --network=bridge:virbr0 --hvm --cdrom /var/win7install.iso Starting install... Allocating win7.img | 9.0 GB 00:00:00 Creating domain... | 0 B 00:00:00 Domain installation still in progress. You can reconnect to the console to complete the installation process.
步骤3.启动VM后,您可以使用VNC查看器连接到端口5900上主机的IP,并完成标准Windows安装,如图所示:
如果Windows在安装时重新启动,则如果不自动执行此操作,则可能需要使用virsh重新启动虚拟机:
[root@cen7 ~]# virsh start win7 Domain win7 started
步骤4.安装完成后,关闭VM。现在,您在创建VM时提供的路径中有此安装的QCOW映像:/var/lib/libvirt/images/win7.img。此类映像可以部署在CGM-SRV上以运行Windows。
现在,您拥有了在CGM-SRV上运行的正确映像类型,您可以开始部署它。
步骤1.为与您的配置对应的客户端设置配置文件:
[root@cen7 ~]# ./ioxclient profiles create Enter a name for this profile : CGR1120_20 Your IOx platform's IP address[127.0.0.1] : 10.X.X.X.X Your IOx platform's port number[8443] : Authorized user name[root] : admin Password for admin : Local repository path on IOx platform[/software/downloads]: URL Scheme (http/https) [https]: API Prefix[/iox/api/v2/hosting/]: Your IOx platform's SSH Port[2222]: Your RSA key, for signing packages, in PEM format[]: Your x.509 certificate in PEM format[]: Activating Profile CGR1120_20 Saving current configuration
在本例中,10.X.X.X与CGR1000上的传出接口对应,您在该接口上配置了网络地址转换(NAT)以转发到CGM-SRV上的端口8443。
步骤2.配置ioxclient后,让我们将先前创建的映像重命名为vm.img以简化位,并使用带ioxclient的安全复制(SCP)将其复制到CGM-SRV。
或者,将磁盘映像转换为QCOW2格式,这是CGM-SRV期望的格式。默认情况下,较新版本的virt-manager似乎会以QCOW3格式创建磁盘映像。
使用以下命令可以轻松转换图像:
[root@cen7 ~]# qemu-img convert -f qcow2 -O qcow2 /var/lib/libvirt/images/win7.img /var/lib/libvirt/images/win7.img
确定图像格式正确后,继续重命名并复制:
[root@cen7 ~]# mv /var/lib/libvirt/images/win7.img /root/vm.img [root@cen7 ~]# ./ioxclient platform scp /root/vm.img Currently active profile : CGR1120_20 Command Name: plt-scp Saving current configuration Downloaded scp keys to pscp.pem Running command : [scp -P 2222 -r -i pscp.pem /root/vm.img scpuser@10.50.215.246:/]
此传输可能需要一段时间,通过Cisco IOS®将传输速率从3-4MB/s左右传输到CGM-SRV。文件将复制到CGM-SRV模块上的/mnt/data/vm/vm.img。
步骤3.在传输进行中(或完成)时,可以创建package.yaml文件。此文件向IOx描述您到底要部署什么以及如何对其进行打包。
[root@cen7 ~]# vi package.yaml [root@cen7 ~]# cat package.yaml descriptor-schema-version: 2.2 info: author-link: http://www.cisco.com/ author-name: Jens Depuydt description: Windows 7 VM for CSR-SRV name: win7 version: 1.0 app: type: vm cpuarch: x86_64 resources: profile: custom cpu: 600 disk: 10 memory: 3072 network: - interface-name: eth0 - interface-name: eth1 graphics: vnc: true startup: ostype: windows qemu-guest-agent: false disks: - target-dev: hda file: file://vm.img
如您在此package.yaml中所看到的,您指的是file://vm.img,它与CGM-SRV模块上mnt/data/vm/vm.img的实际位置相对应。
步骤4.下一步是使用ioxclient打包:
[root@cen7 ~]# ./ioxclient pkg . Currently active profile : default Command Name: package No rsa key and/or certificate files to sign the package Checking if package descriptor file is present.. Validating descriptor file /root/package.yaml with package schema definitions Parsing descriptor file.. Found schema version 2.2 Loading schema file for version 2.2 Validating package descriptor file.. File /root/package.yaml is valid under schema version 2.2 Created Staging directory at : /var/folders/sp/f9qn2fsn0d5fkj7szps6qvvr0000gn/T/638513626 Copying contents to staging directory Checking for application runtime type Couldn't detect application runtime type Creating an inner envelope for application artifacts Excluding .DS_Store Generated /var/folders/sp/f9qn2fsn0d5fkj7szps6qvvr0000gn/T/638513626/artifacts.tar.gz Calculating SHA1 checksum for package contents.. Package MetaData file was not found at /private/var/folders/sp/f9qn2fsn0d5fkj7szps6qvvr0000gn/T/638513626/.package.metadata Wrote package metadata file : /private/var/folders/sp/f9qn2fsn0d5fkj7szps6qvvr0000gn/T/638513626/.package.metadata Root Directory : /private/var/folders/sp/f9qn2fsn0d5fkj7szps6qvvr0000gn/T/638513626 Output file: /var/folders/sp/f9qn2fsn0d5fkj7szps6qvvr0000gn/T/559089521 Path: .package.metadata SHA1 : 262f763740c182f95358be84514a76ac11e37012 Path: artifacts.tar.gz SHA1 : 3d89ccd35fe5318dd83a249a26cb8140d98d15bb Path: package.yaml SHA1 : aa42f949b707df07a83a17344e488c44eb585561 Generated package manifest at package.mf Generating IOx Package.. Package generated at /root/package.tar
步骤5.创建软件包后,可将其安装在CGM-SRV上。在本例中,IOx应用/VM称为win7:
[root@cen7 ~]# ./ioxclient app install win7 package.tar Currently active profile : default Command Name: application-install Saving current configuration Installation Successful. App is available at : https://10.X.X.X:8443/iox/api/v2/hosting/apps/win7 Successfully deployed
步骤6.在激活win7 IOx虚拟机之前,您需要创建负载JSON文件,为此虚拟机设置VNC密码:
[root@cen7 ~]# vi vnc.json [root@cen7 ~]# cat vnc.json { "resources": { "graphics": {"vnc-password": "password"} } }
步骤7.使用vnc.json负载,可激活win7 IOx VM:
[root@cen7 ~]# ./ioxclient app activate win7 --payload vnc.json Currently active profile : default Command Name: application-activate Payload file : vnc.json. Will pass it as application/json in request body.. App win7 is Activated
步骤8. ioxclient的最后一步是启动VM:
[root@cen7 ~]# ./ioxclient app start win7 Currently active profile : default Command Name: application-start App win7 is Started
此时,Windows VM在CGM-SRV上运行,您可以开始使用它。
要访问Windows计算机控制台,可以在CGR1000和端口5900的传出接口上使用VNC查看器,如图所示:
从网络角度来看,您选择使用package.yaml文件将eth0和eth1赋予win7 IOx VM,如图所示:
如您所见,这些接口从DHCP服务器获取IP,该IP在Cisco IOS®上运行,无需进一步配置即可使用。
使用本部分可确认配置能否正常运行。
要检查VM是否运行:
[root@cen7 ~]# ./ioxclient app list Currently active profile : CGR1120_20 Command Name: application-list Saving current configuration List of installed App : 1. win7 ---> RUNNING
您还可以从本地管理器检查状态,如图所示:
本部分提供了可用于对配置进行故障排除的信息。
要排除部署问题,请检查CGM-SRV主机操作系统上ioxclient或/var/log/caf.log的输出。
确保正确配置NAT以访问所有资源(思科应用托管框架(CAF)、安全外壳(SSH)、VNC)。