最近需要在客户环境搭建 csr1000v,客户环境不能联网,同时使用 kvm 管理。所以需要离线安装 kvm,在利用 kvm 安装 csr100v ,中间遇到不少坑,现记录如下。

所有安装步骤是在 root 用户的基础上完成。

准备好的 kvm 安装包和 csr1000v 安装包所在地址:

ip: 10.124.205.51
user: root/cisco123
[root@localhost temp]# cd /opt/temp
[root@localhost temp]# ls
csr1000v-universalk9.16.12.04.qcow2 kvm_pkg.tar.gz

整体安装思路如下:

  1. Linux 环境准备,检验系统版本以及是否具有虚拟化功能
  2. 离线安装 kvm
  3. kvm 安装 csr1000v
  4. 配置 KVM 相关网络

Linux 环境准备

检查 Linux 版本及内核是否一致,因为涉及到离线安装:

[root@localhost kvm_offile_pkg]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core) [root@localhost kvm_offile_pkg]# uname -r
3.10.0-1160.el7.x86_64

关闭 Selinux

setenforce 0
vim /etc/selinux/config
SELINUX=disabled

检查虚拟化功能是否开启

 cat /proc/cpuinfo | egrep "vmx|svm"

如果看到 vmx 或者 svm,表示虚拟化功能正常打开。

或者也可通过如下命令, 看到 VT-x 表示正常:

[root@localhost ~]# lscpu | grep Virtualization
Virtualization: VT-x
Virtualization type: full

离线安装 kvm

找一台可联网,相同版本的 linux 服务器,使用 yum 离线下载 kvm 相关包:

yum install --downloadonly --downloaddir=/opt/kvm qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools bridge-utils virt-install virt-viewer

将其打包后导入离线服务器:

tar -czvf kvm_pkg.tar.gz kvm

在离线服务器解压并安装:

tar -xzvf kvm_pkg.tar.gz

# 使用 ls 查看,共有 250 个安装包
ls -l | grep "^-" | wc -l # 安装:
yum localinstall -y {Path}/kvm/*.rpm

启动 kvm

systemctl enable libvirtd
systemctl start libvirtd

查看 kvm 版本信息:

yum info qemu-kvm
/usr/libexec/qemu-kvm --version

kvm 安装 csr1000v

将下载好的 csr1000v 镜像导入服务器

# 将安装包导入到 /var/lib/libvirt/images 文件夹下
mv csr1000v-universalk9.16.12.04.qcow2 /var/lib/libvirt/images

安装 csr1000v

 virt-install                    \
--connect=qemu:///system \
--name=csr_1000v \
--os-type=linux \
--os-variant=rhel4 \
--arch=x86_64 \
--cpu host-model \
--vcpus=1,sockets=1,cores=1,threads=1 \
--hvm \
--ram=4096 \
--import \
--disk path=/var/lib/libvirt/images/csr1000v-universalk9.16.12.04.qcow2,bus=ide,format=qcow2 \
--network bridge=virbr0,model=virtio \
--noreboot # --name 可以起一个自定义的名字

安装成功可看到如下内容:

打开 csr1000v

virsh --connect qemu:///system start csr_1000v

连接 csr1000v, 等等其启动完成

virsh console csr_1000v

看到如下内容,表示启动成功:

配置 KVM 网络

宿主机访问 kvm

获取虚拟机有 DHCP 的分配 IP:

[root@localhost ~]# virsh net-dhcp-leases default
Expiry Time MAC address Protocol IP address Hostname Client ID or DUID
-------------------------------------------------------------------------------------------------------------------
2022-04-01 15:43:42 52:54:00:0d:86:d9 ipv4 192.168.122.130/24 Router 00:63:69:73:63:6f:2d:35:32:35:34:2e:30:30:32:62:2e:34:31:30:36:2d:47:69:31

如果手动配置的 IP 可以通过如下脚本来获取, 通过 mac 地址,反查 arp 表,获取分配的 ip.

#!/bin/bash
running_vms=`virsh list |grep running`
echo -ne "共有`echo "$running_vms"|wc -l`个虚拟机在运行.\n"
for i in `echo "$running_vms" | awk '{ print $2 }'`;do
mac=`virsh dumpxml $i |grep "mac address"|sed "s/.*'\(.*\)'.*/\1/g"`
ip=`arp -ne |grep "$mac" |awk '{printf $1}'`
printf "%-30s %-30s\n" $i $ip
done [root@localhost net-util]# bash list_vm_ip.sh
共有2个虚拟机在运行.
csr_1000v 192.168.122.130
new_csr_1000v 192.168.122.131

由于本身是桥接到 br0 网卡上,可和宿主直接通信:

所以可在 router 配置 telnet 登录:

外网访问 KVM

上面的网络情况做到了,可以使用宿主机为 csr1000v 配置。但如果想从外部网络中,访问设备就无法做到了。

这时就需要新创建一个的网桥,然后和 kvm 的网卡相连接。

先介绍下网络环境:

机器名 IP 描述
宿主机 10.124.205.51 存储 kvm 的物理机
csr1000v 10.124.205.52 用 kvm 启动的虚机
测试机器 10.124.205.14 用于测试能否访问到 kvm 虚机

整体思路如下:

  1. 记录当前宿主机可以访问外网的网卡信息,比如 IP,网关等
  2. 新建一个网桥
  3. 将新建的网桥和原来的网卡想关联
  4. 修改 kvm 虚机文件
  5. 进入 csr1000v 绑定真实 IP
  6. 测试

首先记录当前物理网卡信息:

使用 ip addr 找到带有 IP 的真实网卡,比如我这里是 ens192:

2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:bb:93:c4 brd ff:ff:ff:ff:ff:ff
inet 10.124.205.51/24 brd 10.124.207.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet6 fe80::eb4d:e564:a48:1835/64 scope link noprefixroute
valid_lft forever preferred_lft forever

记录对应配置文件的有效信息:

cat /etc/sysconfig/network-scripts/ifcfg-ens192
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens192"
UUID="94a5dbcf-1d42-4fe1-ad0a-6f9743f0f033"
DEVICE="ens192"
ONBOOT="yes"
IPADDR="10.124.205.51"
PREFIX="24"
GATEWAY="10.124.205.254"
DNS1="64.104.14.184"
DNS2="208.67.222.222"
IPV6_PRIVACY="no"

这里将一些有用的信息,拷贝出来。之后新建网桥需要用到:

IPADDR="10.124.205.51"
PREFIX="24"
GATEWAY="10.124.205.254"
DNS1="64.104.14.184"
DNS2="208.67.222.222"

关闭网络

systemctl stop NetworkManager

因为要新建一个网桥,为了防止同名的情况,先查看下, 没有叫 br0 的网桥:

brctl show

创建新网桥,添加之前准备好的信息:

vim /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
ONBOOT=yes
TYPE=Bridge
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR="10.124.205.51"
PREFIX="24"
GATEWAY="10.124.205.254"
DNS1="64.104.14.184"
DNS2="208.67.222.222"

更新原始 ens192 网卡信息,与新网桥建立连接, 记得把原始文件备份

vim /etc/sysconfig/network-scripts/ifcfg-ens192

NAME="ens192"
DEVICE="ens192"
ONBOOT="yes"
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0

重启网络:

systemctl restart network

查看网卡是否生效:

原始 IP 转移到新网卡上:

重启 kvm:

systemctl restart libvirtd

修改 kvm csr1000v 配置文件

virsh edit  csr_1000v

将 interface 关联的网卡,改成新网卡。

<interface type='bridge'>
<mac address='52:54:00:0d:86:d9'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface> 其中 type 需要改变为 bridge,bridge 绑定的名字需要改成 `br0`

重启 csr1000v

virsh reboot  csr_1000v

查看 csr_1000v 的网卡是否挂载到 br0 上:

这时进入到设备中,正常配置有效的 ip,因为是桥接的模式,外网就可以正常访问了。

这里配置 IP 为 10.124.205.52, 从另外一台物理机上可以正常 ping 通:

之前使用 kvm 安装 csr1000v 后,发现使用 console 无法登录到 router 里面,一直卡在 Escape character is '^]'

使用官网文档,配置 tcp 串口依然不好用。最后是通过在 router 里面配置 platform console serial 这句话得以用 console 访问。

目前还存在一个问题,就是想给 router 默认刷一些 day0 配置进去,但安装官网创建 iso 镜像的方式也不太好用,后续研究后补充。

参考

cisco install csr1000v

Centos7 离线安装 KVM,并安装 Csr1000v的更多相关文章

  1. Centos7.3 搭建KVM 命令安装VM虚拟机

      操作系统:centos7.3   一.安装KVM 1. 验证CPU是否支持KVM:如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的. egrep '(vmx|svm)' ...

  2. (转)CentOS7安装KVM虚拟机详解

    原文:https://github.com/jaywcjlove/handbook/blob/master/CentOS/CentOS7%E5%AE%89%E8%A3%85KVM%E8%99%9A%E ...

  3. kvm虚拟机安装

    KVM虚拟化技术介绍 概述 KVM是基于内核的虚拟化技术(Kernel-based Virtual Machine),于2007年的Linux 2.6.20被合并进Linux内核.KVM要求CPU支持 ...

  4. VMware 中安装KVM,模块不加载

    # yum -y install qemu-kvm libvirt virt-install bridge-utils 通过以上命令在VMWare中centos7安装KVM模块 安装后使用 #lsmo ...

  5. CentOS 7.5 安装KVM虚拟机(Windows)

    一.KVM环境搭建1.检测系统是否支持cat /proc/cpuinfo | egrep 'vmx|svm' KVM是基于x86虚拟化扩展(Intel VT 或者 AMD-V)技术的虚拟机软件,所以查 ...

  6. 安装KVM

    在VMWare安装CentOS7 选择图形界面和开发工具 设置网络 cd /etc/sysconfig/network-scripts/ vi ifcfg-ens33 BOOTPROTO=static ...

  7. 命令行安装kvm虚拟机、桥接网络、用virt-manager管理

    宿主机CentOS Linux release 7.2.1511 (Core),内核3.10.0-327.el7.x86_64 1.配置宿主机网络桥接 想让虚拟机有自己的ip且外网可访问,需要在安装虚 ...

  8. CentOS7离线安装mysql5.7

    下载mysql5.7,系统选择redhat,版本选择RHEL7,下载RPM Bundle后得到一个tar文件.这里得到文件mysql-5.7.25-1.el7.x86_64.rpm-bundle.ta ...

  9. (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)

    在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机 前提:服务器端安装桌面版的centos系统 CentOS Linux release 7.5.1804 (Core) ...

随机推荐

  1. java创建线程的四种方法

    第一种:  通过继承Thread类创建线程 第二种: 通过实现Runnable接口创建线程 这两种早已烂记于心,这里就不作过多的介绍, 主要介绍其源码 Thread类 implements Runna ...

  2. 探究Spring原理

    探究Spring原理 探究IoC原理 首先我们大致了解一下ApplicationContext的加载流程: 我们可以看到,整个过程极为复杂,一句话肯定是无法解释的,所以我们就从ApplicationC ...

  3. JZ-033-丑数

    丑数 题目描述 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. ...

  4. (数据科学学习手札134)pyjanitor:为pandas补充更多功能

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 pandas发展了如此多年,所包含的功能已 ...

  5. 基于Spring Boot的线程池监控方案

    前言 这篇是推动大家异步编程的思想的线程池的准备篇,要做好监控,让大家使用无后顾之忧,敬畏生产. 为什么需要对线程池进行监控 Java线程池作为最常使用到的并发工具,相信大家都不陌生,但是你真的确定使 ...

  6. mxnet源码阅读笔记之include

    写在前面 mxnet代码的规范性比Caffe2要好,看起来核心代码量也小很多,但由于对dmlc其它库的依赖太强,代码的独立性并不好.依赖的第三方库包括: cub dlpack dmlc-core go ...

  7. Nebula Graph 在企查查的应用

    本文首发于 Nebula Graph Community 公众号 背景 企查查是企查查科技有限公司旗下的一款企业信用查询工具,旨在为用户提供快速查询企业工商信息.法院判决信息.关联企业信息.法律诉讼. ...

  8. VUE3 之 列表动画 - 这个系列的教程通俗易懂,适合新手

    1. 概述 老话说的好:可以为别人解决痛点的产品就是好产品. 言归正传,今天我们来聊聊 VUE 的列表动画. 2. 列表动画 2.1  列表中增加和删除元素 <style> .my-ite ...

  9. 用注册表清除Office Word文档杀手病毒

    不久前,笔者打开word文件时遇到了一件离奇的怪事,常用的Word文件怎么也打不开,总是出现提示框:"版本冲突:无法打开高版本的word文档".再仔细查看,文件夹里竟然有两个名字一 ...

  10. Linux----虚拟机克隆、快照、删除、

    克隆 已经安装一台linux系统 还想要更多的,直接克隆CentOS即可 使用vm ware 的克隆操作 注意: 使用前先关闭目前已开启的虚拟机 快照 作用: 虚拟系统出现异常,需要回到原先的状态,此 ...