KVM 虚拟机创建与管理

type
status
date
slug
summary
tags
category
icon
password

一、创建 KVM 虚拟机

1. 使用 virt-manager(图形化工具)

  • 工具:virt-manager
  • 步骤:
      1. 打开 virt-manager
      1. 创建新虚拟机,设置名称(如 vmt01_centos79
      1. 配置:
          • CPU、内存、磁盘、网络等
          • 使用 VNC 进行远程连接
      1. 开始安装系统

2. 使用 virt-install(命令行工具)

  • -name=vm02_centos79
    • 虚拟机名称为 vm02_centos79
    • virsh list --all 中会显示这个名字。
  • -graphics vnc,listen=0.0.0.0,port=-1,keymap=en_us
    • 配置虚拟机的图形界面访问方式为 VNC
    • listen=0.0.0.0:允许任何 IP 连接 VNC(默认只允许 localhost)。
    • port=-1:自动分配 VNC 端口。
    • keymap=en_us:使用美式键盘布局。
  • -memory=1024,maxmemory=2048
    • 分配给虚拟机 1GB RAM(即时分配)。
    • maxmemory=2048:最大可用内存为 2GB,支持动态调整。
  • -vcpus 2,maxvcpus=4
    • 分配 2 个虚拟 CPU 给虚拟机。
    • maxvcpus=4:虚拟机可动态扩展到最多 4 个 vCPU。
  • -disk path=/var/lib/libvirt/images/vm02_centos79.qcow2,size=8,format=qcow2
    • 创建虚拟硬盘:
      • 文件路径:/var/lib/libvirt/images/vm02_centos79.qcow2
      • 容量:8GB
      • 格式:qcow2(支持快照和动态扩展)
  • -bridge=virbr0
    • 虚拟机网络使用宿主机网桥 virbr0
    • 这意味着虚拟机会接入 NAT 网络(192.168.122.0/24),可通过宿主机访问外网。
  • -cdrom=/kvm/iso/CentOS-7.9-x86_64-Everything-2009.iso
    • 使用指定 ISO 文件安装操作系统。
    • 类似于物理机用光盘安装系统。
  • -autostart
    • 设置虚拟机开机自启。
    • 宿主机重启后,虚拟机会自动启动。

3. 查看虚拟机状态

输出示例:

4. 登录虚拟机

方式一:使用 virt-viewer

方式二:使用 VNC 客户端

方式三:SSH 登录(需配置网络)


二、资源动态调整

1. CPU 热添加

前提:虚拟机配置中已设置最大 CPU 数量。
查看虚拟机信息:

2. 内存气球(Memory Ballooning)

前提
  1. 设置最大内存量
  1. 安装 virtio 驱动
查看内存气球设备:
查看当前内存:
调整内存:

三、虚拟机相关文件

1. 配置文件

  • 路径:/etc/libvirt/qemu/虚拟机名称.xml
  • 查看配置:
    • 编辑配置:

      2. 磁盘文件

      • 默认路径:/var/lib/libvirt/images/

      3. 设置开机自启动

      会在 /etc/libvirt/qemu/autostart/ 下创建软链接。

      四、删除虚拟机


      五、离线迁移(冷迁移)

      步骤:
      1. 关闭虚拟机
      1. 将配置文件和磁盘文件拷贝到新服务器
      1. 在新服务器上重新定义虚拟机:
        1. 启动虚拟机:
          1. 设置自启动(可选):

            六、补充知识点

            • VNC:虚拟网络控制台,用于远程图形化访问虚拟机。
            • virsh:用于管理 KVM 虚拟机的命令行工具。
            • virtio:半虚拟化驱动,提升 I/O 性能。
            • qcow2:QEMU 镜像格式,支持快照、压缩等功能。

            七、注意事项

            • 内存气球和 CPU 热添加需虚拟机内核和驱动支持。
            • 迁移前确保目标服务器有足够的磁盘和内存资源。
            • 使用 virsh undefine 前请确认虚拟机已关闭。

            Loading...