# 3. KVM 管理工具

2024年7月16日31分钟阅读

- FormalSciences/ComputerScience
- OperatingSystem/Virtualization
- KVM

## KVM 管理工具

KVM 管理工具是用于管理和控制 KVM（Kernel-based Virtual Machine）虚拟化环境的工具。这些工具提供了创建、配置、监控和维护虚拟机的功能，简化了 KVM 虚拟化环境的管理。KVM 管理工具可以是命令行工具、图形化用户界面（GUI）工具或基于 Web 的管理平台。

KVM 管理工具在虚拟化环境中的作用和重要性主要体现在以下几个方面：

1. 简化虚拟机管理：通过图形化界面或命令行工具，管理员可以方便地创建、配置和管理虚拟机，减少了手动配置的复杂性。
2. 提高效率：管理工具提供自动化功能，如批量创建虚拟机、自动配置网络和存储，从而提高管理效率。
3. 增强监控和维护：通过监控工具，可以实时监控虚拟机的性能和资源使用情况，及时发现和解决问题，确保系统稳定运行。
4. 安全性和隔离：管理工具提供访问控制和权限管理功能，确保虚拟机和宿主机之间的安全隔离，保护数据和系统安全。
5. 灵活性和可扩展性：支持多种虚拟机配置和管理需求，适应不同规模和复杂度的虚拟化环境。

## Libvirt

### Libvirt 概述

**Libvirt 是一个开源的 API、守护进程和管理工具集，用于管理平台虚拟化。**其主要功能和特点包括：

- 多种虚拟化后端支持：Libvirt 支持多种虚拟化技术，如 KVM、QEMU、Xen、VMware ESXi、Microsoft Hyper-V 等。
- 抽象化和统一管理接口：Libvirt 提供统一的 API 和管理工具，简化了不同虚拟化技术的管理。
- 丰富的管理功能：支持虚拟机的生命周期管理、存储管理、网络管理、快照、迁移等。
- 广泛的语言绑定：支持多种编程语言的 API 绑定，如 C、Python、Perl、Java、Go 等，方便开发者集成和扩展。

**Libvirt 支持多种虚拟化后端，**主要包括：

- KVM/QEMU：主流的开源虚拟化解决方案，广泛应用于 Linux 服务器和桌面环境。
- Xen：高性能的开源虚拟化技术，特别适用于服务器虚拟化和云计算。
- VMware ESXi：商业虚拟化解决方案，广泛应用于企业数据中心。
- Microsoft Hyper-V：Windows Server 内置的虚拟化技术，适用于 Windows 环境。
- 其他：还支持 LXC（Linux 容器）、OpenVZ 等轻量级虚拟化技术。

### Libvirt 安装与配置

在不同的 Linux 发行版上安装 Libvirt，步骤如下：

- 在 Ubuntu 上：

      sudo apt update
      sudo apt install libvirt-daemon-system libvirt-clients
      sudo systemctl enable --now libvirtd

- 在 CentOS/RHEL 上：

      sudo yum update
      sudo yum install libvirt libvirt-python
      sudo systemctl enable --now libvirtd

1. 配置文件位置：

   - 主配置文件：`/etc/libvirt/libvirtd.conf`
   - 网络配置文件：`/etc/libvirt/qemu/networks/`

2. 常用配置项：

    # 启用 TCP 连接
     listen_tls = 0
     listen_tcp = 1
     auth_tcp = "none"
    # 设置日志级别
     log_filters="3:remote 4:event"
     log_outputs="1:file:/var/log/libvirt/libvirtd.log"

1. 重启 Libvirt 服务：

    sudo systemctl restart libvirtd

### Virsh 管理命令

Virsh
是一个强大的命令行工具，用于管理基于 libvirt 的虚拟化环境。其功能和特点包括：

- 管理虚拟机生命周期：创建、删除、启动、停止、重启虚拟机。
- 配置和调整虚拟机资源：修改虚拟机的 CPU、内存、网络和存储配置。
- 快照管理：创建、恢复和删除虚拟机快照。
- 实时迁移：在主机之间迁移虚拟机。
- 网络和存储管理：创建和管理虚拟网络、存储池和存储卷。
- 脚本化和自动化：支持脚本化操作，方便批量管理和自动化运维。

#### Virt-install

`virsh-install` 命令是用于在 KVM 环境中创建虚拟机的一个非常常用的命令。它提供了一系列选项来配置和启动虚拟机。

    # 创建虚拟机
    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

##### 常用选项

选项 | 描述
--- | ---
`--name` | 设置虚拟机的名称
`--memory` | 指定虚拟机的内存大小（MB）
`--vcpus` | 指定虚拟机的 CPU 数量
`--disk` | 指定虚拟机的磁盘配置（如路径、大小、格式等）
`--cdrom` | 指定安装介质（如 ISO 文件路径）
`--network` | 指定虚拟机的网络配置
`--os-variant` | 指定虚拟机操作系统的类型
`--graphics` | 设置图形界面配置（如 VNC、Spice 等）
`--extra-args` | 指定附加的引导参数
`--location` | 指定安装介质的位置（如网络安装源）
`--import` | 导入已有磁盘来创建虚拟机
`--boot` | 指定引导选项（如引导顺序、引导设备等）
`--initrd-inject` | 将文件注入到虚拟机的 initrd
`--console` | 指定控制台配置

#### 通用

命令 | 描述
--- | ---
`virsh help` | 显示所有可用命令的帮助信息
`virsh quit` / `exit` | 退出 virsh 交互模式
`virsh connect qemu:///system` | 连接到本地 QEMU/KVM 管理器
`virsh uri` | 显示当前连接的 URI
`virsh version` | 显示 libvirt 版本信息
`virsh hostname` | 显示主机名
`virsh sysinfo` | 显示系统信息
`virsh nodeinfo` | 显示节点硬件信息
`virsh list --all` | 列出所有虚拟机，包括运行中和停止的
`virsh start <vm_name>` | 启动指定虚拟机
`virsh nodecpustats` | 显示节点 CPU 统计信息
`virsh nodememstats` | 显示节点内存统计信息

#### 主机

命令 | 描述
--- | ---
`virsh start <vm_name>` | 启动指定虚拟机
`virsh shutdown <vm_name>` | 关闭指定虚拟机
`virsh reboot <vm_name>` | 重启指定虚拟机
`virsh suspend <vm_name>` | 挂起指定虚拟机
`virsh resume <vm_name>` | 恢复挂起的虚拟机
`virsh destroy <vm_name>` | 强制关闭指定虚拟机
`virsh autostart <vm_name>` | 设置指定虚拟机开机自启
`virsh undefine <vm_name>` | 取消定义指定虚拟机
`virsh dominfo <vm_name>` | 显示虚拟机的基本信息
`virsh domstate <vm_name>` | 显示虚拟机的当前状态
`virsh domiflist <vm_name>` | 列出虚拟机的网络接口
`virsh domblklist <vm_name>` | 列出虚拟机的块设备
`virsh domstats <vm_name>` | 显示虚拟机的统计信息
`virsh dumpxml <vm_name>` | 显示虚拟机的 XML 配置
`virsh edit <vm_name>` | 编辑虚拟机的 XML 配置
`virsh console <vm_name>` | 连接到虚拟机的控制台
`virsh setmem <vm_name> <size>` | 设置虚拟机的内存大小
`virsh setvcpus <vm_name> <count>` | 设置虚拟机的 CPU 数量

#### 设备

命令 | 描述
--- | ---
`virsh attach-device <vm_name> <device.xml>` | 连接设备
`virsh detach-device <vm_name> <device.xml>` | 分离设备
`virsh attach-disk <vm_name> <source> <target>` | 附加磁盘
`virsh detach-disk <vm_name> <target>` | 分离磁盘
`virsh attach-interface <vm_name> <type> <source>` | 连接接口
`virsh detach-interface <vm_name> <type> <mac>` | 分离接口
`virsh update-device <vm_name> <device.xml>` | 更新设备
`virsh change-media <vm_name> <path> --eject --insert` | 改变媒体

#### 节点

命令 | 描述
--- | ---
`virsh nodedev-list` | 列出所有节点设备
`virsh nodedev-info <device>` | 显示节点设备的信息
`virsh nodedev-dumpxml <device>` | 显示节点设备的 XML 配置
`virsh nodedev-reattach <device>` | 重新附加节点设备
`virsh nodedev-detach <device>` | 分离节点设备
`virsh nodedev-reset <device>` | 重置节点设备
`virsh nodedev-autostart <device>` | 设置节点设备开机自启

#### 网络

命令 | 描述
--- | ---
`virsh net-list --all` | 列出所有虚拟网络
`virsh net-info <network>` | 显示虚拟网络的信息
`virsh net-dumpxml <network>` | 显示虚拟网络的 XML 配置
`virsh net-create <network.xml>` | 创建虚拟网络
`virsh net-destroy <network>` | 销毁虚拟网络
`virsh net-start <network>` | 启动虚拟网络
`virsh net-autostart <network>` | 设置虚拟网络开机自启
`virsh net-undefine <network>` | 取消定义虚拟网络
`virsh net-edit <network>` | 编辑虚拟网络的 XML 配置
`virsh net-update <network> <command> <section> <xml>` | 更新虚拟网络
`virsh net-dhcp-leases <network>` | 列出网络的 DHCP 租约

命令 | 描述
--- | ---
`virsh net-port-list <network>` | 列出指定虚拟网络的所有端口
`virsh net-port-create <port.xml>` | 创建网络端口
`virsh net-port-dumpxml <port>` | 显示网络端口的 XML 配置
`virsh net-port-delete <port>` | 删除网络端口

命令 | 描述
--- | ---
`virsh iface-list --all` | 列出所有网络接口
`virsh iface-info <interface>` | 显示网络接口的信息
`virsh iface-dumpxml <interface>` | 显示网络接口的 XML 配置
`virsh iface-define <interface.xml>` | 定义新网络接口
`virsh iface-undefine <interface>` | 取消定义网络接口
`virsh iface-start <interface>` | 启动网络接口
`virsh iface-destroy <interface>` | 销毁网络接口
`virsh iface-edit <interface>` | 编辑网络接口的 XML 配置
`virsh iface-bridge <interface> <bridge>` | 将接口桥接到指定桥
`virsh iface-unbridge <bridge>` | 取消接口的桥接
`virsh iface-commit <interface>` | 提交接口的更改
`virsh iface-rollback <interface>` | 回滚接口的更改

#### 存储

命令 | 描述
--- | ---
`virsh pool-list --all` | 列出所有存储池
`virsh pool-info <pool>` | 显示存储池的信息
`virsh pool-dumpxml <pool>` | 显示存储池的 XML 配置
`virsh pool-create <pool.xml>` | 从 XML 文件创建存储池
`virsh pool-create-as <name> <type> <source>` | 创建指定类型的存储池
`virsh pool-define <pool.xml>` | 从 XML 文件定义存储池
`virsh pool-define-as <name> <type> <source>` | 定义指定类型的存储池
`virsh pool-start <pool>` | 启动存储池
`virsh pool-build <pool>` | 构建存储池
`virsh pool-refresh <pool>` | 刷新存储池
`virsh pool-autostart <pool>` | 设置存储池开机自启
`virsh pool-destroy <pool>` | 销毁存储池
`virsh pool-delete <pool>` | 删除存储池
`virsh pool-undefine <pool>` | 取消定义存储池
`virsh find-storage-pool-sources --type <type>` | 查找存储池源

命令 | 描述
--- | ---
`virsh vol-list <pool>` | 列出指定存储池的所有卷
`virsh vol-info <volume>` | 显示卷的信息
`virsh vol-dumpxml <volume>` | 显示卷的 XML 配置
`virsh vol-create <pool> <volume.xml>` | 从 XML 文件创建卷
`virsh vol-create-as <pool> <name> <capacity>` | 创建指定大小的卷
`virsh vol-create-from <pool> <name> <source-volume>` | 从现有卷创建新卷
`virsh vol-clone <source-volume> <new-volume>` | 克隆卷
`virsh vol-delete <volume>` | 删除卷
`virsh vol-upload <volume> <source>` | 上传数据到卷
`virsh vol-download <volume> <dest>` | 从卷下载数据
`virsh vol-resize <volume> <capacity>` | 调整卷大小
`virsh vol-wipe <volume>` | 擦除卷
`virsh vol-path <volume>` | 显示卷的路径
`virsh vol-name <volume>` | 显示卷的名称
`virsh vol-key <volume>` | 显示卷的唯一标识符

#### 快照

命令 | 描述
--- | ---
`virsh snapshot-list <vm_name>` | 列出指定虚拟机的所有快照
`virsh snapshot-info <snapshot>` | 显示快照的信息
`virsh snapshot-dumpxml <snapshot>` | 显示快照的 XML 配置
`virsh snapshot-create <vm_name>` | 创建快照
`virsh snapshot-create-as <vm_name> <snapshot_name>` | 创建命名快照
`virsh snapshot-current <vm_name>` | 显示当前快照
`virsh snapshot-edit <snapshot>` | 编辑快照的 XML 配置
`virsh snapshot-revert <vm_name> <snapshot>` | 恢复到指定快照
`virsh snapshot-delete <vm_name> <snapshot>` | 删除指定快照
`virsh snapshot-parent <snapshot>` | 显示快照的父级快照

命令 | 描述
--- | ---
`virsh checkpoint-list <vm_name>` | 列出指定虚拟机的所有检查点
`virsh checkpoint-info <checkpoint>` | 显示检查点的信息
`virsh checkpoint-dumpxml <checkpoint>` | 显示检查点的 XML 配置
`virsh checkpoint-create <vm_name>` | 创建检查点
`virsh checkpoint-create-as <vm_name> <checkpoint_name>` | 创建命名检查点
`virsh checkpoint-edit <checkpoint>` | 编辑检查点的 XML 配置
`virsh checkpoint-delete <vm_name> <checkpoint>` | 删除指定检查点
`virsh checkpoint-parent <checkpoint>` | 显示检查点的父级检查点

### Libvirt API 开发

#### 使用 Libvirt API

Libvirt 提供丰富的 API，用于开发和集成虚拟化管理工具。以下是使用 Python Libvirt API 的示例：

1. 安装 Python Libvirt 库：

       sudo apt install python3-libvirt

2. Python 示例代码：

       import libvirt

       conn = libvirt.open('qemu:///system')
       if conn is None:
           print('Failed to open connection to qemu:///system')
           exit(1)

       domains = conn.listAllDomains()
       for domain in domains:
           print('Domain: ' + domain.name())
       conn.close()

#### Libvirt 与其他工具的集成

Libvirt 与许多其他工具集成，提供全面的虚拟化管理功能：

- OpenStack：作为 IaaS 平台，OpenStack 使用 Libvirt 作为其底层虚拟化管理工具之一。
- oVirt：基于 Libvirt 的虚拟化管理平台，提供企业级虚拟化解决方案。
- Ansible：使用 `ansible-libvirt` 模块，可以通过 Ansible 自动化管理 Libvirt 虚拟机和资源。

## Virt-manager

### Virt-manager 概述

Virt-manager 是一个基于 GUI 的虚拟机管理工具，用于管理 KVM、QEMU 和其他支持的虚拟化平台。其主要功能和特点包括：

- 虚拟机创建和配置：通过图形化界面轻松创建和配置虚拟机，包括设置 CPU、内存、存储和网络等资源。
- 虚拟机监控：实时监控虚拟机的性能和资源使用情况，提供详细的统计信息。
- 存储和网络管理：管理虚拟机的存储池、存储卷和网络配置，支持多种存储和网络类型。
- 快照和迁移：支持虚拟机快照创建和恢复，以及实时迁移虚拟机到其他主机。
- 易用性：提供直观的图形化界面，简化了虚拟机管理任务。

Virt-manager 的图形化界面包括以下主要部分：

- 主窗口：显示所有已定义的虚拟机及其状态，提供虚拟机的基本管理操作。
- 详细信息面板：展示选定虚拟机的详细信息，包括硬件配置、性能监控和控制台访问。
- 菜单和工具栏：提供常用的管理功能和配置选项，如创建新虚拟机、启动/停止虚拟机、查看日志等。

### Virt-manager 安装与配置

在不同的 Linux 发行版上安装 Virt-manager 的步骤如下：

    # 在 Debian/Ubuntu 上
    sudo apt update
    sudo apt install virt-manager

    # 在 CentOS/RHEL 上
    sudo dnf install virt-manager

1. 启动 libvirtd 服务（如果尚未启动）：

       sudo systemctl enable --now libvirtd

2. 配置用户权限： 确保用户属于 `libvirt` 组，以便能够管理虚拟机：

       sudo usermod -aG libvirt $USER

3. 重启系统或重新登录，以应用权限更改。

### 使用 Virt-manager 管理虚拟机

#### 创建和配置虚拟机

1. 启动 Virt-manager： 打开终端并运行 `virt-manager` 命令，或通过桌面环境的应用菜单启动 Virt-manager。

2. 创建新虚拟机：

   - 在 Virt-manager 主界面，点击左上角的创建新虚拟机按钮。

   - 选择安装来源（例如 ISO 映像或网络安装），点击转到下一步。

   - 设置虚拟机名称、内存和 CPU 配置，点击转到下一步。

   - 配置虚拟机硬盘（例如，创建新磁盘映像或使用现有磁盘），点击转到下一步。

   - 选择网络配置（例如，桥接网络或默认 NAT 网络），点击转到下一步。

   - 检查配置并点击完成以创建虚拟机。

3. 配置虚拟机：

   - 右键点击已创建的虚拟机，选择打开以启动虚拟机。
   - 在虚拟机启动后，可以通过 VNC 或 SPICE 连接访问虚拟机的图形界面。
   - 在虚拟机设置中，可以调整虚拟机的硬件配置，如增加内存、添加硬盘或修改网络设置。

#### 监控和管理虚拟机

1. 监控虚拟机性能：
   - 在 Virt-manager 主界面，双击虚拟机名称进入详细信息面板。
   - 查看 CPU、内存、网络和存储的实时使用情况。
2. 管理虚拟机状态：
   - 在主界面中，右键点击虚拟机名称，可以选择启动、暂停、恢复、关闭等操作。
   - 查看和管理虚拟机的快照，执行备份和恢复操作。

#### 使用 Virt-manager 进行快照和迁移

1. 创建快照：
   - 在 Virt-manager 中，选择虚拟机，右键点击并选择快照。
   - 点击创建快照按钮，输入快照名称和描述，然后点击创建。
2. 恢复快照：
   - 在 Virt-manager 中，选择虚拟机，右键点击并选择快照。
   - 选择要恢复的快照，点击恢复按钮。
3. 实时迁移虚拟机：
   - 在 Virt-manager 中，选择要迁移的虚拟机，右键点击并选择迁移。
   - 输入目标主机的连接信息，选择迁移选项（如实时迁移），然后点击开始迁移。

通过上述方法，用户可以使用 Virt-manager 轻松创建、配置和管理 KVM 虚拟机，同时进行性能监控、快照管理和虚拟机迁移等操作。Virt-manager 的图形化界面使得虚拟机管理任务更加直观和便捷。

## Cockpit

### Cockpit 概述

Cockpit 是一个开源的服务器管理工具，提供了一个基于 Web 的图形用户界面，用于管理 Linux 服务器。其主要功能和特点包括：

- 实时监控和管理：提供实时系统性能监控、日志查看、服务管理等功能。
- 用户友好：简单直观的 Web 界面，易于使用和配置。
- 扩展性：通过插件机制扩展功能，可以管理存储、虚拟化、网络等。
- 多服务器管理：可以集中管理多个服务器，支持跨主机操作。
- 集成虚拟化管理：内置对 KVM 虚拟机的支持，可以创建和管理虚拟机。

Cockpit 的架构包括以下主要组件：

- Web 前端：基于 HTML5 和 JavaScript 构建的用户界面，通过 Web 浏览器访问。
- Cockpit 服务：运行在服务器上的后台服务，处理用户请求并与系统进行交互。
- 系统接口：Cockpit 使用 D-Bus 与 Linux 系统和服务进行通信，执行管理任务。

### Cockpit 安装与配置

Cockpit 可以在多种 Linux 发行版上安装。以下是一些常见的安装步骤：

    # 在 Ubuntu 上
    sudo apt update
    sudo apt install cockpit
    sudo systemctl enable --now cockpit.socket
    # 打开防火墙端口
    sudo ufw allow 9090/tcp

    # 在 CentOS/RHEL 上
    sudo yum install cockpit
    sudo systemctl enable --now cockpit.socket
    # 打开防火墙端口
    sudo firewall-cmd --add-port=9090/tcp --permanent
    sudo firewall-cmd --reload

在浏览器中访问 `https://<server-ip>:9090`，使用服务器上的用户凭证登录。

### 使用 Cockpit 管理虚拟机

#### 创建和管理虚拟机

1. 启用虚拟化插件：

   安装 Cockpit 的虚拟化插件（如果尚未安装）。

    # 在 Ubuntu 上：
    sudo apt install cockpit-machines

    # 在 CentOS/RHEL 上：
    sudo yum install cockpit-machines

1. 创建虚拟机：

- 在 Cockpit Web 界面中，导航到虚拟机页面。
- 点击创建新虚拟机按钮，按照向导输入虚拟机名称、操作系统类型、内存、CPU 和磁盘配置。
- 选择安装来源（ISO 镜像或网络安装），点击创建完成虚拟机的创建。

1. 管理虚拟机：

- 在虚拟机页面，查看已创建的虚拟机列表。
- 选择虚拟机，可以执行启动、停止、重启、暂停等操作。
- 点击虚拟机名称，可以查看详细信息并修改配置。

#### 配置网络和存储

1. 配置网络：
   - 在虚拟机页面，选择虚拟机并进入详细信息页面。
   - 在网络选项卡中，添加或修改网络接口，选择桥接或 NAT 网络类型。
2. 配置存储：
   - 在虚拟机页面，选择虚拟机并进入详细信息页面。
   - 在存储选项卡中，添加或修改存储设备，选择磁盘镜像文件或 LVM 卷。

#### 使用 Cockpit 进行监控和管理

1. 监控系统性能：
   - 在 Cockpit 主界面中，查看系统概览，包括 CPU、内存、磁盘和网络使用情况。
   - 导航到日志页面，查看系统日志和服务日志，帮助诊断问题。
2. 管理服务：
   - 在 Cockpit 主界面中，导航到服务页面，查看和管理系统服务。
   - 可以启动、停止、重启服务，并查看服务状态和日志。
3. 多服务器管理：
   - 在 Cockpit 主界面中，导航到仪表板页面，添加其他服务器进行集中管理。
   - 输入其他服务器的 IP 地址和凭证，添加成功后，可以跨主机进行操作和监控。

通过以上步骤，用户可以使用 Cockpit 创建和管理虚拟机，配置网络和存储，并进行系统监控和管理。Cockpit 提供了一个直观且功能强大的 Web 界面，使得 Linux 服务器管理变得更加简便和高效。

## Proxmox VE

### Proxmox VE 概述

Proxmox Virtual Environment (Proxmox VE) 是一个开源的服务器虚拟化管理平台，集成了 KVM 和 LXC（Linux 容器），提供企业级的虚拟化解决方案。其主要功能和特点包括：

- 虚拟化集成：支持 KVM 虚拟机和 LXC 容器，提供灵活的虚拟化选择。
- 集中管理：通过基于 Web 的用户界面，集中管理所有虚拟机和容器。
- 高可用性：内置高可用性（HA）集群管理，确保服务持续运行。
- 存储支持：支持多种存储类型，包括本地存储、NFS、iSCSI 和 Ceph 分布式存储。
- 备份和恢复：提供全面的备份和恢复功能，确保数据安全。
- 集成防火墙：内置防火墙功能，提高虚拟机和容器的安全性。
- 集成 Web 界面：易于使用的 Web 界面，简化管理任务。

Proxmox VE 的架构主要包括以下组件：

- Proxmox VE 主机：运行 KVM 和 LXC 的物理服务器，托管虚拟机和容器。
- Proxmox VE 集群：多个 Proxmox VE 主机组成的集群，提供高可用性和负载均衡。
- Proxmox VE Web 界面：基于 Web 的管理界面，用于管理集群、虚拟机和容器。
- Proxmox VE API：提供 RESTful API，用于集成和自动化管理任务。

### Proxmox VE 安装与配置

1. 下载 Proxmox VE 安装 ISO：
   - 访问 Proxmox VE 官网 下载最新的安装 ISO。
2. 创建安装介质：
   - 使用 Rufus、Etcher 等工具，将 ISO 写入 U 盘或刻录到光盘。
3. 启动安装：
   - 将安装介质插入服务器，重启并从安装介质启动。
   - 按照安装向导完成安装，包括选择目标磁盘、配置网络和设置管理账户。
4. 完成安装后，访问 Web 界面：
   - 在浏览器中访问 `https://<server-ip>:8006`，使用安装时设置的管理账户登录。

### 使用 Proxmox VE 管理虚拟机

#### 创建和管理虚拟机

1. 创建虚拟机：
   - 在 Web 界面中，导航到节点 →虚拟机。
   - 点击创建虚拟机，按照向导输入虚拟机名称、操作系统类型、硬盘大小和网络配置。
   - 点击完成创建虚拟机。
2. 管理虚拟机：
   - 在虚拟机列表中，选择虚拟机，使用启动、停止、重启等操作管理虚拟机。
   - 编辑虚拟机配置，调整 CPU、内存、存储和网络设置。

#### 配置网络和存储

1. 配置虚拟网络：
   - 在节点 →网络中，添加或编辑桥接网络、VLAN 和绑定接口。
   - 在虚拟机网络设置中，选择相应的网络接口。
2. 配置存储卷：
   - 在数据中心 →存储中，添加或管理存储池。
   - 为虚拟机分配存储卷，调整存储大小和类型。

#### 高可用性和备份

1. 配置高可用性：
   - 在数据中心 →高可用性中，添加虚拟机到高可用性组。
   - 配置高可用性参数，确保虚拟机在节点故障时自动迁移。
2. 配置备份：
   - 在数据中心 →备份中，创建备份计划，选择备份存储、频率和保留策略。
   - 配置备份任务，确保定期备份虚拟机数据。

## KVM 管理工具的选择

### 根据需求选择合适的工具

选择合适的 KVM 管理工具应根据具体需求进行考虑，例如企业环境的高可用性、桌面环境的简单虚拟机管理等。

- **libvirt：**libvirt 是一个开源 API、守护进程和管理工具，用于管理平台虚拟化技术，包括 KVM、QEMU、Xen、VMware ESXi 等。

- **virt-manager：**virt-manager 是一个基于桌面的图形化工具，用于管理 KVM 虚拟机，主要依赖于 libvirt。

- **Cockpit：**Cockpit 是一个轻量级的 web 界面，支持系统管理和 KVM 虚拟机管理，通过插件扩展功能。

- **Proxmox VE：**Proxmox VE 是一个开源的企业级虚拟化管理平台，支持 KVM 和 LXC 容器，提供高可用性、备份和集群管理功能。

### 各工具的优缺点比较

工具 | 优点 | 缺点 | 适用场景 | 易用性 | 扩展性 | 性能优化 | 高可用性 | 支持平台 | 界面
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
libvirt | 灵活、支持多种虚拟化平台、API 支持广泛、命令行工具强大 | 初学者学习曲线较陡，需要较多配置和命令行操作 | 高度定制化需求 | 一般 | 高 | 高 | 无 | KVM, QEMU, Xen, VMware ESXi | CLI
virt-manager | 图形化界面简单易用、适合桌面环境、依赖 libvirt | 功能相对较少，不支持高级特性如高可用性和集群管理 | 小规模桌面环境 | 高 | 一般 | 一般 | 无 | KVM | GUI
Cockpit | 轻量级、扩展性强、支持插件、直观的 web 界面 | 虚拟机管理功能有限，需要额外配置 | 中小型服务器管理 | 高 | 高 | 一般 | 无 | KVM | Web
Proxmox VE | 集成度高、支持高可用性和备份、图形化界面友好、支持集群管理和 LXC 容器 | 初始配置复杂、对硬件要求较高 | 企业级虚拟化和容器管理 | 一般 | 高 | 高 | 高 | KVM, LXC | Web

## 未来发展趋势

### KVM 管理工具的发展方向

- 自动化和编排：随着虚拟化和云计算的发展，自动化和编排工具将变得更加重要。
- 容器集成：越来越多的 KVM 管理工具开始支持容器，提供虚拟机和容器的混合管理。
- 增强安全性：安全性将继续成为虚拟化管理的重要考虑因素，更多的安全功能和机制将被集成。

### 新兴技术和工具

- 云原生技术：Kubernetes 和 OpenShift 等云原生平台正在集成虚拟化功能，提供统一的容器和虚拟机管理。
- 边缘计算：随着边缘计算的兴起，新的虚拟化管理工具将出现，支持分布式和低延迟环境。
- 人工智能和机器学习：AI 和 ML 技术将被用于优化虚拟化管理，提供智能调度和预测性维护。