目錄

簡介

必要條件

需求

採用元件

背景資訊

設定

建立Windows VM映像

在Linux電腦上安裝KVM

驗證KVM安裝

建立Windows VM

將Windows VM映像部署到CGM-SRV

驗證

疑難排解

簡介

本文說明在連線電網模組(CGM) — 系統伺服器(SRV)模組上建立並執行Windows虛擬機器(VM)的必要步驟。

必要條件

需求

思科建議您瞭解以下主題：

- Linux

- 基於核心的虛擬機器(KVM)

- 瞭解虛擬化概念

採用元件

本文中的資訊係根據以下軟體和硬體版本：

- 連線電網路由器(CGR)1120

- CGM-SRV-XX模組

- CGM-SRV的配置步驟在此指南之前執行：

- Windows 7安裝ISO

- 虛擬網路計算(VNC)檢視器

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

背景資訊

當您要在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）。

設定

建立Windows VM映像

要在CGM-SRV模組上部署Windows VM，首先需要建立包含Windows安裝的QEMU QCOW格式的映像。在Linux電腦上使用KVM和病毒建立此類映像的方法之一。

所提到的步驟完全不涉及CGR1xxx或CGM-SRV，只是建立基本的Windows 7 VM QCOW映像所需的步驟，您可以在下一步部署到CGM-SRV。

在本指南中，您可以從新安裝的CentOS7最小安裝開始。其他Linux發行版的步驟必須相似，但可能略有不同。

在Linux電腦上安裝KVM

步驟1。首先檢查主機是否支援VM擴展。在x86平台上，這些是AMD-V或英特爾的VT-X。大多數（如果不是全部）現代x86 CPU都支援這些擴展。即使您運行虛擬機器，大多數虛擬機器監控程式也會提供傳遞/模擬這些擴展的選項。

為了檢查已安裝的CPU是否支援這些擴展，您需要檢查cpuinfo-output中是否存在vmx（對於VT-X）或svm（對於AMD-V）標誌。

[root@cen7 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo

2

如果此命令的輸出為0，則意味著找不到支援VM擴展的CPU。在這種情況下，當使用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

驗證KVM安裝

步驟7.重新引導完成後，您應該能夠在網橋介面上配置的（相同）IP上訪問電腦。您必須檢查KVM核心模組是否已載入：

root@cen7 ~]# lsmod|grep kvm

kvm_intel             200704  0

kvm                   589824  1 kvm_intel

irqbypass              16384  1 kvm

步驟8.如果這看起來正常，您可以嘗試連線病毒：

[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

建立Windows VM

現在，您擁有可與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，則可能有必要重新啟動帶病毒的VM（如果此操作不是自動完成的）：

[root@cen7 ~]# virsh start win7

Domain win7 started

步驟4.安裝完成後，關閉VM。現在，您在建立VM時提供的路徑中擁有此安裝的QCOW映像：/var/lib/libvirt/images/win7.img。可以在CGM-SRV上部署此型別的映像來運行Windows。

將Windows VM映像部署到CGM-SRV

現在，您在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，以簡化一位，並使用Secure Copy(SCP)與ioxclient一起複製到CGM-SRV。

或者，將磁碟映像轉換為CGM-SRV預期的QCOW2格式。較新版本的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:/]

此傳輸可能需要一段時間，傳輸速率大約為3-4MB/s，通過Cisco IOS®傳輸到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應用程式/虛擬機器稱為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 VM之前，需要建立用於設定此VM的VNC密碼的負載JSON檔案：

[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虛擬機器在CGM-SRV上運行，您可以開始使用它。

要訪問Windows電腦控制檯，您可以在CGR1000和埠5900的傳出介面上使用VNC檢視器，如下圖所示：

從網路角度來看，您選擇使用package.yaml檔案將eth0和eth1授予win7 IOx VM，如下圖所示：

您可以看到，這些介面從運行在Cisco IOS®上的DHCP伺服器獲得IP，無需進一步配置即可使用。

驗證

使用本節內容，確認您的組態是否正常運作。

若要檢查虛擬機器是否運行：

[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主機OS上的ioxclient或/var/log/caf.log的輸出。

確保正確配置NAT以訪問所有資源(思科應用託管框架(CAF)、安全外殼(SSH)、VNC)。