kvm 虚拟化教程

简介: 虚拟化是门技术,云计算是个模式(概念)

KVM虚拟化

虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。

宿主机

  • 内存 大于 4G
  • 纯净的操作系统 ( 版本做好为稳定版)
  • 关闭 selinux && firewalld && NetworkManager
systemctl stop firewall && systemctl disbale firewalld
systemctl stop NetworkManager && systemctl disbale NetworkManager
setenforce 0 && sed -i 's/SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

linux 虚拟化软件的差别

linux虚拟化软件

  • qemu 软件纯模拟全虚拟化软件,特别慢!兼容性好!
  • xen(半) 性能特别好,需要使用专门修改之后的内核,兼容性差!
  • kvm(linux) 全虚拟化,它有硬件支持cpu,内置在linux内核模块,而且不需要使用专门的内核
  • vmware workstations 图形界面
  • virtual box 图像化界面

安装 kvm 虚拟化管理工具

kvm kernel-based virtual machine

libvirt 作用:管理虚拟机

虚拟类型:kvm,xen,qemu 等

virt 作用:安装、克隆虚拟机的工具(virt-install\virt-clone)

qemu-kum、qemu-img 作用:管理虚拟机的虚拟磁盘


配置 base 源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安装 rpm包

yum install libvirt virt-install qemu-kvm -y

启动 libvirtd

systemctl start libvirtd.service

安装一台kvm虚拟机

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 \
--memory 1024 --vcpus 1 --disk /opt/centos7.raw,format=raw,size=10 \
--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso \
--network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
--virt-type kvm 虚拟化的类型(qemu)

--os-type=linux 系统类型

--os-variant rhel7 系统版本

--name centos7 虚拟机的名字 (必须唯一)

--memory 1024 虚拟机的内存

--vcpus 1 虚拟cpu的核数

--disk /opt/centos2.raw,format=raw,size=10(必须唯一)

--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso 系统光盘

--network network=default 使用默认NAT的网络

--graphics vnc,listen=0.0.0.0

--noautoconsole (可有可无)

VNC 连接 IP:5900

安装系统注意事项:

  1. 分区 只保留根分区
  2. 关闭内核奔溃备份机制(KDUMP)
  3. 打开网卡开机自启
  4. 修改时区 亚洲/上海
  5. 安装重启后在宿主机启动虚拟机

virsh 管理&配置

# 查看虚拟机列表(--all)
virsh list
# 查询 VNC 端口号
virsh vncdisplay <host>

# 开启虚拟机
virsh start <host>
# 关闭虚拟机
virsh shutdown <host>
# 断电关机
virsh destroy <host>
# 重启虚拟机
virsh reboot <host>
# 挂起虚拟机
virsh suspend <host>
# 恢复虚拟机
virsh resume <host>
# 开机自启 (注:libvirtd 开机自启)
virsh autostart <host>
# 取消开机自启
virsh autostart --disable <host>

# 导出配置
virsh dumpxml centos7 > vm_centos7.xml
# 删除配置 (先关机)
virsh undefine centos7
# 导入配置 (重启生效)
virsh define vm_centos7.xml 
# 修改配置
virsh edit centos7

# 重命名虚拟机 (低版本不支持)
virsh domrename centos7 web01

## kvm 虚拟机允许console登录 (注:在 kvm虚拟机内操作)
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot
# console登录虚拟机
virsh console centos7

虚拟磁盘管理

raw: 俗称裸格式,占用空间比较大,不支持快照功能,不方便传输 ,读写性能较好

qcow2: qcow(copy on write)的升级版,占用空间小,支持快照,性能比raw差一点,方便传输

# 查看虚拟磁盘信息
qemu-img info test.qcow2
# 创建虚拟硬盘
qemu-img create -f qcow2 test.qcow2 2G
# 调整磁盘磁盘容量(只增不减)
qemu-img resize test.qcow2 +20G 
# 磁盘格式转换
qemu-img convert -f raw -O qcow2 oldboy.raw oldboy.qcow2
# 调整虚拟机磁盘格式
# 1. 格式转换
qemu-img convert -f raw -O qcow2 oldboy.raw web01.qcow2
# 2. 修改配置文件
virsh edit web01
# 修改 格式和路径
# <driver name='qemu' type='qcow2'/>
# <source file='/opt/web01.qcow2'/>
# 3. 重启虚拟机
virsh destroy web01
virsh start web01

快照管理

# 创建快照
virsh snapshot-create-as centos7 --name install_ok
# 查看快照
virsh snapshot-list centos7
# 还原快照
virsh snapshot-revert centos7 --snapshotname install_ok
# 删除快照
virsh snapshot-delete centos7 --snapshotname install_ok

# raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中

虚拟机克隆

完整克隆

自动
virt-clone --auto-clone -o centos7 -n web02
手动(可以压缩空间 -c)
# 1.生成磁盘文件
qemu-img convert -f qcow2 -O qcow2 -c web02.qcow2 web03.qcow2 -c
# 2.导出虚拟机配置文件
virsh dumpxml web02 >web03.xml
# 3.修改虚拟机配置
vim web03.xml
## 修改虚拟机的名字
## 删除虚拟机uuid
## 删除mac地址mac add
## 修改磁盘路径disk
# 4.导入虚拟机配置
virsh define web03.xml 
# 5.启动虚拟机
virsh start web03

链接克隆

手动
# 1.生成虚拟机磁盘文件
qemu-img create -f qcow2 -b web03.qcow2 web04.qcow2
# 2.生成虚拟机配置文件
virsh dumpxml web03 >web04.xml
# 3.修改虚拟机配置文件
vim web04.xml
##修改虚拟机的名字
##删除虚拟机uuid
##删除mac地址
##修改磁盘路径
# 4.导入虚拟机并进行启动测试
virsh define web04.xml 
# 5.启动虚拟机
virsh start web04
自动(脚本)
[root@kvm scripts]# cat link_clone.sh 
#!/bin/bash
old_vm=$1
new_vm=$2
#a:生成虚拟机磁盘文件
old_disk=`virsh dumpxml $old_vm|grep "<source file"|awk -F"'" '{print $2}'`
disk_tmp=`dirname $old_disk`
qemu-img create -f qcow2 -b $old_disk  ${disk_tmp}/${new_vm}.qcow2
#b:生成虚拟机的配置文件
virsh dumpxml $old_vm >/tmp/${new_vm}.xml
#修改虚拟机的名字
sed -ri "s#(<name>)(.*)(</name>)#\1${new_vm}\3#g" /tmp/${new_vm}.xml
#删除虚拟机uuid
sed -i '/<uuid>/d' /tmp/${new_vm}.xml
#删除mac地址
sed -i '/<mac address/d' /tmp/${new_vm}.xml
#修改磁盘路径
sed -ri "s#(<source file=')(.*)('/>)#\1${disk_tmp}/${new_vm}.qcow2\3#g" /tmp/${new_vm}.xml
#c:导入虚拟机并进行启动测试
virsh define /tmp/${new_vm}.xml
virsh start ${new_vm}
sh link_clone.sh centos7 web05
相关文章
|
2月前
|
存储 Linux 调度
KVM 虚拟化的功能特性
【10月更文挑战第13天】虚拟化技术创建实体资源的虚拟版本,提升资源利用率。KVM(Kernel-based Virtual Machine)作为全虚拟化解决方案,借助Linux内核实现Hypervisor功能,通过模块化方式提供高效的虚拟化环境。
|
3月前
|
KVM 虚拟化
虚拟化技术概述及KVM环境安装
关于虚拟化技术概述及KVM环境安装的教程,涵盖了虚拟化的定义、分类、管理工具,以及KVM的系统需求、安装步骤和使用指南。
89 11
虚拟化技术概述及KVM环境安装
|
2月前
|
安全 KVM 虚拟化
OpenEuler 中配置 KVM 虚拟化环境指南
本文档详细介绍了如何在OpenEuler系统中配置和管理KVM虚拟化环境,包括环境准备、组件安装、虚拟机安装及管理命令等,适合初学者和有经验的用户。内容覆盖了从桥接网卡配置到虚拟机的安装与管理,以及常见问题的解决方法,帮助用户高效利用虚拟化技术。
|
4月前
|
Linux KVM 虚拟化
在Linux中,KVM和Docker在Linux虚拟化中的区别是什么?
在Linux中,KVM和Docker在Linux虚拟化中的区别是什么?
|
7月前
|
存储 Linux KVM
虚拟化技术之KVM安装与使用
虚拟化技术之KVM安装与使用
|
7月前
|
大数据 Linux KVM
【云计算与大数据技术】虚拟化技术、开源技术Xen、KVM、OpenVZ的讲解(图文解释 超详细)
【云计算与大数据技术】虚拟化技术、开源技术Xen、KVM、OpenVZ的讲解(图文解释 超详细)
273 0
|
存储 监控 网络安全
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
1266 0
|
KVM 虚拟化 Windows
【KVM虚拟化】· KVM中的网络
【KVM虚拟化】· KVM中的网络
269 0
|
存储 KVM 文件存储
【KVM虚拟化】· 存储池、存储卷
【KVM虚拟化】· 存储池、存储卷
671 0