KVM虚拟机管理(X86/ARM)

1. 常用命令

plain 复制代码
1. 查看所有虚拟机
$ virsh list --all

2. 停止虚拟机
$ virsh shutdown 虚拟机名称

3. 启动虚拟机
$ virsh start 虚拟机名称

4. 进入虚拟机命令行模式
$ virsh console 虚拟机名称  之后按回车进入登录

5. 查看虚拟机磁盘信息
$ virsh domblklist 虚拟机名称

6. 重命名域
$ virsh domrename 旧域名 新域名

7. 设置虚拟机开启自启
$ virsh autostart 192-168-0-89

2. 虚拟机创建

  1. 创建虚拟磁盘文件
plain 复制代码
$ qemu-img create -f qcow2 /data/kvm/images/192-168-0-168-openEuler.qcow2 100G 
  1. 安装虚拟机(X86 架构)
plain 复制代码
$ virt-install --name 192-168-0-168-openEuler --ram 8192 --vcpus=2 --cdrom=/data/kvm/iso/openEuler-24.03-LTS-SP2-x86_64-dvd.iso --disk path=/data/kvm/images/192-168-0-168-openEuler.qcow2,size=100,bus=virtio,format=qcow2 --network bridge=br0,model=virtio --os-variant=centos7  --vnc --vncport=-1 --vnclisten=0.0.0.0 --noautoconsole

查看 --os-variant
$ osinfo-query os
  1. 安装虚拟机(ARM 架构)
plain 复制代码
$ virt-install --name 192-168-1-10-openEuler --memory 8192 --vcpus 2 --cdrom=/data/kvm/iso/openEuler-24.03-LTS-SP2-aarch64-dvd.iso --disk path=/data/kvm/images/192-168-1-10-openEuler.qcow2,size=100,bus=virtio,format=qcow2 --network bridge=br0,model=virtio --arch=aarch64 --machine=virt --boot loader=/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw,loader_type=pflash,nvram=/data/kvm/nvram/192-168-1-10-openEuler_VARS.fd --vnc --vncport=-1 --vnclisten=0.0.0.0   --noautoconsole
  1. 启动虚拟机
plain 复制代码
$ virst start 192-168-0-168-openEuler
  1. 查看 vnc 端口
plain 复制代码
$ virsh vncdisplay 192-168-1-10-openEuler 
:13

# vnc默认端口为5900+,比如5901、5902等,:13对应5913端口
  1. 用VNC软件进行配置

用 vnc 软件如 RealVNC Viewer 登录,输入 物理机IP:VNC端口 访问

  1. 用VNC软件登录后配置虚拟机IP
plain 复制代码
$ vim /etc/sysconfig/network-scripts/ifcfg-ens3

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=ens3
DEVICE=ens3
ONBOOT=yes
IPADDR=192.168.0.168
PREFIX=23
GATEWAY=192.168.0.1
DNS1=223.5.5.5
IPV6_DISABLED=yes
  1. 重启网卡即可登录
plain 复制代码
$ systemctl restart network
  1. 设置登录虚拟机选项
plain 复制代码
$ grubby --update-kernel=ALL --args="console=ttyS0"

3. 虚拟机克隆

  1. 确保被克隆的虚拟机关闭
plain 复制代码
$ virsh shutdown 192-168-0-168-openEuler
  1. 克隆虚拟机
plain 复制代码
$ virt-clone -o 192-168-0-168-openEuler -n 192-168-0-168 -f /data/kvm/images/192-168-0-168.qcow2  --auto-clone

# ARM物理机
$ truncate -s 67108864 192-168-1-168_VARS.fd  #用于缩小或扩展文件大小,一般情况下不用这个命令,如果克隆启动后报错fd文件大小不一致,可使用这个命令调整fd文件大小

4. 虚拟机删除

  1. 检查虚拟机是否做过快照,如果有快照,则先删除快照
plain 复制代码
$ virsh snapshot-list --domain 虚拟机名
$ virsh snapshot-delete --domain 虚拟机名 --snapshotname 快照名
  1. 检查虚拟机使用的磁盘文件
plain 复制代码
$ virsh dumpxml  虚拟机名

记录下使用过的磁盘文件,后边rm删除
  1. 关闭虚拟机
plain 复制代码
$ virsh shutdown 

关闭不了可以使用destroy强制关机
$ virsh destroy 虚拟机名 
  1. 删除虚拟机
plain 复制代码
$ virsh undefine 虚拟机名  --remove-all-storage #取消定义虚拟机,对于kvm来说是已经删除了 
  1. 删除虚拟机(ARM)
plain 复制代码
$ virsh undefine 192-168-1-10-openEuler --nvram --remove-all-storage

5. 配置调整

5.1. 调整内存/CPU
  1. 关闭虚拟机
plain 复制代码
$ virsh shutdown 192-168-1-103
  1. 编辑虚拟机配置
plain 复制代码
$ virsh edit 192-168-1-103
  1. 启动虚拟机
plain 复制代码
$ virsh start 192-168-1-103
5.2. 添加磁盘
  1. 创建镜像文件
plain 复制代码
$ qemu-img create -f qcow2 /data/kvm/images/192-168-1-101_data.qcow2 1024G
  1. 添加硬盘
plain 复制代码
$ virsh attach-disk 192-168-1-101 --source /data/kvm/images/192-168-1-101_data.qcow2 --target vdb --subdriver qcow2 --persistent

$ virsh console 192-168-1-101
$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom
vda             252:0    0  100G  0 disk
├─vda1          252:1    0    1G  0 part /boot
├─vda2          252:2    0    8G  0 part [SWAP]
└─vda3          252:3    0   91G  0 part
└─centos-root 253:0    0   91G  0 lvm  /
vdb             252:16   0    1T  0 disk
$ mkdir /data
$ fdisk /dev/vdb
$ mkfs.ext4 /dev/vdb1
$ mount /dev/vdb1 /data/
$ vim /etc/fstab
/dev/vdb1       /data   ext4    defaults        0 0
5.3. 删除磁盘
plain 复制代码
$ virsh domblklist 192-168-1-101
$ virsh detach-disk 192-168-1-101 /data/kvm/images/192-168-1-101_data.qcow2
$ virsh edit 192-168-1-101 #删除192-168-1-101_data.qcow2
5.4. 调整磁盘大小

https://www.jianshu.com/p/5ca598424eb9

6. 快照管理

plain 复制代码
# 查看快照
$ virsh snapshot-list 192-168-0-218

# 创建快照
$ virsh snapshot-create-as 192-168-0-219 192-168-0-219_snapshot

# 恢复快照
$ virsh snapshot-revert 192-168-0-219 192-168-0-219_snapshot

# 删除快照
virsh snapshot-delete 192-168-0-219 192-168-0-219_snapshot

7. 虚拟机迁移

  1. 关闭虚拟机
plain 复制代码
$ virsh shutdown test-template
  1. 复制虚拟机镜像/配置文件到新机器
plain 复制代码
$ scp test-template.qcow2 root@192.168.0.90:/data/kvm/images
$ scp test-template.xml root@192.168.0.90:/etc/libvirt/qemu
  1. 修改配置文件

在新机器上修改配置文件中部分信息,如路径

  1. 定义虚拟机
plain 复制代码
$ virsh define /etc/libvirt/qemu/test-template.xml
  1. 启动虚拟机
plain 复制代码
$ virsh start test-template

8. KVM 版本不一致迁移

  1. 复制 qcow2 文件到对应物理机路径
  2. 使用virt-install重新创建,且使用已有磁盘,不重新安装
plain 复制代码
$ virt-install --name qidian-zz-192-168-0-196 --memory 8192 --vcpus 4 --disk path=/data/kvm/images/qidian-zz-192-168-0-196.qcow2,bus=virtio --disk path=/data/kvm/images/qidian-zz-192-168-0-196_data.qcow2,bus=virtio --network bridge=br0,model=virtio --vnc --vncport=-1 --vnclisten=0.0.0.0 --import

9. 虚拟机开机自启

  1. 开机自启
plain 复制代码
$ virsh autostart 192-168-1-14
  1. 关闭开机自启
plain 复制代码
$ virsh autostart --disable 192-168-1-14
  1. 查看开机自启的虚拟机
plain 复制代码
$ virsh list --autostart --all
相关推荐
BigDark的笔记16 小时前
OPTEE 3.15运行在QEMU ARMv8上
网络安全·arm
XINVRY-FPGA4 天前
XC7Z020-2CLG400I Xilinx AMDZynq-7000 FPGA
嵌入式硬件·fpga开发·arm·硬件工程·dsp开发·fpga
梁洪飞4 天前
armv7a和uboot里面的重要概念
arm开发·嵌入式硬件·arm
FreakStudio4 天前
一行命令搞定驱动安装!MicroPython 开发有了自己的 “PyPI”包管理平台!
python·stm32·单片机·嵌入式·arm·电子diy
toradexsh5 天前
基于 NXP iMX8MP ARM平台安装测试 Openclaw
linux·docker·arm·nxp·openclaw
Stone.Wu23 天前
快速理解ARM Cortex-M流水线:指令执行过程通俗解释
arm
我在人间贩卖青春23 天前
汇编之分支跳转指令
汇编·arm·分支跳转
我在人间贩卖青春23 天前
汇编之加载存储指令
汇编·arm·寄存器加载存储
我在人间贩卖青春23 天前
汇编之状态寄存器访问指令
汇编·arm·状态寄存器