虚拟化KVM
# kvm介绍
KVM(用于基于内核的虚拟机)是一个针对x86硬件上的Linux的完整虚拟化解决方案,包含虚拟化扩展(Intel VT或AMD-V)。它由一个可加载的内核模块kvm组成。ko,它提供了核心虚拟化基础设施和处理器专用模块kvmintel。ko或kvm-amd.ko。
使用KVM,可以运行运行未经修改的Linux或Windows映像的多个虚拟机。每个虚拟机都有专用虚拟化硬件:网卡、磁盘、图形适配器等。
KVM是开源软件。KVM的内核组件自2.6.20起包含在主线Linux中。KVM的用户空间组件自1.3起包含在主流QEMU中。
# virt工具安装
- centos7
yum install libvirt virt-install qemu-kvm -y
- 如果需要安装图形化界面,执行下面两条命令
yum groups install "GNOME Desktop" -y
yum install tigervnc-server.x86_64 virt-manager -y
- ubuntu
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- 麒麟服务器
yum install libvirt virt-install qemu -y # virt-manager
- 查看是否支持
lsmod |grep kvm
# 创建kvm虚拟机
- 创建虚拟机,centos7
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /data/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7.9-x86_64-Minimal-2009.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
查看iptables规则转发,会添加几个内部网段到 virbr0网卡 的规则:iptables -t nat -L -n
参数说明
参数 | 说明 |
---|---|
--virt-type kvm | 虚拟机的类型(qemu) |
--os-type=linux | 系统类型 |
--os-variant rhel7 | 系统版本 |
--name centos7 | 虚拟机的名称 |
--memory 1024 | 分配的内存 M |
--vcpus 1 | 分配的CPU数量 |
--disk /data/centos2.raw,format=raw,size=50 | 存储路径,格式,大小/G |
--cdrom /data/CentOS-7.9-x86_64-Minimal-2009.iso | 镜像路径 |
--network network=default | 网络,默认使用NAT |
--graphics vnc,listen=0.0.0.0 | 图形化工具TightVNC,监听端口默认从5900开始 |
--noautoconsole | 控制台 |
raw: 性能好(连续读写),不支持快照,裸格式,占用空间较大,不方便传输,size设置50G,占用50G
qcow2: 性能比raw差一点(随机读写),支持快照,占用空间小,方便传输,size设置50G,使用多少占用多少
配置文件存储路径:ls /etc/libvirt/qemu
# kvm虚拟机常用操作命令
- 查看虚拟机列表,“--all”查看包含关机的虚拟机
virsh list --all
- VNC端口查看
virsh vncdisplay --domain centos7
- 备份配置
在虚拟机开机状态,或者虚拟机未设置undefine,
virsh dumpxml centos7 >centos7.xml
- 还原配置
当磁盘raw还在,配置文件也存在,恢复
virsh define centos7.xml
- 删除配置,(当关闭虚拟机,virsh list 不可见,但磁盘存储文件还在),
virsh undefine centos7
- 重命名
virsh domrename centos7 centos7.9
- 启停虚拟机命令
关机:virsh shutdown centos7
拔电源:virsh destroy centos7
开机:virsh start centos7
重启:virsh reboot centos7
挂起:virsh suspend centos7
恢复:virsh resume centos7
- 设置虚拟机开机自启动,libvirtd控制
设置开机自启:virsh autostart centos7
取消开机自启:virsh autostart --disable centos7
- Centos7宿主机使用console登录虚拟机
kvm虚拟机修改内核配置:/boot/grub2/grub.cfg,记得备份
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
,reboot 重启虚拟机
# kvm磁盘管理,和快照
- 创建虚拟硬盘
qemu-img create -f raw /data/test1.raw 1G
- 查看虚拟磁盘信息
qemu-img info /data/test1.raw
- 设置虚拟磁盘大小
qemu-img resize /data/test1.raw +5G
如果是“+5G”就是加5G,如果是“5G”就是设置大小为5G,只可加不可减
- 转换虚拟硬盘格式
当需要把 centos7.raw 格式的数据盘,修改为 centos7.qcow2 的格式
关闭虚拟机:virsh shutdown centos7
数据盘格式转换:qemu-img convert -f raw -O qcow2 centos7.raw centos7.qcow2
编辑虚拟机xml:virsh edit centos7
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/> 修改type类型为qcow2
<source file='/data/centos7.qcow2'/> 修改新的数据盘名
启动虚拟机:virsh start centos7
查看,编辑nat网络:virsh net-list
,virsh net-edit --network default
# kvm快照管理
注意:raw不支持快照,qcow2支持快照(写时复制)
创建快照:virsh snapshot-create centos7
查看虚拟机centos7有哪些快照:virsh snapshot-list centos7
还原快照:virsh snapshot-revert centos7 --snapshotname 1667551587
删除快照:virsh snapshot-delete centos7 --snapshotname 1667551587
# kvm克隆
# virt-clone命令(完整克隆)
注意:克隆需要挂起或者关机虚拟机
老虚拟机:centos7,新虚拟机名:centos7-01,完整克隆
virt-clone --auto-clone -o centos7 -n centos7-01
# 手动克隆(完整克隆)
拷贝数据文件,centos7.qcow2
dumpxml 导一份配置,修改参数: (name重命名,domain:uuid删除 ,disk:source修改路径,interface:mac删除)
# 链接克隆
从centos7链接克隆新的为cento7-02
进入到数据源目录:qemu-img create -f qcow2 -b centos7.qcow2 centos7-02.qcow2
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7-02 --memory 1024 --vcpus 1 --disk /data/centos7-02.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
--boot:指定为本地硬盘