centos部署 KVM 虚拟化平台(保姆级)

目录

KVM 工作原理

方法一安装KVM

方法2 YUM 安装 KVM

验证

配置 KVM 网络

virt-manager

(1)创建存储池

(2)创建镜像存储池

(3)创建存储卷

(4)新建虚拟机

完成


KVM 工作原理

       用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式。KVM Driver 为

虚拟机创建虚拟 CPU 和虚拟内存,然后执行 VMLAUNCH 指令进入客户模式,装载 Guest

OS 并运行。Guest OS 运行过程中如果发生中断或者影子缺页等异常,将暂停 Guest OS

的运行并保存当前上下文退出到内核模式来处理这些异常。内核模式处理这些异常时如果不

需要 I/O 则处理完成后重新进入客户模式。如果需要 I/O 则进入到用户模式,由 Qemu 来处

理 I/O,处理完成后进入内核模式,再进入客户模式

确认CPU支持虚拟化技术:

执行命令检查CPU是否支持Intel VT-x或AMD-V:

grep -E 'vmx|svm' /proc/cpuinfo

如果输出中包含vmx(Intel)或svm(AMD),则表示CPU支持虚拟化技术。

关闭NetworkManager服务:

为避免不明错误,关闭NetworkManager服务:

systemctl stop NetworkManager

systemctl disable NetworkManager

方法一安装KVM

安装必要的软件包:

使用yum安装KVM及相关组件:

yum install -y qemu-kvm qemu-img libvirt libvirt-python virt-manager libvirt-client virt-install bridge-utils

启动并设置libvirtd服务开机自启:

systemctl start libvirtd

systemctl enable libvirtd

方法2 YUM 安装 KVM

在 CentOS 的系统光盘镜像中,已经提供了安装 KVM 所需软件。通过部署基于光盘镜

像的本地 YUM 源,直接使用 YUM 安装所需软件即可,安装 KVM 所需软件具体包含以下

几个。

yum groupinstall -y "GNOME Desktop" //安装 GNOME 桌面环境

yum -y install qemu-kvm //KVM 模块

yum -y install qemu-kvm-tools //KVM 调试工具,可不安装

yum -y install virt-install //构建虚拟机的命令行工具

yum -y install qemu-img //qemu 组件,创建磁盘、启动虚拟机等

yum -y install bridge-utils //网络支持工具

yum -y install libvirt //虚拟机管理工具

yum -y install virt-manager //图形界面管理虚拟

需要注意的是:在使用 YUM 安装完桌面后执行 ln -sf

/lib/systemd/system/graphical.target /etc/systemd/system/default.target 命令,将系统的默

认运行 target 更改为 graphical.targe。重启后系统将进入图形化界面。若不执行上述命令更

改系统的默认运行 target,重启时可能报错。

验证

重启系统后,查看 CPU 是否支持虚拟化,对于 Intel 的服务器可以通过以下命令查看,

只要有输出就说明 CPU 支持虚拟化;AMD 服务器可用 cat /proc/cpuinfo | grep smv 命令查

看。

[root@bdqn ~]# cat /proc/cpuinfo | grep vmx

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush

dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl

xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 cx16 pcid sse4_1

sse4_2 x2apic popcnt tsc_deadline_timer xsave avx hypervisor lahf_lm ida arat epb pln pts

dtherm tpr_shadow vnmi ept vpid tsc_adjus

检查 KVM 模块是否安装:

[root@bdqn ~]# lsmod | grep kvm

kvm_intel 170181 0

kvm 554609 1 kvm_intel

irqbypass 13503 1 kvm

置 KVM 网络

宿主服务器安装完成 KVM,首先要设定网络,在 libvirt 中运行 KVM 网络有两种方法:

NAT 和 Bridge,默认是 NAT。

关于两种网络模式的说明:

Ø 用户模式,即 NAT 方式,这种方式是默认网络,数据包由 NAT 方式通过主机的网卡接

口进行传送,可以访问外网,但是无法让外部主机访问虚拟机内部网络。

Ø 桥接模式,这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接

访问到虚拟机内部,但需要网卡支持,一般有线网卡都支持。

这里以 Bridge(桥接)为例进行操作演示。注:宿主机 IP 地址为 192.168.10.1 。

[root@bdqn ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet

第 8 页 共 24 页

BOOTPROTO=none

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33

UUID=58b0765c-572c-4f63-89a7-1bf720b1fab0

DEVICE=ens33

ONBOOT=yes

BRIDGE=br0

[root@bdqn ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0

TYPE=Bridge

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=br0

DEVICE=br0

ONBOOT=yes

IPADDR=192.168.10.1

NETMASK=255.255.255.0

GATEWAY=192.168.10.254

重启 network 服务。

[root@bdqn ~]# /etc/init.d/network restart

第 9 页 共 24 页

Restarting network (via systemctl): [ OK ]

确认 IP 地址信息。

[root@bdqn ~]# ifconfig

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.10.1 netmask 255.255.255.0 broadcast 192.168.10.255

inet6 fe80::3362:2f44:ebd1:62e prefixlen 64 scopeid 0x20<link>

ether 00:0c:29:3a:81:cc txqueuelen 1000 (Ethernet)

RX packets 3 bytes 234 (234.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 19 bytes 2613 (2.5 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

ether 00:0c:29:3a:81:cc txqueuelen 1000 (Ethernet)

RX packets 200 bytes 17407 (16.9 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 184 bytes 24024 (23.4 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10<host>

loop txqueuelen 1 (Local Loopback)

RX packets 550 bytes 47778 (46.6 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 550 bytes 47778 (46.6 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500

inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255

ether 52:54:00:64:3e:58 txqueuelen 1000 (Ethernet)

RX packets 0 bytes 0 (0.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

出现以上信息,说明网卡桥接成功了。

virt-manager

virt-manager 是基于 libvirt 的图像化虚拟机管理软件。需要注意的是,不同发行版上的

virt-manager 版本可能有所不同,图形界面和操作方法也可能不同。本文使用了 CentOS

7.3。创建 KVM 虚拟机最简单的方法是通过 virt-manager 接口。从控制台窗口启动这个工

具,以 root 身份输入 virt-manager 命令,出现如图

虚拟化管理步骤如下。

(1)创建存储池

双击 QEMU/KVM,选择“存储”选项卡,然后单击“+”按钮新建存储池。如图所示,单

击“前进”按钮,根据提示输入或浏览用以设置存储目录,如/data_kvm/store,最后单击“完成”

按钮即可。

(2)创建镜像存储池

以同样的操作创建一个镜像存储池,命名为 bdqn_iso,目录为/data_kvm/iso 即可。在

安装操作系统时,需要把镜像上传到服务器目录/data_kvm/iso,如图

(3)创建存储卷

单击刚创建好的“bdqn”,单击对话框中“卷”右边的 “+”按钮建立一个存储卷,并设置最

大容量,如图

(4)新建虚拟机

单击“完成”按钮后,回到虚拟系统管理器。右击“QEMU/KVM”,然后选择“新建”选项,

在弹出的对话框中按图 1.8 所示选择“本地安装介质”,然后单击“前进”按钮。

单击“浏览”按钮选择镜像文件,再选择操作系统型及版本,如图

单击“前进”按钮,在图所示的对话框中适当分配内存和 CPU 资源,如 1 核 CPU、

1GB 内存。

单击“前进”按钮,在如图  所示的对话框中点选“选择或创建自定义存储”单选按钮,

单击“管理”按钮选择文件,然后单击“前进”按钮。

在如图所示将虚拟机名称命名为“CentOS 7.3“,并勾选话框中的“在安装前自定义

配置”复选框,单击“完成”按钮,弹出如图

在“引导选项”视图中勾选“主机引导时启动虚拟机”复选框,这样在物理宿主机启动后,

这个 VM 也会启动,最后单击“应用”按钮,如图

最后单击“开始安装”按钮即可,整个虚拟化配置过程完成。下面就是安装操作系统的工

作,和平时安装 Linux 系统一样

完成

### KVM 环境配置的详细教程 #### 1. 检查硬件支持 在开始安装和配置 KVM 前,需确认服务器 CPU 是否支持虚拟化技术。可以通过以下命令来验证是否存在 `vmx`(Intel-VT 技术)或 `svm`(AMD-V 技术)标志。 ```bash egrep -c '(vmx|svm)' /proc/cpuinfo ``` 如果返回值大于零,则表示当前硬件支持虚拟化功能[^1]。 #### 2. 安装必要的软件包 为了启用 KVM 功能并管理虚拟机,需要安装一些基础工具和服务: 对于基于 Debian 的系统: ```bash sudo apt update sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager ``` 对于基于 Red Hat 的系统: ```bash sudo yum groupinstall 'Virtualization Host' sudo yum install bridge-utils virt-manager ``` 这些命令会自动拉取所需的依赖项以及设置好基本的服务环境[^3]。 #### 3. 启动并启用 Libvirt 服务 Libvirt 是用于管理和控制 KVM 虚拟化的守护进程。确保其已启动且开机自启: ```bash sudo systemctl start libvirtd sudo systemctl enable libvirtd ``` 此时可通过如下指令测试连接状态是否正常: ```bash virsh list --all ``` 如果没有报错则表明初始化成功。 #### 4. 创建网桥接口 (Bridge Interface) 为了让虚拟机能像真实机器一样接入局域网并与外部通信,推荐采用网桥模式代替 NAT 或路由方式。具体操作流程如下所示: 编辑现有网络配置文件 `/etc/network/interfaces` 添加新条目或者利用 GUI 工具完成相同目的;以下是手动方法的一个例子: 假设原主网卡名为 eth0 ,新建 br0作为桥梁端口: ```plaintext auto lo iface lo inet loopback # Physical Network Adapter allow-hotplug eth0 iface eth0 inet manual # Bridge setup auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0 ``` 重启 networking service 来应用更改 : ```bash sudo systemctl restart networking.service ``` 现在应该可以看到新增加出来的br0 设备处于活动状态,并继承了之前eth0 所有的IP地址信息等属性[^2]. #### 5. 下载镜像并定义虚拟机 获取目标系统的 ISO 文件之后, 使用下面这条语句导入到libvirt数据库里去: ```bash qemu-img create -f qcow2 centos7.qcow2 20G virt-install \ --name=centos7-test \ --ram=2048 \ --disk path=/var/lib/libvirt/images/centos7.qcow2,bus=virtio,size=20 \ --vcpus=2 \ --os-type linux \ --os-variant rhel7 \ --network bridge=br0,model=virtio \ --graphics vnc \ --console pty,target_type=serial \ --location '/path/to/CentOS-7-x86_64-Minimal.iso' \ --extra-args 'console=ttyS0,115200n8 serial' ``` 上述脚本将会引导用户进入图形界面继续后续步骤直至最终完成整个过程. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值