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
安装系统注意事项:
- 分区 只保留根分区
- 关闭内核奔溃备份机制(KDUMP)
- 打开网卡开机自启
- 修改时区 亚洲/上海
- 安装重启后在宿主机启动虚拟机
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
评论