kvm tips
1. 前言
最近开始参与一个导师的项目, 我们是乙方, 给甲方做一个流量分析相关的系统. 整个系统是运行在一个kvm虚拟机(系统为centos)里面. 系统配置好之后将整个虚拟机打包成镜像提供给甲方.
我的任务是系统中的一个日志相关的小模块, 开发的第一步自然是搭建环境, 由于是第一次接触kvm虚拟机, 在搭建的过程中也踩了一些坑, 因此觉得有必要记录一下, 方便之后再次使用时查阅.
2. 正文
2.1. kvm 常用操作
todo
2.2. kvm 从镜像到可联网的虚拟机
host环境配置:
ubuntu 18.04 Desktop
2.2.1. 从镜像到虚拟机
最开始学长给我的就是一个虚拟机镜像文件, 我需要用这个镜像启动一个虚拟机. 镜像文件格式如下.
$ file ./centos7.6
./centos7.6: QEMU QCOW Image (v3), 12884901888 bytes
$ du -h ./centos7.6
13G ./centos7.6
qcow
是一种虚拟机镜像格式, 常见的虚拟机镜像格式有raw
, qcow
, qcow2
, vmdk
等, 具体信息参考[1]
从镜像启动虚拟机建议使用 virt-manager
, 一个虚拟机管理工具.
$ sudo apt install virt-manager
这个工具有gui
和 cli
两种形式, 本文介绍使用gui
从镜像构造虚拟机的过程.
安装完毕之后启动virt-manager
$ virt-manager
会弹出一个gui界面. 之后操作就和 windows 下使用 vmware 创建虚拟机差不多. 大致流程如下, 不再赘述.
File -> New Virtual Machine -> Import existing disk image -> 内存/处理器/网卡等操作(之后都可以修改)
一通设置完毕之后就可以启动虚拟机了. 会弹出一个新的窗口, 里面就是虚拟机的终端/桌面.
不过现在的虚拟机还无法连接外网, 在配置的过程中如果需要安装各种依赖包的话还是比较麻烦, 接下来就讲一下如何配置虚拟机的网络使其可以连上外网.
2.2.2. 使虚拟机连上外网
配置思路大致如下:
- 新建一个网桥
- 将虚拟机的网卡桥接到第一步新建的网桥上
ubuntu 18.04上使用netplan
[1]来配置网络, 我们通过配置文件添加一个网桥 br0
$ cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
eno1:
dhcp4: no
bridges:
br0:
interfaces: [eno1]
dhcp4: no
addresses: [192.168.3.2/24]
gateway4: 192.168.3.1
$ sudo netplan apply
$ sudo service networking restart
ip和接口名称自行修改
虽然在系统中添加了网桥,但是此时在virt-manager
中是看不到我们添加的网桥的,还需要在virsh
中添加一个网桥配置。
新建一个xml文件 br0.xml
<network>
<name>kvm-br0</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>
然后执行如下命令
virsh net-define br0.xml
virsh net-start kvm-bridge
virsh net-autostart kvm-bridge
再设置虚拟机使用 kvm-br0
这个网卡, 并使用ifconfig 配置个静态ip即可成功访问外网
3. 结语
写代码5分钟, 配环境半小时