KVM虚拟化

1. 虚拟化技术

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

2. 虚拟化软件的差别

qemu                软件模拟全虚拟化,速度慢,兼容性好!

xen(半)        性能最好,需要修改内核,兼容性差~ redhat 5.5  

kvm                  全虚拟机,硬件支持cpu,内置在linux模块,不需要使用专门的内核 centos6  kvm,性能好,兼容性好

3. 安装kvm虚拟化管理工具

# 本文以centos8(4u4g 50g磁盘)为例,已配置阿里源

yum install libvirt virt-install qemu-kvm -y
systemctl start libvirtd
virt-install --virt-type kvm --os-type=linux --os-variant rhel7.0 --name centos8 --memory 1024 --vcpus 1 --disk /opt/centos1.raw,format=raw,size=20 --cdrom /opt/CentOS-8.1.1911-x86_64-dvd1.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

使用vnc连接安装镜像

4. KVM常用命令

virsh list                           # 查看vm列表,关机的不显示
virsh list --all                     # 查看所有vm列表
virsh start centos7(vmname)        # 启动centos7
virsh shutdown centos7               # centos7关机
virsh destroy centos7                # centos7关电源
virsh reboot centos7                 # centos7重启
virsh dumpxml centos7                # 导出centos7配置,显示在屏幕上
virsh dumpxml centos7 > vm_centos7.xml    # 将centos7配置导入到centos7.xml中
virsh undefine  centos7                   # 删除centos7,实际vm文件还在,virsh list查看不到
virsh define vm_centos7.xml               # 导入配置
virsh suspend centos7                     # 挂起centos7
virsh resume centos7                      # 恢复挂起centos7
virsh autostart centos7                   # 设置centos7开机自启动
virsh autostart --disable centos7         # 取消centos7开机自启
virsh edit centos7                        # 修改centos7配置文件

虚拟机配置文件位置 /etc/libvirt/qemu/name.xml

centos7 console登录

1. 需要登录到虚拟机内部,执行命令

grubby --update-kernel=ALL --args="console=ttys0,115200n8

2. kvm上执行

virsh console centos7 

5. 磁盘管理

raw  裸格式,占用空间大,不支持快照,不方便管理,读写性能好

qcow2   qcow(copy on write)占用空间小,支持快照,性能比raw差,方便传输

常用命令

qemu-img info centos1.raw                # 查看centos1.raw磁盘信息
qemu-img create -f qcow2 test.qcow2 2g   # 创建2g test.qcow2磁盘
qemu-img resize test.qcow2 +1g           # 将test.qcow2磁盘增加1g
qemu-img resize test.qcow2 5g            # 将test.qcow2磁盘调整到5g   # 无法缩减容量
qemu-img resize test.qcow2 --shrink 3g   # 将test.qcow2磁盘调整到3g   # 慎用
qemu-img convert -f raw -O qcow2 /opt/centos1.raw /opt/centos1.qcow2 -c   
                                         # 将centos1.raw转换成centos1.qcow2
    -f                                   # 旧磁盘格式
    -O                                   # 新磁盘格式
    -c                                   # 压缩

# 注意,转换磁盘格式后需要用virsh edit vmname修改配置文件(磁盘格式,路径),转换后原磁盘还在原路径

6. 快照管理

virsh snapshot-create centos7                         # 给centos7创建快照,快照名称默认
virsh snapshot-create-as centos7 centos7.snapshot     # 给centos7创建centos7.snapshout名称快照
qemu-img info centos7.qcow2                           # 查看centos7.qcow2的快照(需关机)
virsh snapshot-list centos7                           # 查看centos7快照(需关机)


virsh snapshot-delete centos7 1738238979              # 删除centos7的1738238979快照

7. 链接克隆与完整复制

1. 手动克隆虚拟机

qemu-img convert -f qcow2 -O qcow2 -c test.qcow2 web1.qcow2    # 以test.qcow2磁盘为模板创建web1.qcow2磁盘
virsh dumpxml centos7 > vm_web1.xml                            # 导出centos7的配置文件到vm_web1.xml中
vim vm_web1.xml            # 修改name,删除uuid,删除mac address,修改磁盘
virsh define vm_web1.xml   # 导入vm_web1.xml

2. 自动克隆

virt-clone -o web1 -n web2 --auto-clone     # 以web1为模板自动克隆web2

3. 链接克隆

qemu-img create -f qcow2 -b web2.qcow2 web3.qcow2    # 以web2为目标链接克隆web3磁盘
virsh dumpxml web2 > vm_web3.xml                     # 将web2配置导入vm_web3.xml中
vim vm_web3.xml                                      # 修改vm_web3.xml(名称,磁盘;删除uuid,mac)
virsh define vm_web3.xml                             # 导入vm_web3.xml

链接克隆脚本

#!/bin/bash
old_vm=$1
new_vm=$2

# 生成磁盘文件
old_vm_disk=`virsh dumpxml web2 | grep 'source file' | awk -F "'" '{print $2}'`
disk_path=`dirname $old_vm_disk`

qemu-img create -f qcow2 -b $old_vm_disk ${disk_path}/${new_vm}.qcow2

# 生成配置文件
virsh dumpxml $old_vm > /tmp/${new_vm}.xml

# 修改新vm配置文件
# 修改名称
sed -ri "s#(<name>)(.*)(<\/name>)#\1${new_vm}\3#g" /tmp/${new_vm}.xml
# 删除vm 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_path}/${new_vm}.qcow2\3#g" /tmp/${new_vm}.xml
# 导入新vm
virsh define /tmp/${new_vm}.xml
# 开启vm
virsh start $new_vm

8. KVM虚拟机的桥接网络

创建桥接网卡

virsh iface-bridge ens160 br0   # 创建桥接网络
virsh iface-unbridge br0        # 取消桥接网卡

新虚拟机使用桥接模式

# 默认NAT模式
virt-install --virt-type kvm --os-type=linux --os-variant rhel7.0 --name centos7 --memory 2048 --vcpus 2 --disk /opt/centos1.raw,format=raw,size=5 --cdrom /opt/CentOS-7-x86_64-Minimal-2003.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
# 桥接模式
virt-install --virt-type kvm --os-type=linux --os-variant rhel7.0 --name centos7_2 --memory 2048 --vcpus 2 --disk /opt/centos7_2.raw,format=raw,size=5 --cdrom /opt/CentOS-7-x86_64-Minimal-2003.iso --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

修改现有虚拟机使用桥接模式

<interface type='bridge'>
<source bridge='br0'/>

常见问题

1. libvirtd服务报错  internal error: Failed to start QEMU binary /usr/libexec/qemu-kvm for probing: qemu-kvm: cannot initialize crypto: Unable to initialize gcrypt

解决方法:

yum upgrade libgcrypt -y

2. centos8 vnc连接时需要关闭防火墙

systemctl stop firewalld

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值