将虚拟机制作成模板,可在后续新建虚拟机时快速从模板中创建,减少系统安装配置时间。
该虚拟机模板主要用作内网 DNS 服务器,由 Adguard Home
或 SmartDNS
提供 DNS 解析服务。
本文将使用 Debian 的云镜像 debian-12-generic-amd64.qcow2
作为模板虚拟机的镜像。
访问 Debian Official Cloud Images 官方网站,下载最新版 Bookworm
云镜像以及对应的校验文件。
登录 PVE 管理后台,点击页面右上角 创建虚拟机
,进入虚拟机创建流程。
勾选底部 高级
选项,显示完整的配置参数,节点即 “本机” ,VM ID
和 名称
可自定义。
无需使用任何安装介质,客户机操作系统类别选择 Linux
, 版本选择 6.x - 2.6 Kernel
即可。
SCSI 控制器保持默认 VirtIO SCSI single
,机型可选 q35
,并勾选 Qemu代理
选项。
一般情况下,如果该虚拟机仅为 Adguard Home 服务器,20G
磁盘空间足够使用。
由于使用 Debian 云镜像制作虚拟机模板,此处删除所有 磁盘
。
CPU 类别
选择 host
,插槽
与 核心
数根据物理 CPU 核心数进行酌情设置。
若 PVE 服务器内有多颗物理 CPU ,则推荐勾选 启用NUMA
选项。
内存一般 2G
足够使用,取消勾选 Ballooning设备
。
在 02.PVE初始化配置 中,曾创建了一个没有桥接任何物理网口的内部网桥。
该内部网桥接口同属于主路由内部网桥成员接口。
因此,模板虚拟机的 桥接
参数可设置为该纯内部网桥。
由于演示环境中暂未安装主路由系统,因此选择其他网桥接口替代。
通常情况下无需使用 PVE 内建防火墙,因此 取消勾选 网络设备的 防火墙
选项。
推荐在 Multiqueue
处根据前面设置的 CPU 核心数进行网卡多队列设置,设置比例为 1:1 。
即有 n 个 CPU 核心,此处多队列也设置为 n 。
接下来查看设置总览,确认无误后即可点击 完成
。
查看虚拟机详情页,在虚拟机 硬件
配置页面,移除其 CD/DVD驱动器
。
使用终端工具登录 PVE 服务器,并进入 /tmp
目录,执行以下命令创建一个目录。
## 创建存放 Debian 云镜像的临时目录
$ mkdir -p /tmp/Debian
## 进入目录
$ cd /tmp/Debian
将 Debian 云镜像传输到该目录,并检查 hash
。
## 下载云镜像校验文件
$ wget https://cloud.debian.org/images/cloud/bookworm/latest/SHA512SUMS
## 下载云镜像
$ wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2
## 检查文件是否存在
$ ls -lah
## 显示校验文件内容
$ cat SHA512SUMS
## 计算文件 hash
$ sha512sum debian-12-generic-amd64.qcow2
确认无误后,将镜像文件导入刚才创建的虚拟机,命令中的 VM ID
需要根据实际情况替换,演示为 1001
。
## 将 qcow2 镜像导入虚拟机中
$ qm importdisk 1001 debian-12-generic-amd64.qcow2 local-lvm
#### 镜像导入示例输出
unused0: successfully imported disk 'local-lvm:vm-1001-disk-0'
磁盘导入成功后,虚拟机硬件列表中将显示一块未使用的磁盘设备,可鼠标 双击 该设备进行配置调整。
当宿主机使用 SSD
作为物理存储设备,并且虚拟磁盘采用 精简置备
(Thin Provisioning) 模式时,可考虑开启以下选项:
-
丢弃
(Discard) 选项,有助于存储空间回收。 -
SSD仿真
(SSD Emulation) 选项,让虚拟机将虚拟磁盘视为SSD
存储设备。
在弹出的对话框中,确认 IO thread
选项为 勾选 状态,并点击 添加
。
导入的镜像只有 3G
磁盘空间,为了后续方便使用,需要对磁盘进行扩容。
鼠标 单击 选中该磁盘,选择页面顶部 磁盘操作
菜单的子菜单 调整大小
。
在弹出的对话框中,给该磁盘增加 21G
磁盘空间。
为了能够正常使用 Cloud-Init 初始化系统,需要给模板虚拟机添加 CloudInit设备
。
点击顶部 添加
菜单,选择 CloudInit设备
。
总线/设备
选择 SCSI
,编号为 1
,存储
选择 local-lvm
。
虚拟机硬件设备修改完成后,如下图所示。
进入左侧虚拟机 选项
页面,可以看到当前虚拟机的配置参数。
通常情况下,模板虚拟机的配置参数需要修改以下内容:
-
开机自启动(模板无需修改,克隆的虚拟机需要修改)
-
启动/关机顺序(模板无需修改,克隆的虚拟机需要修改)
-
引导顺序(仅模板需要修改)
-
使用平板指针(仅模板需要修改)
鼠标 双击 引导顺序
选项,进入编辑界面。
在 scsi0
设备处,勾选前面的 “已启用” 复选框,并使用行首的排序功能,将该设备拖拽到第一个。
然后点击 OK
按钮。
关闭 使用平板指针
选项,可以一定程度上降低虚拟机的 CPU 使用率。
进入左侧虚拟机 Cloud-Init
页面,可以看到当前虚拟机的初始化参数。
根据之前的网络规划,内网的 IP 地址段为 172.16.1.0/24
,因此模板虚拟机的参数如下。
参数 | 值 | 说明 |
---|---|---|
用户 | fox |
新系统的管理员账户 |
密码 | ******** |
使用强密码 |
DNS域 | fox.internal |
内网域名(可选) |
DNS服务器 | 172.16.1.1 |
本机 DNS 服务器 |
SSH公钥 | 无 |
使用秘钥登录服务器,暂不使用 |
Upgrade packages | 是 |
启动时更新软件包,保持默认即可 |
IP配置(net0) | ip=172.16.1.250/24,gw=172.16.1.1,ip6=auto |
模板的 IP 设置 |
额外说明:
-
修改
Cloud-Init
参数时,需要在虚拟机关机情况下修改才会生效。 -
DNS服务器
参数支持输入多个 IPv4 / IPv6 地址,使用空格隔开。 -
当前
DNS服务器
参数为主路由 LAN 口 IPv4 地址,确保虚拟机能正常联网。
Cloud-Init
的 IP配置
,IPv4 使用静态地址,IPv6 使用 SLAAC
自动配置,如下图所示。
当主路由配置了 IPv6 ULA 网段,且希望指定内网 DNS 服务器的 IPv6 ULA 地址时,需要调整 Cloud-Init
参数。
本文 IPv6 ULA 演示地址为 fdac::/64
,DNS服务器
和 IP配置
参数调整如下。
参数 | 值 | 说明 |
---|---|---|
DNS域 | fox.internal |
内网域名(可选) |
DNS服务器 | 172.16.1.1 fdac::1 |
本机 DNS 服务器 |
IP配置(net0) | ip=172.16.1.250/24,gw=172.16.1.1,ip6=fdac::fa/64 |
模板的 IP 设置 |
DNS服务器
参数中需要加入主路由 LAN 口 IPv6 ULA 地址。
IP配置
参数,IPv4 使用静态地址,IPv6 同样使用静态地址,如下图所示。
IPv6 使用静态地址后,并不影响虚拟机通过主路由获取公网 GUA IPv6 地址。
进入左侧虚拟机 概要
页面,修改虚拟机的备注信息。
### 服务器信息
- 系统: Debian12
- 用途: 内网 DNS 服务器 ( 模板 )
- 自启: 否
- 用户: fox
- IPv4: 172.16.1.250/24
- IPv6: SLAAC
至此,模板虚拟机创建完成,可将该虚拟机开机。