diff --git a/Tech/operating-system/Virtualization/2.KVM虚拟化/2. KVM 安装配置.md b/Tech/operating-system/Virtualization/2.KVM虚拟化/2. KVM 安装配置.md
index d70ae2ce..c1051950 100644
--- a/Tech/operating-system/Virtualization/2.KVM虚拟化/2. KVM 安装配置.md
+++ b/Tech/operating-system/Virtualization/2.KVM虚拟化/2. KVM 安装配置.md
@@ -1,10 +1,16 @@
---
title: KVM 安装配置
-description: KVM 安装配置
+description: 如何在 Linux 系统上安装和配置 KVM 虚拟化技术,包括硬件要求、操作系统选择、KVM 安装步骤、网络桥接配置、存储池和存储卷管理、虚拟机创建和管理工具的使用。
keywords:
- - 关键字
+ - KVM
+ - Linux
+ - 虚拟化安装
+ - 网络桥接
+ - 存储池
+ - 虚拟机管理
tags:
- - 标签
+ - 技术/操作系统
+ - 虚拟化/KVM
author: 仲平
date: 2024-07-16
---
@@ -13,51 +19,528 @@ date: 2024-07-16
### 硬件要求
-- 检查 CPU 是否支持虚拟化技术(Intel VT-x 或 AMD-V)
-- 启用 BIOS/UEFI 中的虚拟化支持
+#### 检查 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。
+
+如果命令输出中包含 `vmx` 或 `svm`,则表示 CPU 支持相应的虚拟化技术。
+
+#### 启用 BIOS/UEFI 中的虚拟化支持
+
+即使 CPU 支持虚拟化技术,也需要在 BIOS/UEFI 中启用相应的功能。以下是通用的启用步骤,具体步骤可能因主板制造商不同而有所差异:
+
+1. 启动计算机并进入 BIOS/UEFI 设置界面(通常按 `Delete`、`F2`、`F10` 或 `Esc` 键)。
+2. 在 BIOS/UEFI 设置中,找到“高级”或“处理器”选项。
+3. 启用 "Intel Virtualization Technology" 或 "AMD-V" 选项。
+4. 保存更改并退出 BIOS/UEFI 设置。
### 操作系统要求
-- 支持的 Linux 发行版(如 Ubuntu, CentOS, RHEL 等)
+KVM 作为 Linux 内核的一部分,主要在 Linux 操作系统上运行。以下是一些常用的、支持 KVM 的 Linux 发行版:
-## 安装 KVM 及相关工具
+- **Ubuntu**:广泛使用的发行版,提供了良好的社区支持和文档。
+- **CentOS**:企业级发行版,基于 Red Hat Enterprise Linux (RHEL) 的源代码构建,适合服务器环境。
+- **RHEL**:Red Hat Enterprise Linux,提供商业支持和长期维护,广泛应用于企业环境。
-### 安装 KVM 和 QEMU
+## 安装 KVM 和 QEMU
-- 在 Ubuntu 上安装
-- 在 CentOS/RHEL 上安装
-- 在其他 Linux 发行版上安装
+### 在 Ubuntu 上安装
+
+1. 更新软件包列表:
+
+ ```bash
+ sudo apt update
+ ```
+
+2. 安装 KVM、QEMU 和相关工具:
+
+ ```bash
+ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
+ ```
+
+3. 启用并启动 libvirtd 服务:
+
+ ```shell
+ sudo systemctl enable --now libvirtd
+ ```
+
+#### 在 CentOS/RHEL 上安装
+
+1. 更新系统:
+
+ ```shell
+ sudo yum update
+ ```
+
+2. 安装 KVM、QEMU 和相关工具:
+
+ ```shell
+ sudo yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
+ ```
+
+3. 启用并启动 libvirtd 服务:
+
+ ```shell
+ sudo systemctl enable --now libvirtd
+ ```
+
+#### 在其他 Linux 发行版上安装
+
+以下是一些其他常见 Linux 发行版的安装方法:
+
+- **Debian**:
+
+ ```shell
+ sudo apt update
+ sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils
+ sudo systemctl enable --now libvirtd
+ ```
+
+- **Fedora**:
+
+ ```shell
+ sudo dnf update
+ sudo dnf install @virtualization
+ sudo systemctl enable --now libvirtd
+ ```
### 安装虚拟机管理工具
-- `libvirt`
-- `virt-manager`
+#### 安装 `libvirt`
+
+`libvirt` 是一个开源 API,用于管理平台虚拟化。前面已经在安装 KVM 和 QEMU 时安装了 `libvirt`。确保其已启用并正在运行:
+
+```shell
+sudo systemctl enable --now libvirtd
+```
+
+#### 安装 `virt-manager`
+
+`virt-manager` 是一个基于 GUI 的虚拟机管理工具,适用于桌面用户。
+
+- 在 Ubuntu 上安装:
+
+ ```shell
+ sudo apt install virt-manager
+ ```
+
+- 在 CentOS/RHEL 上安装:
+
+ ```shell
+ sudo yum install virt-manager
+ ```
+
+- 在其他 Linux 发行版上安装:
+
+ - Debian:
+
+ ```shell
+ sudo apt install virt-manager
+ ```
+
+ - Fedora:
+
+ ```shell
+ sudo dnf install virt-manager
+ ```
### 验证安装
-- 检查 KVM 模块是否已加载 (`kvm`, `kvm-intel` 或 `kvm-amd`)
-- 确认虚拟化功能可用 (`kvm-ok` 工具)
+#### 检查 KVM 模块是否已加载
+
+1. 检查 KVM 模块是否已加载:
+
+ ```shell
+ lsmod | grep kvm
+ ```
+
+ 应该看到类似以下的输出:
+
+ ```shell
+ kvm_intel 204800 0
+ kvm 655360 1 kvm_intel
+ ```
+
+2. 如果使用 AMD 处理器,检查 `kvm-amd` 模块:
+
+ ```shell
+ lsmod | grep kvm
+ ```
+
+ 应该看到类似以下的输出:
+
+ ```shell
+ kvm_amd 204800 0
+ kvm 655360 1 kvm_amd
+ ```
+
+#### 确认虚拟化功能可用
+
+1. 在 Ubuntu 和 Debian 上使用 `kvm-ok` 工具检查虚拟化功能:
+
+ ```shell
+ sudo apt install cpu-checker
+ sudo kvm-ok
+ ```
+
+ 输出应显示:
+
+ ```shell
+ INFO: /dev/kvm exists
+ KVM acceleration can be used
+ ```
+
+2. 在 CentOS/RHEL 和其他发行版上,使用 `virt-host-validate` 工具检查:
+
+ ```shell
+ sudo virt-host-validate
+ ```
+
+ 输出应显示:
+
+ ```shell
+ 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 上:
+
+ ```shell
+ sudo apt install bridge-utils
+ ```
+
+ - 在 CentOS/RHEL 上:
+
+ ```shell
+ sudo yum install bridge-utils
+ ```
+
+2. **配置网络桥接**:
+
+ - 编辑网络配置文件以添加桥接配置。例如,假设你正在使用 `eth0` 接口。
+
+ - **在 Ubuntu 上**: 编辑 `/etc/netplan/01-netcfg.yaml` 文件(具体文件名可能不同):
+
+ ```yaml
+ network:
+ version: 2
+ renderer: networkd
+ ethernets:
+ eth0:
+ dhcp4: no
+ bridges:
+ br0:
+ interfaces: [eth0]
+ dhcp4: yes
+ ```
+
+ 应用配置:
+
+ ```shell
+ sudo netplan apply
+ ```
+
+ - **在 CentOS/RHEL 上**: 创建或编辑 `/etc/sysconfig/network-scripts/ifcfg-br0` 文件:
+
+ ```ini
+ DEVICE=br0
+ TYPE=Bridge
+ BOOTPROTO=dhcp
+ ONBOOT=yes
+ ```
+
+ 编辑 `/etc/sysconfig/network-scripts/ifcfg-eth0` 文件:
+
+ ```ini
+ DEVICE=eth0
+ BOOTPROTO=none
+ ONBOOT=yes
+ BRIDGE=br0
+ ```
+
+ 重启网络服务:
+
+ ```
+ sudo systemctl restart network
+ ```
+
+#### 配置桥接网络的详细步骤
+
+1. **验证桥接配置**:
+
+ ```shell
+ ip a
+ ```
+
+ 应该看到 `br0` 接口与 `eth0` 接口关联,且获得了 IP 地址。
+
+2. **配置 libvirt 使用桥接网络**: 编辑或创建网络配置文件,例如 `/etc/libvirt/qemu/networks/bridged.xml`:
+
+ ```xml
+
+ bridged
+
+
+
+ ```
+
+ 定义并启动该网络:
+
+ ```shell
+ sudo virsh net-define /etc/libvirt/qemu/networks/bridged.xml
+ sudo virsh net-start bridged
+ sudo virsh net-autostart bridged
+ ```
### 配置存储池和存储卷
-- 创建存储池(目录、LVM、NFS 等)
-- 管理存储卷
+存储池和存储卷管理是 KVM 中虚拟机存储管理的重要组成部分。存储池可以是目录、LVM 或 NFS 等类型,存储卷则是具体的磁盘映像文件。
+
+#### 创建存储池
+
+1. **目录类型存储池**:
+
+ - 创建目录:
+
+ ```shell
+ sudo mkdir -p /var/lib/libvirt/images
+ ```
+
+ - 定义存储池:
+
+ ```shell
+ sudo virsh pool-define-as --name default --type dir --target /var/lib/libvirt/images
+ ```
+
+ - 启动并自动启动存储池:
+
+ ```shell
+ sudo virsh pool-start default
+ sudo virsh pool-autostart default
+ ```
+
+2. **LVM 类型存储池**:
+
+ - 创建物理卷和卷组:
+
+ ```shell
+ sudo pvcreate /dev/sdX
+ sudo vgcreate vg_kvm /dev/sdX
+ ```
+
+ - 定义存储池:
+
+ ```shell
+ sudo virsh pool-define-as --name lvm-pool --type logical --source-name vg_kvm
+ ```
+
+ - 启动并自动启动存储池:
+
+ ```shell
+ sudo virsh pool-start lvm-pool
+ sudo virsh pool-autostart lvm-pool
+ ```
+
+3. **NFS 类型存储池**:
+
+ - 安装 NFS 客户端:
+
+ - 在 Ubuntu 上:
+
+ ```shell
+ sudo apt install nfs-common
+ ```
+
+ - 在 CentOS/RHEL 上:
+
+ ```shell
+ sudo yum install nfs-utils
+ ```
+
+ - 定义存储池:
+
+ ```shell
+ sudo virsh pool-define-as nfs-pool netfs --source-host nfs-server --source-path /path/to/nfs/export --target /mnt/nfs
+ ```
+
+ - 启动并自动启动存储池:
+
+ ```shell
+ sudo virsh pool-start nfs-pool
+ sudo virsh pool-autostart nfs-pool
+ ```
+
+#### 管理存储卷
+
+1. **创建存储卷**:
+
+ - 在默认存储池中创建一个新的存储卷:
+
+ ```shell
+ sudo virsh vol-create-as default new-volume 10G
+ ```
+
+ - 在 LVM 存储池中创建一个新的逻辑卷:
+
+ ```shell
+ sudo virsh vol-create-as lvm-pool lv_new-volume 10G
+ ```
+
+2. **查看存储卷**:
+
+ ```shell
+ sudo virsh vol-list default
+ sudo virsh vol-list lvm-pool
+ ```
+
+3. **删除存储卷**:
+
+ ```shell
+ sudo virsh vol-delete new-volume --pool default
+ ```
+
+通过以上配置步骤,可以成功配置 KVM 的网络桥接、存储池和存储卷,确保虚拟机具备网络连接和存储资源。
## 创建和管理虚拟机
### 使用命令行工具创建虚拟机
-- 使用 `virt-install` 创建虚拟机
-- 使用 `virsh` 管理虚拟机
+#### 使用 `virt-install` 创建虚拟机
+
+`virt-install` 是一个命令行工具,用于创建虚拟机。它支持多种参数,可以灵活配置虚拟机的各种选项。
+
+1. **创建基本虚拟机**:
+
+ ```shell
+ 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` | 指定操作系统类型(如 `linux`、`windows`) |
+ | `--os-variant` | 指定操作系统版本 |
+ | `--graphics` | 配置图形显示方式 |
+ | `--network` | 配置虚拟机的网络接口 |
+ | `--extra-args` | 向内核传递额外的启动参数 |
+ | `--boot` | 配置引导设备和引导顺序 |
+ | `--console` | 配置控制台类型 |
+ | `--import` | 从现有磁盘映像文件导入虚拟机 |
+ | `--autostart` | 安装后自动启动虚拟机 |
+ | `--cpu` | 配置 CPU 相关选项 |
+ | `--check` | 启用或禁用安装前的配置检查 |
+ | `--virt-type` | 指定虚拟化类型(如 `kvm`、`xen`) |
+ | `--initrd-inject` | 指定需要注入到 initrd 的文件 |
+ | `--metadata` | 定义虚拟机的元数据 |
+ | `--noautoconsole` | 安装后不自动连接到控制台 |
+ | `--wait` | 等待安装完成的时间(单位:分钟) |
+
+#### 使用 `virsh` 管理虚拟机
+
+`virsh` 是一个强大的命令行工具,用于管理和控制虚拟机。以下是一些常用的命令及其功能,列在一个表格中以便参考:
+
+| 命令 | 功能 |
+| ------------------------------------------------------ | -------------------------------- |
+| `virsh list` | 列出当前运行的虚拟机 |
+| `virsh list --all` | 列出所有虚拟机,包括停止的 |
+| `virsh start ` | 启动指定的虚拟机 |
+| `virsh shutdown ` | 关闭指定的虚拟机 |
+| `virsh reboot ` | 重启指定的虚拟机 |
+| `virsh destroy ` | 强制关闭指定的虚拟机 |
+| `virsh suspend ` | 暂停指定的虚拟机 |
+| `virsh resume ` | 恢复暂停的虚拟机 |
+| `virsh create ` | 从 XML 配置文件创建并启动虚拟机 |
+| `virsh define ` | 定义但不启动虚拟机 |
+| `virsh undefine ` | 删除虚拟机定义,但不删除磁盘文件 |
+| `virsh edit ` | 编辑虚拟机的 XML 配置 |
+| `virsh dumpxml ` | 输出指定虚拟机的 XML 配置 |
+| `virsh attach-disk ` | 附加磁盘到虚拟机 |
+| `virsh detach-disk ` | 从虚拟机分离磁盘 |
+| `virsh attach-interface