蓝易云

KVM 详解命令行安装以及 web 页面进行管理

576次阅读
没有评论

共计 5208 个字符,预计需要花费 14 分钟才能阅读完成。

一、KVM介绍

kvm 是 Kernel-based Virtual Machine 的简称,是一个开源的系统虚拟化模块,自 Linux2.6.20 之后集成在 Linux 的各个主要发行版本中。它使用 Linux 自身的调度器进行管理,所以相对于 Xen,其核心源码 很少。KVM 目前已成为学术界的主流 VMM 之一。
KVM 的虚拟化需要硬件支持(如 IntelVT 技术或者 AMDV 技术)。是基于硬件的完全虚拟化。 而 Xen 早期则是基于软件模拟的 Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但 Xen 本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件 VMwareESX 系列是基于软件模拟的 Full-Virtualization。

因为对进程管理比较麻烦,RedHat 发布了一个开源项目 libvirt。libvirt 有命令行工具也有 API,可 以通过图形化界面,完成对虚拟机的管理。大多数管理平台通过 libvirt 来完成对 KVM 虚拟机的管理; 比如 Openstack、Cloudstack、OpenNebula 等。

KVM 详解命令行安装以及 web 页面进行管理

二、创建虚拟机

1. 查看 cpu 是否支持虚拟化

egrep -c '(vmx|svm)' /proc/cpuinfo

0表示不支持,其他表示支持。

2. 安装相关软件包并启动

# ubuntu
apt install -y qemu qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
# centos
yum install -y qemu qemu-kvm libvirt virt-install bridge-utils
  • qemu 是可以仿真出操作系统的仿真软件,但是速度很慢。
  • qemu-kvm 是 qume 和 kvm 的整合,kvm 主要负责虚拟化 cpu、内存,其他的如网络、硬盘等由 qume 负责虚拟化。
  • libvirt-bin 这个包拆分为libvirt-daemon-system libvirt-clients,主要负责管理 kvm
  • bridge-utils 用来管理桥接网卡

启动 libvirtd:

systemctl start libvirtd && systemctl enable libvirtd

查看kvm服务是否正常:

virsh -c qemu:///system list

3. 创建桥接网卡(可选)

如果不创建桥接网卡,则默认网络模式为 nat,与其他虚拟机不互通。通过网卡桥接,可以使创建的虚拟机与宿主机处在同一网段。

首先确保需要桥接的网卡是一块有线网卡,无线网卡不支持,且有线网卡需要设置为 dhcp。

3.1 Ubuntu

3.1.1 新建网桥
  • 命令行方式创建网桥(重启失效)
# 创建一块br0的网桥
brctl addbr br0
# 将物理网卡作为接口接在br0网桥上
brctl addif br0 enp2s0
# 给br0设置ip
ifconfig br0 172.21.9.199/24 up
  • 配置文件方式创建网桥

修改 /etc/netplan/01-network-manager-all.yaml 文件

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp2s0:
      dhcp4: false
      dhcp6: false
  bridges:
    br0:
      interfaces: [enp2s0]
      dhcp4: false
      addresses: [172.21.9.199/24]
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]

重新配置网络:

netplan apply

理论上是这样设置,但是不知为何我失败了......

3.1.2 创建qemu/kvm使用virsh网络
# 进入qume的网卡配置目录
cd /etc/libvirt/qemu/networks
# 创建br0的桥接网卡桥接在br0网桥-配置文件
cat > br0.xml <<EOF
<network>
  <name>br0</name>
  <uuid>e2527501-bba0-4576-85fb-e3b51629cef7</uuid>
  <forward mode='bridge'/>
  <bridge name='br0'/>
</network>
EOF
# 创建网卡、开启网卡、自启动网卡
virsh net-define br0.xml && \
virsh net-start br0 && \
virsh net-autostart br0
# 查看网卡信息
virsh net-list --all

3.2 Centos

3.2.1 新建网桥

原来的网卡ifcfg-eth0配置:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=eth0
UUID=38f146bb-9a35-4407-9071-936655c84307
DEVICE=br0
ONBOOT=yes

IPADDR=172.21.9.204
GATEWAY=172.21.9.254
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8

需要先创建网桥 br0,然后将 eth0 桥接到 br0 上。

# 复制 eth0 配置文件
cp ifcfg-eth0 ifcfg-br0

ifcfg-eth0 修改,将原来网卡的静态ip改为none,并注释相关IP、网关配置,然后添加 BRIDGE=br0。

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=eth0
UUID=38f146bb-9a35-4407-9071-936655c84307
DEVICE=eth0
ONBOOT=yes

#IPADDR=172.21.9.204
#GATEWAY=172.21.9.254
#NETMASK=255.255.255.0
#DNS1=114.114.114.114
#DNS2=8.8.8.8
BRIDGE=br0

ifcfg-br0 修改为静态 ip 设置,并修改TYPE、NAME、UUID、DEVICE,最重要的这里 TYPE 要改为桥接。

TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=br0
UUID=38f146bb-9a35-4407-9071-936655c84307
DEVICE=br0
ONBOOT=yes

IPADDR=172.21.9.204
GATEWAY=172.21.9.254
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8

重启网卡:

systemctl restart network
3.2.2 创建qemu/kvm使用virsh网络
# 进入qume的网卡配置目录
cd /etc/libvirt/qemu/networks
# 创建br0的桥接网卡桥接在br0网桥-配置文件
cat > br0.xml <<EOF
<network>
  <name>br0</name>
  <uuid>e2527501-bba0-4576-85fb-e3b51629cef7</uuid>
  <forward mode='bridge'/>
  <bridge name='br0'/>
</network>
EOF
# 创建网卡、开启网卡、自启动网卡
virsh net-define br0.xml && \
virsh net-start br0 && \
virsh net-autostart br0
# 查看网卡信息
virsh net-list --all

4. 创建虚拟机

上传 centos7 镜像CentOS-7-x86_64-Minimal-2009.iso 到宿主姐的 opt 目录下。

virt-install \
--name=centos7 \
--virt-type=kvm \
--os-type=linux  \
--os-variant=rhel7 \
--vcpus=4,maxvcpus=4 \
--memory=1024,maxmemory=2048 \
--location=/opt/CentOS-7-x86_64-Minimal-2009.iso \
--disk path=/var/lib/libvirt/images/centos7.qcow2,size=20,format=qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0,port=5900 \
--noautoconsole

如果没有配置桥接,需要指定 --network network=default。

参数解释:

  • --name:虚拟机名称
  • --virt-type:要使用的管理程序名称,如 kvm、qemu、xen 等
  • --os-type:针对一类操作系统优化虚拟机配置,如 linux、window
  • --os-variant:针对特定操作系统变体 rhel7.0、win10 进一步优化虚拟机配置
  • --vcpus=4:分配给虚拟机的 cpu 核数
  • --memory=1024:分配给虚拟机的内存
  • --location:安装源,有本地、nfs、http、ftp几种,多用于ks网络安装
  • --disk:  使用不同选项作为磁盘使用安装介质
  • --network: 设置网络(如:--network network=default,bridge=br0)
  • --graphics:设置 vnc
  • --noautoconsole:不要自动尝试连接到客户端控制台

三、安装 web 管理面板(可选)

docker run -d \
--name webvirtmgr \
-v /home/docker/webvirtmgr/data/:/data/ \
-e WEBVIRTMGR_ADMIN_USERNAME=admin \
-e WEBVIRTMGR_ADMIN_EMAIL=admin@local.domain \
-e WEBVIRTMGR_ADMIN_PASSWORD=password \
-p 8000:8000 \
--restart=always \
odivlad/webvirtmgr

进入容器生成 ssh 秘钥,并将公钥复制到宿主机。

# 进入容器
docker exec -it webvirtmgr bash
# 生成秘钥
ssh-keygen -t rsa -N '' -f  ~/.ssh/id_rsa -q
# 设置免密登录,xxx 为宿主机 ip
ssh-copy-id -i ~/.ssh/id_rsa.pub xxx

接下来就可以使用 web 界面,以 ssh 的方式管理虚拟机了。

KVM 详解命令行安装以及 web 页面进行管理

四、相关命令

  • 基本操作
# 查看虚拟机
virsh list --all
# 开启虚拟机
virsh start centos7
# 关闭虚拟机
virsh shutdown centos7
# 重启虚拟机
virsh reboot centos7
# 删除虚拟机
virsh destroy centos7
  • 快照

生成快照,快照文件位置 /var/lib/libvirt/qemu/snapshot/

进行快照之前需要确保磁盘格式必须是qcow2,因为raw格式是不支持快照的。

# 生成快照
virsh snapshot-create centos7 # 生成随机快照名称
virsh snapshot-create-as centos7 init-snapshot # 生成指定名称快照
# 删除快照
virsh snapshot-delete centos7 init-snapshot
# 查看快照信息
virsh snapshot-info centos7 init-snapshot
qemu-img info /var/lib/libvirt/images/centos7.qcow2
# 恢复快照
virsh snapshot-revert centos7 init-snapshot
# 删除快照
virsh snapshot-delete centos7 test

提醒:本文发布于742天前,文中所关联的信息可能已发生改变,请知悉!

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 0
阿蛮君
版权声明:本站原创文章,由 阿蛮君 于2022-11-10发表,共计5208字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Copyright © 2022-2024 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 蓝易云CDN 提供安全防护和加速服务
Powered by Wordpress  Theme by Puock