1
0
wiki/Tech/operating-system/Virtualization/2.KVM虚拟化/2. KVM 安装配置.md
2024-07-16 21:28:11 +08:00

16 KiB
Raw Blame History

title description keywords tags author date
KVM 安装配置 如何在 Linux 系统上安装和配置 KVM 虚拟化技术包括硬件要求、操作系统选择、KVM 安装步骤、网络桥接配置、存储池和存储卷管理、虚拟机创建和管理工具的使用。
KVM
Linux
虚拟化安装
网络桥接
存储池
虚拟机管理
技术/操作系统
虚拟化/KVM
仲平 2024-07-16

环境准备

硬件要求

检查 CPU 是否支持虚拟化技术Intel VT-x 或 AMD-V

在部署 KVM 前,需要确保系统的 CPU 支持硬件虚拟化技术。这些技术包括 Intel 的 VT-x 和 AMD 的 AMD-V。以下是检查方法

  1. Intel CPU使用命令 grep -E "vmx" /proc/cpuinfo 检查 CPU 是否支持 VT-x。
  2. AMD CPU使用命令 grep -E "svm" /proc/cpuinfo 检查 CPU 是否支持 AMD-V。

如果命令输出中包含 vmxsvm,则表示 CPU 支持相应的虚拟化技术。

启用 BIOS/UEFI 中的虚拟化支持

即使 CPU 支持虚拟化技术,也需要在 BIOS/UEFI 中启用相应的功能。以下是通用的启用步骤,具体步骤可能因主板制造商不同而有所差异:

  1. 启动计算机并进入 BIOS/UEFI 设置界面(通常按 DeleteF2F10Esc 键)。
  2. 在 BIOS/UEFI 设置中,找到“高级”或“处理器”选项。
  3. 启用 "Intel Virtualization Technology" 或 "AMD-V" 选项。
  4. 保存更改并退出 BIOS/UEFI 设置。

操作系统要求

KVM 作为 Linux 内核的一部分,主要在 Linux 操作系统上运行。以下是一些常用的、支持 KVM 的 Linux 发行版:

  • Ubuntu:广泛使用的发行版,提供了良好的社区支持和文档。
  • CentOS:企业级发行版,基于 Red Hat Enterprise Linux (RHEL) 的源代码构建,适合服务器环境。
  • RHELRed Hat Enterprise Linux提供商业支持和长期维护广泛应用于企业环境。

安装 KVM 和 QEMU

在 Ubuntu 上安装

  1. 更新软件包列表:

    sudo apt update
    
  2. 安装 KVM、QEMU 和相关工具:

    sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
    
  3. 启用并启动 libvirtd 服务:

    sudo systemctl enable --now libvirtd
    

在 CentOS/RHEL 上安装

  1. 更新系统:

    sudo yum update
    
  2. 安装 KVM、QEMU 和相关工具:

    sudo yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
    
  3. 启用并启动 libvirtd 服务:

    sudo systemctl enable --now libvirtd
    

在其他 Linux 发行版上安装

以下是一些其他常见 Linux 发行版的安装方法:

  • Debian:

    sudo apt update
    sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils
    sudo systemctl enable --now libvirtd
    
  • Fedora:

    sudo dnf update
    sudo dnf install @virtualization
    sudo systemctl enable --now libvirtd
    

安装虚拟机管理工具

安装 libvirt

libvirt 是一个开源 API用于管理平台虚拟化。前面已经在安装 KVM 和 QEMU 时安装了 libvirt。确保其已启用并正在运行:

sudo systemctl enable --now libvirtd

安装 virt-manager

virt-manager 是一个基于 GUI 的虚拟机管理工具,适用于桌面用户。

  • 在 Ubuntu 上安装:

    sudo apt install virt-manager
    
  • 在 CentOS/RHEL 上安装:

    sudo yum install virt-manager
    
  • 在其他 Linux 发行版上安装:

    • Debian:

      sudo apt install virt-manager
      
    • Fedora:

      sudo dnf install virt-manager
      

验证安装

检查 KVM 模块是否已加载

  1. 检查 KVM 模块是否已加载:

    lsmod | grep kvm
    

    应该看到类似以下的输出:

    kvm_intel             204800  0
    kvm                   655360  1 kvm_intel
    
  2. 如果使用 AMD 处理器,检查 kvm-amd 模块:

    lsmod | grep kvm
    

    应该看到类似以下的输出:

    kvm_amd               204800  0
    kvm                   655360  1 kvm_amd
    

确认虚拟化功能可用

  1. 在 Ubuntu 和 Debian 上使用 kvm-ok 工具检查虚拟化功能:

    sudo apt install cpu-checker
    sudo kvm-ok
    

    输出应显示:

    INFO: /dev/kvm exists
    KVM acceleration can be used
    
  2. 在 CentOS/RHEL 和其他发行版上,使用 virt-host-validate 工具检查:

    sudo virt-host-validate
    

    输出应显示:

    QEMU: Checking for hardware virtualization: PASS
    QEMU: Checking for device /dev/kvm: PASS
    QEMU: Checking for device /dev/vhost-net: PASS
    QEMU: Checking for device /dev/net/tun: PASS
    

通过以上步骤,可以确保 KVM 及其相关工具已正确安装并配置好。接下来可以开始创建和管理虚拟机,充分利用 KVM 提供的虚拟化功能。

基本配置

配置网络桥接

网络桥接允许虚拟机直接与主机网络进行通信,使其像物理机一样访问网络。以下是创建和配置虚拟网络桥接的详细步骤:

创建虚拟网络桥接(桥接模式)

  1. 安装必要的软件包

    • 在 Ubuntu 上:

      sudo apt install bridge-utils
      
    • 在 CentOS/RHEL 上:

      sudo yum install bridge-utils
      
  2. 配置网络桥接

    • 编辑网络配置文件以添加桥接配置。例如,假设你正在使用 eth0 接口。

    • 在 Ubuntu 上 编辑 /etc/netplan/01-netcfg.yaml 文件(具体文件名可能不同):

      network:
        version: 2
        renderer: networkd
        ethernets:
          eth0:
            dhcp4: no
        bridges:
          br0:
            interfaces: [eth0]
            dhcp4: yes
      

      应用配置:

      sudo netplan apply
      
    • 在 CentOS/RHEL 上 创建或编辑 /etc/sysconfig/network-scripts/ifcfg-br0 文件:

      DEVICE=br0
      TYPE=Bridge
      BOOTPROTO=dhcp
      ONBOOT=yes
      

      编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件:

      DEVICE=eth0
      BOOTPROTO=none
      ONBOOT=yes
      BRIDGE=br0
      

      重启网络服务:

      sudo systemctl restart network
      

配置桥接网络的详细步骤

  1. 验证桥接配置

    ip a
    

    应该看到 br0 接口与 eth0 接口关联,且获得了 IP 地址。

  2. 配置 libvirt 使用桥接网络 编辑或创建网络配置文件,例如 /etc/libvirt/qemu/networks/bridged.xml

    <network>
      <name>bridged</name>
      <forward mode='bridge'/>
      <bridge name='br0'/>
    </network>
    

    定义并启动该网络:

    sudo virsh net-define /etc/libvirt/qemu/networks/bridged.xml
    sudo virsh net-start bridged
    sudo virsh net-autostart bridged
    

配置存储池和存储卷

存储池和存储卷管理是 KVM 中虚拟机存储管理的重要组成部分。存储池可以是目录、LVM 或 NFS 等类型,存储卷则是具体的磁盘映像文件。

创建存储池

  1. 目录类型存储池

    • 创建目录:

      sudo mkdir -p /var/lib/libvirt/images
      
    • 定义存储池:

      sudo virsh pool-define-as --name default --type dir --target /var/lib/libvirt/images
      
    • 启动并自动启动存储池:

      sudo virsh pool-start default
      sudo virsh pool-autostart default
      
  2. LVM 类型存储池

    • 创建物理卷和卷组:

      sudo pvcreate /dev/sdX
      sudo vgcreate vg_kvm /dev/sdX
      
    • 定义存储池:

      sudo virsh pool-define-as --name lvm-pool --type logical --source-name vg_kvm
      
    • 启动并自动启动存储池:

      sudo virsh pool-start lvm-pool
      sudo virsh pool-autostart lvm-pool
      
  3. NFS 类型存储池

    • 安装 NFS 客户端:

      • 在 Ubuntu 上:

        sudo apt install nfs-common
        
      • 在 CentOS/RHEL 上:

        sudo yum install nfs-utils
        
    • 定义存储池:

      sudo virsh pool-define-as nfs-pool netfs --source-host nfs-server --source-path /path/to/nfs/export --target /mnt/nfs
      
    • 启动并自动启动存储池:

      sudo virsh pool-start nfs-pool
      sudo virsh pool-autostart nfs-pool
      

管理存储卷

  1. 创建存储卷

    • 在默认存储池中创建一个新的存储卷:

      sudo virsh vol-create-as default new-volume 10G
      
    • 在 LVM 存储池中创建一个新的逻辑卷:

      sudo virsh vol-create-as lvm-pool lv_new-volume 10G
      
  2. 查看存储卷

    sudo virsh vol-list default
    sudo virsh vol-list lvm-pool
    
  3. 删除存储卷

    sudo virsh vol-delete new-volume --pool default
    

通过以上配置步骤,可以成功配置 KVM 的网络桥接、存储池和存储卷,确保虚拟机具备网络连接和存储资源。

创建和管理虚拟机

使用命令行工具创建虚拟机

使用 virt-install 创建虚拟机

virt-install 是一个命令行工具,用于创建虚拟机。它支持多种参数,可以灵活配置虚拟机的各种选项。

  1. 创建基本虚拟机

    sudo virt-install \
      --name myvm \
      --ram 2048 \
      --disk path=/var/lib/libvirt/images/myvm.qcow2,size=20 \
      --vcpus 2 \
      --os-type linux \
      --os-variant ubuntu20.04 \
      --network bridge=br0 \
      --graphics vnc \
      --cdrom /path/to/ubuntu-20.04.iso
    

    以上命令创建了一个名为 myvm 的虚拟机,分配 2 GB 内存、20 GB 磁盘空间和 2 个虚拟 CPU使用桥接网络并通过 VNC 访问图形界面。

  2. 其他常用选项

    在使用 virt-install 创建和安装虚拟机时,以下是一些常用的选项及其功能,列在一个表格中以便参考:

    选项 功能
    --name 虚拟机的名称
    --memory 分配给虚拟机的内存大小单位MB
    --vcpus 分配给虚拟机的虚拟 CPU 数量
    --disk 定义虚拟机的磁盘配置
    --cdrom 使用 CD-ROM 镜像文件作为安装源
    --location 网络安装源的位置URL 或本地路径)
    --os-type 指定操作系统类型(如 linuxwindows
    --os-variant 指定操作系统版本
    --graphics 配置图形显示方式
    --network 配置虚拟机的网络接口
    --extra-args 向内核传递额外的启动参数
    --boot 配置引导设备和引导顺序
    --console 配置控制台类型
    --import 从现有磁盘映像文件导入虚拟机
    --autostart 安装后自动启动虚拟机
    --cpu 配置 CPU 相关选项
    --check 启用或禁用安装前的配置检查
    --virt-type 指定虚拟化类型(如 kvmxen
    --initrd-inject 指定需要注入到 initrd 的文件
    --metadata 定义虚拟机的元数据
    --noautoconsole 安装后不自动连接到控制台
    --wait 等待安装完成的时间(单位:分钟)

使用 virsh 管理虚拟机

virsh 是一个强大的命令行工具,用于管理和控制虚拟机。以下是一些常用的命令及其功能,列在一个表格中以便参考:

命令 功能
virsh list 列出当前运行的虚拟机
virsh list --all 列出所有虚拟机,包括停止的
virsh start <vm_name> 启动指定的虚拟机
virsh shutdown <vm_name> 关闭指定的虚拟机
virsh reboot <vm_name> 重启指定的虚拟机
virsh destroy <vm_name> 强制关闭指定的虚拟机
virsh suspend <vm_name> 暂停指定的虚拟机
virsh resume <vm_name> 恢复暂停的虚拟机
virsh create <xml_file> 从 XML 配置文件创建并启动虚拟机
virsh define <xml_file> 定义但不启动虚拟机
virsh undefine <vm_name> 删除虚拟机定义,但不删除磁盘文件
virsh edit <vm_name> 编辑虚拟机的 XML 配置
virsh dumpxml <vm_name> 输出指定虚拟机的 XML 配置
virsh attach-disk <vm_name> <disk_path> <target_dev> 附加磁盘到虚拟机
virsh detach-disk <vm_name> <target_dev> 从虚拟机分离磁盘
virsh attach-interface <vm_name> <type> <source> 附加网络接口到虚拟机
virsh detach-interface <vm_name> <type> <mac> 从虚拟机分离网络接口
virsh snapshot-create-as <vm_name> <snapshot_name> 创建虚拟机快照
virsh snapshot-list <vm_name> 列出虚拟机的所有快照
virsh snapshot-revert <vm_name> <snapshot_name> 恢复到指定快照
virsh migrate <vm_name> <dest_uri> 迁移虚拟机到另一个主机
virsh console <vm_name> 连接到虚拟机的控制台
virsh dominfo <vm_name> 显示虚拟机的详细信息
virsh domstats <vm_name> 显示虚拟机的统计信息

使用图形化工具创建虚拟机

安装和使用 virt-manager

virt-manager 是一个基于图形界面的虚拟机管理工具,适合那些更喜欢图形界面操作的用户。

  1. 安装 virt-manager

    • 在 Ubuntu 上:

      sudo apt install virt-manager
      
    • 在 CentOS/RHEL 上:

      sudo yum install virt-manager
      
  2. 启动 virt-manager

    virt-manager
    

通过 virt-manager 创建和配置虚拟机

  1. 创建新虚拟机
    • 打开 virt-manager,点击左上角的“创建新虚拟机”按钮。
    • 选择安装来源例如ISO 映像或 PXE 网络引导),然后点击“转到下一步”。
    • 设置虚拟机名称、内存和 CPU 配置,然后点击“转到下一步”。
    • 配置虚拟机硬盘(例如,创建新磁盘映像或导入现有磁盘),然后点击“转到下一步”。
    • 选择网络配置(例如,使用桥接网络),然后点击“转到下一步”。
    • 检查配置并点击“完成”以创建虚拟机。
  2. 配置虚拟机
    • 右键点击已创建的虚拟机,选择“打开”以启动虚拟机。
    • 在虚拟机启动后,可以通过 VNC 或 SPICE 连接访问虚拟机的图形界面。
    • 可以通过“虚拟机”菜单下的“编辑”选项修改虚拟机配置,如增加内存、添加硬盘或修改网络设置。

通过上述方法,可以使用命令行工具和图形化工具创建和管理 KVM 虚拟机。无论是命令行操作还是图形界面,都提供了丰富的选项和灵活的配置,使得 KVM 虚拟机的管理变得简单高效。