Skip to content

1、先决条件

要运行带有2 GB以上RAM的guest虚拟机,您必须具有64位主机系统。 在继续安装之前,请确保您的Ubuntu主机支持KVM虚拟化。系统应具有带VT-x(vmx)的Intel处理器或具有AMD-V(svm)技术支持的AMD处理器

1.0查看cpu型号,物理cpu颗数

[root@kvm-node1 ~]# cat /proc/cpuinfo | grep name | cut -d: -f2 | uniq -c
      1  Intel(R) Core(TM) i5-6260U CPU @ 1.80GHz
[root@kvm-node1 ~]# cat /proc/cpuinfo | grep physical | sort -n | uniq -c
      1 address sizes   : 43 bits physical, 48 bits virtual
      1 physical id     : 0              ###说明有一颗cpu,颗数是从0开始的
[root@kvm-node1 ~]# cat /proc/cpuinfo | grep name | cut -d: -f2 | uniq -c
      1  Intel(R) Core(TM) i5-6260U CPU @ 1.80GHz
[root@kvm-node1 ~]# cat /proc/cpuinfo | grep physical | sort -n | uniq -c
      1 address sizes   : 43 bits physical, 48 bits virtual
      1 physical id     : 0              ###说明有一颗cpu,颗数是从0开始的

1.1查看内存

[root@kvm-node1 ~]# dmidecode|grep -A5 "Memory Device"|grep Size | cut -d: -f2 | sort -n | uniq -c
    127  No Module Installed
     63  1 kB
      1  8 GB
      1  8192 MB                          ###接了一根内存,每根内存的大小为8G
[root@kvm-node1 ~]# dmidecode|grep -A5 "Memory Device"|grep Size | cut -d: -f2 | sort -n | uniq -c
    127  No Module Installed
     63  1 kB
      1  8 GB
      1  8192 MB                          ###接了一根内存,每根内存的大小为8G

1.2处理器支持硬件虚拟化

grep -Eoc '(vmx|svm)' /proc/cpuinfo

如果CPU支持硬件虚拟化,则该命令将输出一个大于零的数字,即CPU核心的数量。否则,如果输出是,0则表示CPU不支持硬件虚拟化

在某些计算机上,制造商可能会在BIOS中禁用虚拟技术扩展
grep -Eoc '(vmx|svm)' /proc/cpuinfo

如果CPU支持硬件虚拟化,则该命令将输出一个大于零的数字,即CPU核心的数量。否则,如果输出是,0则表示CPU不支持硬件虚拟化

在某些计算机上,制造商可能会在BIOS中禁用虚拟技术扩展

要检查BIOS中是否启用了VT,请使用kvm-ok软件包中随附的工具。以超级用户或具有sudo特权的用户身份输入以下命令来安装cpu-checker包含该kvm-ok命令的软件包:

sql
sudo apt update
sudo apt install cpu-checker
sudo apt update
sudo apt install cpu-checker

安装完成后,检查您的系统是否可以运行硬件加速的KVM虚拟机:

undefined
kvm-ok
kvm-ok

如果未在BIOS中禁用处理器虚拟化功能,则输出将如下所示:

javascript
INFO: /dev/kvm exists
KVM acceleration can be used
INFO: /dev/kvm exists
KVM acceleration can be used

否则,该命令将打印,并显示一条失败消息以及关于如何启用扩展程序的一条可选消息。启用AMD-V或VT技术的过程取决于您的主板和处理器类型。请查阅主板文档,以获取有关如何配置系统BIOS的信息

2、安装

sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager


#检查是否安装成功 
lsmod | grep kvm



#centos7
yum install -y qemu-kvm qemu-img qemu-kvm-tools virt-manager libvirt   virt-install virt-viewer virt-v2v bridge-utils libguestfs-tools 


libguestfs是用于访问和修改虚拟机的磁盘镜像的一组工具集合。libguestfs提供了访问和编辑客户机中的文件、脚本化修改客户机中的信息、监控磁盘使用和空闲的统计信息、P2V、V2V、创建客户机、克隆客户机、备份磁盘内容、格式化磁盘、调整磁盘大小等非常丰富的功能。
libguestfs-tools提供了很多工具,可以分别对应不同的功能和使用场景,如:
virt-ls用于列出虚拟机中的文件
virt-copy-in用于往虚拟机中复制文件或目录
virt-copy-out用于从虚拟机往外复制文件或目录
virt-resize用于调整磁盘大小
virt-cat用于显示虚拟机中的一个文件的内容
virt-edit用于编辑虚拟机中的文件
virt-df用于查看虚拟机中文件系统空间使用情况
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager


#检查是否安装成功 
lsmod | grep kvm



#centos7
yum install -y qemu-kvm qemu-img qemu-kvm-tools virt-manager libvirt   virt-install virt-viewer virt-v2v bridge-utils libguestfs-tools 


libguestfs是用于访问和修改虚拟机的磁盘镜像的一组工具集合。libguestfs提供了访问和编辑客户机中的文件、脚本化修改客户机中的信息、监控磁盘使用和空闲的统计信息、P2V、V2V、创建客户机、克隆客户机、备份磁盘内容、格式化磁盘、调整磁盘大小等非常丰富的功能。
libguestfs-tools提供了很多工具,可以分别对应不同的功能和使用场景,如:
virt-ls用于列出虚拟机中的文件
virt-copy-in用于往虚拟机中复制文件或目录
virt-copy-out用于从虚拟机往外复制文件或目录
virt-resize用于调整磁盘大小
virt-cat用于显示虚拟机中的一个文件的内容
virt-edit用于编辑虚拟机中的文件
virt-df用于查看虚拟机中文件系统空间使用情况
  • qemu-kvm -为KVM管理程序提供硬件仿真的软件。
  • libvirt-daemon-system -用于将libvirt守护程序作为系统服务运行的配置文件。
  • libvirt-clients -用于管理虚拟化平台的软件。
  • bridge-utils -一组用于配置以太网桥的命令行工具。
  • virtinst -一组用于创建虚拟机的命令行工具。
  • virt-manager -易于使用的GUI界面和支持命令行工具,用于通过libvirt管理虚拟机

2.0开机启动

# systemctl start libvirtd 
# systemctl enable libvirtd
# systemctl list-unit-files |grep libvirtd.service //打印启动虚拟化和设置开机自启情况
# systemctl start libvirtd 
# systemctl enable libvirtd
# systemctl list-unit-files |grep libvirtd.service //打印启动虚拟化和设置开机自启情况

2.1添加用户

#为了能够创建和管理虚拟机,您需要将用户添加到“ libvirt”和“ kvm”组中

sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER

$USER 是一个环境变量,其中包含当前登录用户的名称。
注销并重新登录,以便刷新组成员身份
#为了能够创建和管理虚拟机,您需要将用户添加到“ libvirt”和“ kvm”组中

sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER

$USER 是一个环境变量,其中包含当前登录用户的名称。
注销并重新登录,以便刷新组成员身份

2.2查看版本

#查看virsh的版本
[root@kvm-node1 ~]# virsh --version 
4.5.0

#查看 virt-install工具的版本
[root@kvm-node1 ~]# virt-install --version   
1.5.0

[root@kvm-node1 ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
[root@kvm-node1 ~]# qemu-kvm -version
QEMU emulator version 1.5.3 (qemu-kvm-1.5.3-175.el7_9.5), Copyright (c) 2003-2008 Fabrice Bellard
#查看qemu-kvm版本
[root@kvm-node1 ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
[root@kvm-node1 ~]# qemu-kvm -version
QEMU emulator version 1.5.3 (qemu-kvm-1.5.3-175.el7_9.5), Copyright (c) 2003-2008 Fabrice Bellard
#查看virsh的版本
[root@kvm-node1 ~]# virsh --version 
4.5.0

#查看 virt-install工具的版本
[root@kvm-node1 ~]# virt-install --version   
1.5.0

[root@kvm-node1 ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
[root@kvm-node1 ~]# qemu-kvm -version
QEMU emulator version 1.5.3 (qemu-kvm-1.5.3-175.el7_9.5), Copyright (c) 2003-2008 Fabrice Bellard
#查看qemu-kvm版本
[root@kvm-node1 ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
[root@kvm-node1 ~]# qemu-kvm -version
QEMU emulator version 1.5.3 (qemu-kvm-1.5.3-175.el7_9.5), Copyright (c) 2003-2008 Fabrice Bellard

2.3网桥

#centos7
#停用NetworkManager服务
#查看状态
systemctl   status   NetworkManager
#停止NetworkManager
systemctl   stop   NetworkManager
#关闭开机启动
systemctl   disable   NetworkManager


#创建br0网桥
cat   /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
IPADDR=192.168.10.225
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=114.114.114.114


cat   /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.10.225
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=114.114.114.114

#重启网络
systemctl   restart  network

#查看网桥
[root@kvm-node1 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c293ae6c4       no              ens33
virbr0          8000.525400eb3239       yes             virbr0-nic
#centos7
#停用NetworkManager服务
#查看状态
systemctl   status   NetworkManager
#停止NetworkManager
systemctl   stop   NetworkManager
#关闭开机启动
systemctl   disable   NetworkManager


#创建br0网桥
cat   /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
IPADDR=192.168.10.225
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=114.114.114.114


cat   /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.10.225
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=114.114.114.114

#重启网络
systemctl   restart  network

#查看网桥
[root@kvm-node1 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c293ae6c4       no              ens33
virbr0          8000.525400eb3239       yes             virbr0-nic