CentOS 7 部署 KVM 虚拟化

简介: CentOS 7 部署 KVM 虚拟化

KVM的组件

  • ① kvm.ko:模块

    • API 应用程序编程接口
  • ② qemu-kvm:用户空间的工具程序;

    • qemu-KVM 是一种开源虚拟器,它为KVM管理程序提供硬件仿真。
    • 运行中的一个 kvm 虚拟机就是一个 qemu-kvm 进程,运行 qemu-kvm 程序并传递给它合适的选项及参数即能完成虚拟机启动,终止此进程即能关闭虚拟机;
  • ③ libvirt 虚拟化库:Libvirt是C工具包,

    • libvirt可以与最近版本的Linux(以及其他操作系统)的虚拟化功能进行交互。主包包含了导出虚拟化支持的libvirtd服务器。
    • libvirt 包含 C/S:

      • Client:

        • libvirt-client
        • virt-manager
      • Daemon:

        • libvirt-daemon

KVM模块load进内存之后,系统的运行模式

  • 内核模式:GuestOS 执行 IO 类的操作时,或其它的特殊指令操作时的模式;它也被称为"Guest-Kernel"模式;
  • 用户模式:Host OS的用户空间,用于代为GuestOS发出IO请求;
  • 来宾模式:GuestOS 的用户模式;所有的非IO类请求

部署KVM

下面开始套娃,我vmware开的虚拟机,给了4C16G,KVM的最低要求是内存不能低于4G

基础配置

  • 必须跑在 x86 系统的架构上
  • 必须支持硬件级虚拟化

    • vmx: Intel VT-x
    • svm: AMD AMD-v
  • 虚拟机上再虚拟化,需开启虚拟化 Intel VT-x/EPT

判断CPU是否支持硬件虚拟化

# egrep -i 'vmx|svm|lm' /proc/cpuinfo
  • 注意:vmx 或 svm 必须出现一个,表示是支持的

    • vmx: Intel VT-x
    • svm: AMD AMD-v
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq 'vmx' ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat spec_ctrl intel_stibp flush_l1d arch_capabilities

检测 kvm 模块是否装载

# lsmod | grep kvm
kvm_intel             183621  0
kvm                   586948  1 kvm_intel
irqbypass              13503  1 kvm
如果没有装载 kvm 模块,执行 modprobe kvm 命令即可

安装用户端工具 qemu-kvm

# yum install -y libvirt* virt-* qemu-kvm*
  • libvirt 虚拟机管理
  • virt 虚拟机安装克隆
  • qemu-kvm 管理虚拟机磁盘
安装的比较多,有300多个包

启动服务

# systemctl start libvirtd.service

查看网卡

# virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes

配置桥接网卡br0

这一步,根据实际情况操作,启动KVM后,会生成virbr0网卡,供KVM创建的虚拟机使用,KVM默认虚拟机的网络为NAT模式

先备份一下网卡配置文件,万一有问题,还能恢复

如果是CentOS发行版,可以关掉NetworkManager服务,免得他捣乱

# systemctl disable NetworkManager --now
# virsh iface-bridge eth0 br0
把自己的物理网卡 eth0 作为交换机,把 br0 当网卡,提供IP(切记,别复制直接用,将 eth0改为自己的网卡名称,使用 ip a命令可以查看自己的网卡名称)

注意:命令可能会卡死或出错,终端被强制退出;等一会,在登录就OK 了

# cp /etc/libvirt/qemu/networks/default.xml /etc/libvirt/qemu/networks/br0.xml
# vim /etc/libvirt/qemu/networks/br0.xml
<network>
  <name>br0</name>
  <forward mode='bridge'/>
  <bridge name='br0'/>
</network>
启动br0网卡
# virsh net-define /etc/libvirt/qemu/networks/br0.xml
# virsh net-autostart br0
# virsh net-start br0
# virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 br0                  active     yes           yes
 default              active     yes           yes

使用KVM创建虚拟机

图形化界面,可以使用 virt-manager 来创建虚拟机,都是点点点的操作

这里就使用命令行的方式创建虚拟机了

注意:需要先上传一个系统镜像文件到KVM服务器上

使用VNC的方式

安装VNC
# yum install -y tightvnc
使用命令创建虚拟机
# mkdir /opt/kvm
# virt-install --virt-type kvm \
--name suse12-sp3 \
--memory 2048 \
--vcpus 1 \
--disk /opt/kvm/suse12-sp3.qcow2,format=qcow2,size=30 \
--cdrom /opt/kvm/SLE-12-SP3-Server-DVD-x86_64-GM-DVD1.iso \
--network network=default \
--graphics vnc,listen=0.0.0.0,port=5900 \
--noautoconsole
打开VNC,输入本机的IP加上创建的时候指定的端口5900,即可开始安装虚拟机

端口是自定义的,并非固定的5900

# vncviewer               # 打开 VNC
使用VNC部署的虚拟机,当虚拟机启动的时候,会自动启用创建时所指定的端口,可以再次使用VNC远程连接虚拟机,当虚拟机关机的时候,端口也会自动关闭
# 关机状态下的虚拟机,需要加上--all参数才会看得到
# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     suse12-sp3                     shut off

# ss -nltp | grep 5900
# virsh start suse12-sp3
Domain suse12-sp3 started

# virsh list --all
 Id    Name                           State
----------------------------------------------------
 6     suse12-sp3                     running

# ss -nltp | grep 5900        # 虚拟机启动后,端口就出来了
LISTEN     0      1            *:5900                     *:*                   users:(("qemu-kvm",pid=31317,fd=19))
参数说明
参数 说明
--virt-type 要使用的虚拟化名称(kvm, qemu, xen, ...)
--name 虚拟机的名称
--memory 配置内存大小,默认单位为MiB
--vcpus 配置虚拟 CPU(vcpu) 数量
--disk 指定存储的各种选项
--cdrom 安装的介质
--network 虚拟机使用的网络接口,可以使用 virsh net-list 命令查看当前拥有的网络接口
--graphics 配置虚拟机的显示设置,有vnc、none、spice
--noautoconsole 不要自动尝试连接到客户端控制台

不使用VNC的方式

# virt-install --virt-type=kvm \
--name=centos7.7 \
--vcpus=1 \
--memory=2048 \
--location /opt/kvm/CentOS-7.7-x86_64-DVD-1908.iso \
--disk /opt/kvm/centos7.7.qcow2,format=qcow2,size=30 \
--network network=default \
--graphics none \
--extra-args='console=ttyS0'

使用kickstart文件的方式

# centos系统安装完成后,在/root目录下会有一个cfg后缀的kickstart文件
# cp anaconda-ks.cfg /opt/kvm/
# cd /opt/kvm/
# vim anaconda-ks.cfg
由于kvm安装的虚拟机,磁盘都是vda,所以需要将文件内的sda全部修改为vda

由于虚拟机分配的是100G,但是KVM创建的虚拟机,咱给的是30G,所以需要修改分区,为了省事,直接使用了自动分区autopart --type=lvm

kickstart文件之前没接触过,就没有过多的修改了,以后有时间再去研究一下

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use graphical install
# graphical
text
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=vda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network  --bootproto=dhcp --device=eth0 --ipv6=auto --activate
network  --hostname=localhost.localdomain

# Root password
rootpw --iscrypted $6$3IMre6QwQrXPP1tr$2t6ACeLAG/Ogg.nSdX.iNwxZLkrpN.sC6u/e6GYqV.GOvsmA1zu9rA7ceYZmgUvWgPy2NyuM8q4S75Kk9cjKn.
# System services
services --enabled="chronyd"
services --disabled="NetworkManager"
services --disabled="firewall"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --location=mbr --boot-drive=vda
# Partition clearing information
clearpart --all --initlabel --drives=vda
# Disk partitioning information
autopart --type=lvm

%packages
@^minimal
@core
@development
@system-admin-tools
chrony

%end

%addon com_redhat_kdump --disable --reserve-mb='auto'

%end
# virt-install --virt-type=kvm \
--name=centos7.7-ks \
--vcpus=1 \
--memory=2048 \
--location /opt/kvm/CentOS-7.7-x86_64-DVD-1908.iso \
--disk /opt/kvm/centos7.7-ks.qcow2,format=qcow2,size=30 \
--network network=default \
--graphics none \
--initrd-inject=/opt/kvm/anaconda-ks.cfg \
--extra-args='ks=file:/anaconda-ks.cfg console=ttyS0'
目录
相关文章
|
2月前
|
监控 前端开发 Linux
centos7系统安装部署zabbix5.0
【9月更文挑战第23天】在CentOS 7系统上部署Zabbix 5.0的步骤包括:安装MariaDB数据库及必要软件包,配置Zabbix仓库,设置数据库并导入Zabbix数据库架构,配置Zabbix服务器与前端参数,启动相关服务,并通过浏览器访问Web界面完成安装向导。
101 0
|
2月前
|
Oracle Java 关系型数据库
CentOS 7.6操作系统部署JDK实战案例
这篇文章介绍了在CentOS 7.6操作系统上通过多种方式部署JDK的详细步骤,包括使用yum安装openjdk、基于rpm包和二进制包安装Oracle JDK,并提供了配置环境变量的方法。
249 80
|
11天前
|
存储 Linux 调度
KVM 虚拟化的功能特性
【10月更文挑战第13天】虚拟化技术创建实体资源的虚拟版本,提升资源利用率。KVM(Kernel-based Virtual Machine)作为全虚拟化解决方案,借助Linux内核实现Hypervisor功能,通过模块化方式提供高效的虚拟化环境。
|
29天前
|
存储 Linux 开发者
虚拟机centos7.9一键部署docker
本文介绍了如何在 CentOS 7.9 虚拟机上安装 Docker 社区版 (Docker-ce-20.10.20)。通过使用阿里云镜像源,利用 `wget` 下载并配置 Docker-ce 的 YUM 仓库文件,然后通过 `yum` 命令完成安装。安装后,通过 `systemctl` 设置 Docker 开机自启并启动 Docker 服务。最后,使用 `docker version` 验证安装成功,并展示了客户端与服务器的版本信息。文中还提供了列出所有可用 Docker-ce 版本的命令。
111 0
虚拟机centos7.9一键部署docker
|
2月前
|
KVM 虚拟化
虚拟化技术概述及KVM环境安装
关于虚拟化技术概述及KVM环境安装的教程,涵盖了虚拟化的定义、分类、管理工具,以及KVM的系统需求、安装步骤和使用指南。
70 11
虚拟化技术概述及KVM环境安装
|
2月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
307 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
16天前
|
安全 KVM 虚拟化
OpenEuler 中配置 KVM 虚拟化环境指南
本文档详细介绍了如何在OpenEuler系统中配置和管理KVM虚拟化环境,包括环境准备、组件安装、虚拟机安装及管理命令等,适合初学者和有经验的用户。内容覆盖了从桥接网卡配置到虚拟机的安装与管理,以及常见问题的解决方法,帮助用户高效利用虚拟化技术。
|
2月前
|
Linux pouch 容器
CentOS7部署阿里巴巴开源的pouch容器管理工具实战
关于如何在CentOS 7.6操作系统上安装和使用阿里巴巴开源的Pouch容器管理工具的实战教程。
97 2
CentOS7部署阿里巴巴开源的pouch容器管理工具实战
|
2月前
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
107 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
3月前
|
Linux 数据安全/隐私保护 网络虚拟化
centos7部署Pritunl
centos7部署Pritunl