kvm虚拟化基础

kvm虚拟化基础

Acha
2021-08-06 / 0 评论 / 186 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年08月06日,已超过992天没有更新,若内容或图片失效,请留言反馈。

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 && systemctl enable 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
0

评论

博主关闭了当前页面的评论