virt-install 创建虚拟机
virt-install参数说明
--name 指定虚拟机名称
--memory 分配内存大小
--vcpus 分配CPU核心数
--disk 指定虚拟机磁盘文件,size指定分配大小单位为G
--network 网络类型
--pxe 基于PXE完成安装
--accelerate 加速
--cdrom 指定系统iso镜像
--location
从ftp,http,nfs启动,如ftp://192.168.10.7/dvd;nfs:192.168.10.7:/dvd
--graphics 图形化控制台 none 不启用
--vnc 启用VNC远程管理
--vncport 指定VNC监控端口,默认端口为5900
--vnclisten 指定VNC绑定IP,默认绑定127.0.0.1,改为0.0.0.0
--os-type 虚拟机类型 linux,windows
--os-variant [使用"osinfo-query os" 查看支持的版本]
--force 如果有yes或者no的交互式,自动yes
--noautoconsole 表示不会自动连入虚拟机的控制台
--extra-args 根据--location指定的方式安装GuestOS时,用于传递给内核的额外选项
--extra-args='console=tty0 console=ttyS0,115200n8'
表示为创建的虚拟机指定内核启动时的内核参数,此处为虚拟机内核添加的参数为console=tty0 console=ttyS0,115200n8
--console pty,target_type=serial
--boot
指定安装过程完成后的配置选项,如指定引导设备次序、使用指定的而非安装的kernel/initrd来引导系统启动等 ;例如:
--boot cdrom,hd,network 指定引导次序
指定启动系统的内核及initrd文件
代码语言:javascript复制--boot kernel=KERNEL,initrd=INITRD,kernel_args="console=/dev/ttyS0"
Linux 虚拟机创建
- ISO 镜像安装虚拟机 kvm虚拟机默认使用raw格式的镜像格式,性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持快照镜像,zlib磁盘压缩,AES加密等;
创建qcow2 磁盘文件
代码语言:javascript复制qemu-img create -f qcow2 /kvm/img/kylin01.img 50G
创建虚拟机
代码语言:javascript复制virt-install
--name=kylin001
--memory=4096
--vcpus=2
--disk path=/kvm/img/kylin001.img,format=qcow2,bus=virtio
--accelerate
--cdrom /kvm/iso/Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso
--vnc --vncport=5910
--vnclisten=0.0.0.0
--network bridge=br0,model=virtio
--noautoconsole
- 从网络创建虚拟机
创建qcow2 磁盘文件
代码语言:javascript复制qemu-img create -f qcow2 /kvm/img/kylin002.img 50G
创建虚拟机
代码语言:javascript复制virt-install
--name kylin002
--memory 4096
--vcpus 2
--disk path=/kvm/img/kylin002.img,format=qcow2,bus=virtio
--accelerate
--location http://192.168.100.234:18080/kylin_x86/
--graphics vnc,listen=0.0.0.0,passwd=password
--network bridge=br0,model=virtio
--extra-args='console=tty0 console=ttyS0,115200n8'
--noautoconsole
- 导入虚拟机磁盘镜像创建虚拟机
拷贝系统磁盘文件
代码语言:javascript复制[root@kylin-node03 img]# ls -ll /kvm/img/kylin007.img
-rw-r--r-- 1 qemu qemu 3993305088 Nov 12 16:05 /kvm/img/kylin007.img
[root@kylin-node03 img]# pwd
/kvm/img
创建虚拟机
代码语言:javascript复制virt-install
--name kylin007
--memory 2048
--vcpus 2
--disk /kvm/img/kylin007.img,format=qcow2,bus=virtio
--accelerate
--import
--network bridge=br0,model=virtio
--graphics vnc,listen=0.0.0.0,passwd=password
--noautoconsole
- PXE 创建虚拟机
virt-install
--name guest1-rhel7
--memory 2048
--vcpus 2
--disk size=8
--network bridge=br0,model=virtio
--pxe
--accelerate
--graphics vnc,listen=0.0.0.0,passwd=password
--os-variant rhel7
--noautoconsole
- Kickstart 自动化创建虚拟机
创建qcow2 磁盘文件
代码语言:javascript复制qemu-img create -f qcow2 /kvm/img/kylin002.img 50G
创建虚拟机
代码语言:javascript复制virt-install -v
--arch x86_64 --virt-type kvm
--name kylin008
--memory 4096
--vcpus 2
--disk /kvm/img/kylin008.img,cache=writeback,io=threads,bus=virtio
--os-type linux
--location http://192.168.100.234:18080/kylin_x86/
--network bridge=br0,model=virtio
--graphics vnc,listen=0.0.0.0 --noautoconsole
--initrd-inject "/mnt/ks/ks.cfg"
--extra-args "ks=file:/ks.cfg
console=tty0 console=ttyS0,115200n8
hostname=kylin008"
Windows 虚拟机
- ISO 镜像安装虚拟机
创建磁盘镜像
代码语言:javascript复制qemu-img create -f qcow2 /kvm/img/win10.img 80G
创建虚拟机cdrom
--disk 需要创建磁盘镜像
--disk path 指定size磁盘则直接创建磁盘镜像
代码语言:javascript复制virt-install
--name win10
--memory 4096 --vcpus=2
--disk path=/kvm/img/win10.img,format=qcow2,size=80,bus=virtio
--accelerate --network bridge=br0
--os-type=windows
--cdrom /kvm/iso/cn_windows_10_1809.iso
--graphics vnc,listen=0.0.0.0,port=5920
--disk /kvm/iso/virtio-win-0.1.215.iso,device=cdrom,bus=ide,perms=ro
--noautoconsole
- 导入虚拟机磁盘镜像创建虚拟机
virt-install
--name win10_01
--memory 4096
--vcpus 2
--disk /kvm/img/win10.img,format=qcow2,bus=virtio
--accelerate
--import
--network bridge=br0,model=virtio
--graphics vnc,listen=0.0.0.0,passwd=password
--noautoconsole
通过vnc来控制台访问
查看虚拟机vnc 端口
代码语言:javascript复制virsh vncdisplay win10_01
virsh 命令介绍
查看所有虚拟机
virsh list --all
虚拟机开机
virsh start kylin001
虚拟机关机或断电
默认情况下virsh工具不能对linux虚拟机进行关机操作,linux操作系统需要开启与启动acpid服务,在安装KVM linux虚拟机必须配置此服务。
yum install acpid
systemctl enable acpid && systemctl restart acpid
虚拟机关机
virsh shutdown kylin001
强制关闭电源
virsh destroy kylin001
配置文件启动虚拟机(虚拟机默认的配置文件路径 /etc/libvirt/qemu/)
virsh create /etc/libvirt/qemu/kylin001.xml
虚拟机开机自启动
virsh autostart kylin001
virsh autostart --disable kylin001
导出KVM虚拟机配置文件(备份虚拟机文件)
virsh dumpxml kylin001 > /etc/libvirt/qemu/kylin002.xml
xml文件注册虚拟机
virsh define /etc/libvirt/qemu/kylin002.xml
删除kvm虚拟机
virsh undefine kylin001
说明:该命令只是删除kylin001的xml配置文件,并不删除虚拟磁盘文件
挂起服务器
virsh suspend kylin001
恢复服务器
virsh resume kylin001
查看虚拟机vnc端口
virsh vncdisplay kylin001
查看虚拟机挂载磁盘信息
virsh domblklist kylin001
修改虚拟机名称
virsh domrename kylin001 --new-name kylin002
查看虚拟机网卡
virsh domiflist kylin001
virsh --help 查看帮助
虚拟机快照备份恢复
默认快照的名称为随机指定分配,可使用snapshot-create-as命令指定快照名称
virsh snapshot-create-as 【虚拟机名】 【快照名】
对win10虚拟机创建快照,指定快照名称
代码语言:javascript复制virsh snapshot-create-as win10_01 win10_01_20221113
Domain snapshot win10_01_20221113 created
默认随机生成快照名
代码语言:javascript复制virsh snapshot-create win10_01
查看虚拟机快照
代码语言:javascript复制virsh snapshot-list win10_01
查看当前虚拟机镜像快照
代码语言:javascript复制virsh snapshot-current win10_01
查看虚拟机镜像文件,文件路径/var/lib/libvirt/qemu/snapshot/
代码语言:javascript复制[root@kylin-node03 ~]# ll /var/lib/libvirt/qemu/snapshot/win10_01/win10_01_20221113.xml
-rw------- 1 root root 8667 Nov 13 11:28 /var/lib/libvirt/qemu/snapshot/win10_01/win10_01_20221113.xml
恢复虚拟机快照
确认恢复快照节点,恢复到 win10_01_20221113
代码语言:javascript复制[root@kylin-node03 ~]# virsh snapshot-list win10_01
Name Creation Time State
----------------------------------------------------------
win10_01_20221113 2022-11-13 11:25:51 0800 running
执行恢复,并确认恢复版本
代码语言:javascript复制[root@kylin-node03 ~]# virsh snapshot-revert win10_01 win10_01_20221113
删除虚拟机快照,查看虚拟机快照
代码语言:javascript复制[root@kylin-node03 ~]# qemu-img info /kvm/img/win10.img
删除快照
代码语言:javascript复制[root@kylin-node03 ~]# virsh snapshot-delete win10_01 win10_01_20221113
虚拟机克隆
克隆设备必须暂停或关闭虚拟机,virt-clone命令本地克隆主机名、uuid、mac地址等信息已经自动进行了修改。
代码语言:javascript复制virt-clone -o kylin002 -n kylin003 -f /kvm/img/kylin003.qcow2
-o 被克隆虚拟机
-n 克隆后新的虚拟机
-f 克隆后新虚拟机的磁盘
启动虚拟机
代码语言:javascript复制virsh start kylin003
对比两个主机配置文件的差别
代码语言:javascript复制vimdiff kylin002.xml kylin003.xml
获取虚拟机vnc 端口
代码语言:javascript复制virsh vncdisplay kylin003
:1