目前,pvenode允许您设置节点的描述、在节点的来宾上运行各种批量操作、查看节点的任务历史记录以及管理节点的 SSL 证书,这些证书通过 pveproxy 用于 API 和 Web GUI

3.10.1. 局域网唤醒

LAN 唤醒 (WoL) 允许您通过发送魔术数据包来打开网络中休眠的计算机。至少一个 NIC 必须支持此功能,并且需要在计算机的固件 (BIOS/UEFI) 配置中启用相应的选项。选项名称可能有所不同,从“Enable Wake-on-Lan”到 “Power On By PCIE Device”;如果您不确定,请检查主板的供应商手册。ethtool可用于通过运行以下命令来检查<interface>的 WoL 配置 :

ethtool <接口> | grep 唤醒

pvenode允许您使用以下命令通过 WoL 唤醒集群中的休眠成员:

pvenodewakeonlan<节点>

这会在 UDP 端口 9 上广播 WoL 魔术数据包,其中包含从wakeonlan属性获取的<node>的 MAC 地址。可以使用以下命令设置特定于节点的 wakeonlan属性:

pvenode 配置集 -wakeonlan XX:XX:XX:XX:XX:XX

3.10.2. 任务历史记录

在对服务器问题(例如失败的备份作业)进行故障排除时,拥有先前运行的任务的日志通常会很有帮助。使用 Proxmox VE,您可以通过pvenode 任务命令访问节点的任务历史记录。

您可以使用list子命令获取节点已完成任务的筛选列表 。例如,要获取与 VM 100相关且以错误结束的任务列表 ,命令将为:

pvenode 任务列表 --errors --vmid 100

然后可以使用其 UPID 打印任务的日志:

pvenode 任务日志 UPID:pve1:00010D94:001CA6EA:6124E1B9:vzdump:100:root@pam:

3.10.3. 批量访客电源管理

如果您有许多虚拟机/容器,则可以使用pvenode的 startallstopall子命令批量执行启动和停止 guest 虚拟机。默认情况下,pvenode startall将仅启动已设置为在启动时自动启动的虚拟机/容器(请参阅 自动启动和关闭虚拟机),但是,您可以使用–force标志覆盖此行为。这两个命令还有一个–vms选项,它将停止/启动的 guest 虚拟机限制为指定的 VMID。

例如,要启动虚拟机100101102,无论它们是否设置了onboot,您都可以使用:

pvenode startall --vms 100,101,102 --force

要停止这些来宾(以及可能正在运行的任何其他来宾),请使用以下命令:

普韦诺德停止
笔记stopall 命令首先尝试执行干净关闭,然后等待,直到所有来宾都成功关闭或可覆盖的超时(默认为 3 分钟)到期。一旦发生这种情况并且强制停止参数未显式设置为 0 (false),所有仍在运行的虚拟客户端都会被硬停止。

3.10.4. 第一个来宾启动延迟

如果您的虚拟机/容器依赖于启动缓慢的外部资源(例如 NFS 服务器),您还可以在 Proxmox VE 启动时间和配置为自动启动的第一个虚拟机/容器时间之间设置每个节点的延迟启动(请参阅虚拟机的自动启动和关闭)。

您可以通过设置以下内容来实现此目的(其中10代表延迟(以秒为单位)):

pvenode 配置集 --startall-onboot-delay 10

3.10.5。批量访客迁移

如果升级情况要求您将所有来宾从一个节点迁移到另一个节点,pvenode还提供用于批量迁移的migrateall子命令。默认情况下,此命令会将系统上的每个来宾迁移到目标节点。但是,它可以设置为仅迁移一组来宾。

例如,要将虚拟机100101102迁移到节点pve2,并启用本地磁盘热迁移,您可以运行:

pvenode migrateall pve2 --vms 100,101,102 --with-local-disks

3.11. 证书管理

3.11.1. 集群内通信证书

默认情况下,每个 Proxmox VE 集群都会创建自己的(自签名)证书颁发机构 (CA),并为每个节点生成由上述 CA 签名的证书。这些证书用于与集群的pveproxy服务和 Shell/控制台功能(如果使用 SPICE)进行加密通信。

CA 证书和密钥存储在Proxmox 集群文件系统 (pmxcfs)中。

3.11.2. API 和 Web GUI 证书

REST API 和 Web GUI 由pveproxy服务提供,该服务在每个节点上运行。

对于pveproxy使用的证书,您有以下选项:

  1. 默认情况下,使用/etc/pve/nodes/NODENAME/pve-ssl.pem 中的节点特定证书 。该证书由集群 CA 签名,因此不会自动受到浏览器和操作系统的信任。

  2. 使用外部提供的证书(例如由商业 CA 签名)。

  3. 使用 ACME (Let’s Encrypt) 获取可自动续订的可信证书,这也集成在 Proxmox VE API 和 Web 界面中。

对于选项 2 和 3,使用文件/etc/pve/local/pveproxy-ssl.pem(和 /etc/pve/local/pveproxy-ssl.key,需要没有密码)。

笔记请记住,/etc/pve/local是/etc/pve/nodes/NODENAME的节点特定符号链接 。

证书使用 Proxmox VE 节点管理命令进行管理(请参阅pvenode(1)联机帮助页)。

警告请勿替换或手动修改/etc/pve/local/pve-ssl.pem和 /etc/pve/local/pve-ssl.key中自动生成的节点证书文件或/etc/pve/pve中的集群 CA 文件 -root-ca.pem/etc/pve/priv/pve-root-ca.key

3.11.3. 上传自定义证书

如果您已经拥有想要用于 Proxmox VE 节点的证书,您可以简单地通过 Web 界面上传该证书。

屏幕截图/gui-node-certs-upload-custom.png

请注意,证书密钥文件(如果提供)不得受密码保护。

3.11.4. 通过 Let’s Encrypt (ACME) 获得可信证书

Proxmox VE 包括自动证书管理环境ACME协议 的实现,允许 Proxmox VE 管理员使用像 Let’s Encrypt 这样的 ACME 提供程序来轻松设置 TLS 证书,这些证书在现代操作系统和 Web 浏览器上被接受和信任。盒子。

目前,实现的两个 ACME 端点是 Let’s Encrypt (LE)生产环境及其暂存环境。我们的 ACME 客户端支持使用内置 Web 服务器验证http-01挑战,并使用支持acme.sh 的所有 DNS API 端点的 DNS 插件验证dns-01挑战。

ACME账户

屏幕截图/gui-datacenter-acme-register-account.png

您需要使用要使用的端点为每个集群注册一个 ACME 帐户。该帐户使用的电子邮件地址将作为来自 ACME 端点的到期续订或类似通知的联系点。

您可以通过 Web 界面 数据中心 -> ACME或使用pvenode命令行工具来注册和停用 ACME 帐户。

pvenode acme 帐户注册 account-name [email protected]
提示由于速率限制,您应该使用 LE分期进行实验或者如果您是第一次使用 ACME。
ACME 插件

ACME 插件的任务是提供自动验证,确保您以及您操作下的 Proxmox VE 集群是域的真正所有者。这是自动证书管理的基础构建块。

ACME 协议指定了不同类型的挑战,例如 http-01,其中 Web 服务器提供具有特定内容的文件以证明其控制域。有时这是不可能的,要么是因为技术限制,要么是由于无法从公共互联网访问记录的地址。在这些情况下可以使用dns-01质询。通过在域的区域中创建特定的 DNS 记录来完成此挑战。

屏幕截图/gui-datacenter-acme-overview.png

Proxmox VE 开箱即用地支持这两种挑战类型,您可以通过 Web 界面上的Datacenter -> ACME或使用 pvenode acme plugin add命令配置插件。

ACME 插件配置存储在/etc/pve/priv/acme/plugins.cfg中。插件可用于集群中的所有节点。

节点域

每个域都是特定于节点的。您可以在Node -> Certificates下添加新的或管理现有的域条目,或使用pvenode config命令。

屏幕截图/gui-node-certs-add-domain.png

为节点配置所需的域并确保选择所需的 ACME 帐户后,您可以通过 Web 界面订购新证书。成功后,界面将在 10 秒后重新加载。

3.11.5。ACME HTTP 挑战插件

始终有一个隐式配置的独立插件,用于通过端口 80 上生成的内置网络服务器验证 http-01挑战。

笔记名称“独立”意味着它可以自行提供验证,无需任何第三方服务。因此,该插件也适用于集群节点。

使用它通过 Let’s Encrypts ACME 进行证书管理需要满足一些先决条件。

  • 您必须接受 Let’s Encrypt 的服务条款才能注册帐户。

  • 节点的80 端口需要可从 Internet 访问。

  • 端口 80 上不得有其他侦听 器

  • 请求的(子)域需要解析为节点的公共IP。

3.11.6。ACME DNS API 挑战插件

在不可能或不需要通过http-01方法进行外部访问验证的系统上,可以使用dns-01验证方法。此验证方法需要一个允许 通过 API配置TXT记录的 DNS 服务器。

配置 ACME DNS API 进行验证

Proxmox VE 重新使用了为acme.sh 6 ]项目开发的 DNS 插件,有关具体 API 配置的详细信息,请参阅其文档。

使用 DNS API 配置新插件的最简单方法是使用 Web 界面(数据中心 -> ACME)。

屏幕截图/gui-datacenter-acme-add-dns-plugin.png

选择DNS作为质询类型。然后,您可以选择您的 API 提供商,输入凭据数据以通过其 API 访问您的帐户。

提示请参阅 acme.sh 如何使用 DNS API wiki,了解有关为提供商获取 API 凭据的更多详细信息。

由于有许多 DNS 提供商和 API 端点,Proxmox VE 会自动生成某些提供商的凭证表单。对于其他人,您将看到更大的文本区域,只需将所有凭据KEY = VALUE对复制到其中即可。

通过 CNAME 别名进行 DNS 验证

如果您的主/真实 DNS 不支持通过 API 进行配置,可以使用特殊的别名模式来处理不同域/DNS 服务器上的验证。手动为_acme-challenge.domain1.example设置指向_acme-challenge.domain2.example的永久CNAME记录 ,并将Proxmox VE节点配置文件中的 alias属性 设置为domain2.example ,以允许domain2.example的DNS服务器验证domain1.example的所有挑战。

插件组合

如果您的节点可通过具有不同要求/DNS 配置功能的多个域访问,则可以结合http-01dns-01验证。通过为每个域指定不同的插件实例,也可以混合来自多个提供商或实例的 DNS API。

提示在多个域上访问同一服务会增加复杂性,应尽可能避免。

3.11.7. ACME证书自动更新

如果节点已成功配置了 ACME 提供的证书(通过 pvenode 或通过 GUI),则该证书将由 pve -daily-update.service自动更新。目前,如果证书已过期或将在未来 30 天内过期,则会尝试续订。

3.11.8。使用pvenode的 ACME 示例

示例:使用 Let’s Encrypt 证书的pvenode调用示例
root@proxmox:~# pvenode acme 账户注册默认 [email protected]
目录端点:
0) 让我们加密 V2 (https://acme-v02.api.letsencrypt.org/directory)
1) 让我们加密 V2 Staging (https://acme-staging-v02.api.letsencrypt.org/directory)
2) 定制
输入选择:1

服务条款:https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
您同意以上条款吗?[y|N]y
...
任务确定
root@proxmox:~# pvenode 配置集 --acme 域=example.invalid
root@proxmox:~# pvenode acme 证书订单
正在加载 ACME 帐户详细信息
下 ACME 订单
...
状态为“有效”!

所有域名均已验证!
...
正在下载证书
设置 pveproxy 证书和密钥
重新启动 pveproxy
任务确定
示例:设置 OVH API 以验证域
笔记无论使用哪种插件,账号注册步骤都是一样的,这里不再赘述。
笔记OVH_AKOVH_AS需要根据OVH API文档从OVH获取

首先,您需要获取所有信息,以便您和 Proxmox VE 可以访问 API。

root@proxmox:~# cat /path/to/api-token
OVH_AK=XXXXXXXXXXXXXXXXXX
OVH_AS=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
root@proxmox:~# 源 /path/to/api-token
root@proxmox:~#curl -XPOST -H"X-Ovh-Application: $OVH_AK" -H "内容类型: application/json" \
https://eu.api.ovh.com/1.0/auth/credential -d '{
  “访问规则”:[
    {"方法": "GET","路径": "/auth/time"},
    {"方法": "GET","路径": "/domain"},
    {"方法": "GET","路径": "/domain/zone/*"},
    {"method": "GET","path": "/domain/zone/*/record"},
    {"方法": "POST","路径": "/domain/zone/*/record"},
    {"方法": "POST","路径": "/domain/zone/*/refresh"},
    {"方法": "PUT","路径": "/domain/zone/*/record/"},
    {"method": "DELETE","path": "/domain/zone/*/record/*"}
]
}'
{“consumerKey”:“ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ”,“state”:“pendingValidation”,“validationUrl”:“https://eu.api.ovh.com/auth/?credentialToken=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”}

(打开验证 URL 并按照说明将应用程序密钥与帐户/消费者密钥链接)

root@proxmox:~# echo "OVH_CK=ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ" >> /path/to/api-token

现在您可以设置 ACME 插件:

root@proxmox:~# pvenode acme 插件添加 dns example_plugin --api ovh --data /path/to/api_token
root@proxmox:~# pvenode acme 插件配置 example_plugin
┌────────┬──────────────────────────────────────── ──┐
│ 键 │ 值 │
╞════════╪══════════════════════════════ ══════════ ══╡
│ API │ ovh │
├────────┼──────────────────────────────────────── ──┤
│ 数据 │ OVH_AK=XXXXXXXXXXXXXXX │
│ │ OVH_AS=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY │
│ │ OVH_CK=ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ │
├────────┼──────────────────────────────────────── ──┤
│ 摘要 │ 867fcf556363ca1bea866863093fcab83edf47a1 │
├────────┼──────────────────────────────────────── ──┤
│ 插件 │ example_plugin │
├────────┼──────────────────────────────────────── ──┤
│ 类型 │ DNS │
└────────┴──────────────────────────────────────── ──┘

最后,您可以配置要为其获取证书的域并为其下订单:

root@proxmox:~# pvenode config set -acmedomain0 example.proxmox.com,plugin=example_plugin
root@proxmox:~# pvenode acme 证书订单
正在加载 ACME 帐户详细信息
下 ACME 订单
订单网址:https://acme-staging-v02.api.letsencrypt.org/acme/order/11111111/22222222

从“https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/33333333”获取授权详细信息
example.proxmox.com 的验证正在等待!
[2020 年 CEST 4 月 22 日星期三 09:25:30] 使用 OVH 端点:ovh-eu
[2020 年 CEST 2020 年 4 月 22 日星期三 09:25:30] 检查身份验证
[2020 年 CEST 4 月 22 日星期三 09:25:30] 消费者密钥正常。
[2020 年 CEST 4 月 22 日星期三 09:25:31] 添加记录
[2020 年 CEST 4 月 22 日星期三 09:25:32] 添加,睡眠 10 秒。
添加TXT记录:_acme-challenge.example.proxmox.com
触发验证
睡觉5秒
状态为“有效”!
[2020 年 CEST 2020 年 4 月 22 日星期三 09:25:48] 使用 OVH 端点:ovh-eu
[2020 年 CEST 2020 年 4 月 22 日星期三 09:25:48] 检查身份验证
[2020 年 CEST 4 月 22 日星期三 09:25:48] 消费者密钥正常。
删除 TXT 记录:_acme-challenge.example.proxmox.com

所有域名均已验证!

创造企业社会责任
检查订单状态
订单已准备就绪,正在完成订单
有效的!

正在下载证书
设置 pveproxy 证书和密钥
重新启动 pveproxy
任务确定
示例:从暂存目录切换到常规 ACME 目录

不支持更改帐户的 ACME 目录,但由于 Proxmox VE 支持多个帐户,您只需创建一个新帐户,并将生产(受信任)ACME 目录作为端点。您还可以停用暂存帐户并重新创建它。

示例:使用pvenode将默认ACME 帐户从staging更改为目录
root@proxmox:~# pvenode acme 帐户停用默认值
将帐户文件从“/etc/pve/priv/acme/default”重命名为“/etc/pve/priv/acme/_deactivated_default_4”
任务确定

root@proxmox:~# pvenode acme 帐户注册默认 [email protected]
目录端点:
0) 让我们加密 V2 (https://acme-v02.api.letsencrypt.org/directory)
1) 让我们加密 V2 Staging (https://acme-staging-v02.api.letsencrypt.org/directory)
2) 定制
输入选择:0

服务条款:https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
您同意以上条款吗?[y|N]y
...
任务确定

3.12. 主机引导加载程序

Proxmox VE 目前使用两个引导加载程序之一,具体取决于安装程序中选择的磁盘设置。

对于使用 ZFS 作为根文件系统安装的 EFI 系统,使用systemd-boot。所有其他部署都使用标准grub引导加载程序(这通常也适用于安装在 Debian 之上的系统)。

3.12.1. 安装程序使用的分区方案

Proxmox VE 安装程序在选择安装的所有磁盘上创建 3 个分区。

创建的分区是:

  • 1 MB BIOS 引导分区(gdisk 类型 EF02)

  • 512 MB EFI 系统分区(ESP,gdisk 类型 EF00)

  • 第三个分区跨越设置的hdsize参数或用于所选存储类型的剩余空间

使用 ZFS 作为根文件系统的系统通过存储在 512 MB EFI 系统分区上的内核和 initrd 映像进行引导。对于传统 BIOS 系统,使用grub ,对于 EFI 系统,使用systemd-boot 。两者均已安装并配置为指向 ESP。

BIOS 模式下的grub ( –target i386-pc ) 安装到使用grub引导的所有系统上所有选定磁盘的 BIOS 引导分区上 7 ]

3.12.2. 使用proxmox-boot-tool同步 ESP 的内容

proxmox-boot-tool是一个实用程序,用于保持 EFI 系统分区的内容正确配置和同步。它将某些内核版本复制到所有 ESP,并将相应的引导加载程序配置为从vfat格式的 ESP 引导。在 ZFS 作为根文件系统的上下文中,这意味着您可以使用根池上的所有可选功能,而不是grub中 ZFS 实现中也存在的子集,或者必须创建一个单独的小型引导池8 ]

在冗余设置中,所有磁盘均由安装程序使用 ESP 进行分区。这可以确保即使第一个引导设备出现故障或者 BIOS 只能从特定磁盘引导,系统也能引导。

正常运行期间,ESP 不会保持安装状态。这有助于防止系统崩溃时vfat格式的 ESP 的文件系统损坏,并且在主引导设备发生故障时无需手动调整/etc/fstab 。

proxmox-boot-tool处理以下任务:

  • 格式化并设置新分区

  • 将新的内核映像和 initrd 映像复制并配置到所有列出的 ESP

  • 同步内核升级和其他维护任务的配置

  • 管理同步的内核版本列表

  • 配置引导加载程序以引导特定内核版本(固定)

您可以通过运行以下命令查看当前配置的 ESP 及其状态:

# proxmox-boot-tool 状态
设置新分区用作同步 ESP

要将分区格式化并初始化为同步 ESP,例如,在替换 rpool 中的故障 vdev 后,或者在转换同步机制之前的现有系统时,可以使用 proxmox-kernel-helper 中的 proxmox- boot  tool 

警告format命令将格式化<partition>,确保传递正确的设备/分区!

例如,要将空分区/dev/sda2格式化为 ESP,请运行以下命令:

# proxmox-boot-tool 格式 /dev/sda2

要设置位于/dev/sda2上的现有未安装 ESP以包含在 Proxmox VE 的内核更新同步机制中,请使用以下命令:

# proxmox-boot-tool init /dev/sda2

之后/etc/kernel/proxmox-boot-uuids应包含一个新行,其中包含新添加分区的 UUID。init命令还将自动触发所有已配置 ESP 的刷新。

更新所有 ESP 上的配置

要复制和配置所有可启动内核并使/etc/kernel/proxmox-boot-uuids中列出的所有 ESP 保持 同步,您只需运行:

# proxmox-boot-tool 刷新

(相当于在 root 上运行带有ext4xfs 的update-grub系统)。

如果您对内核命令行进行更改,或者想要同步所有内核和 initrd,则这是必要的。

笔记update -initramfsapt(必要时)都会自动触发刷新。
proxmox-boot-tool考虑的内核版本

默认配置以下内核版本:

  • 当前运行的内核

  • 软件包更新时新安装的版本

  • 两个最新已安装的内核

  • 倒数第二个内核系列的最新版本(例如 5.0、5.3)(如果适用)

  • 任何手动选择的内核

手动保持内核可启动

如果您希望将某个内核和 initrd 映像添加到可启动内核列表中,请使用proxmox-boot-tool kernel add

例如,运行以下命令将 ABI 版本5.0.15-1-pve的内核添加 到内核列表中,以保持安装并同步到所有 ESP:

# proxmox-boot-tool 内核添加 5.0.15-1-pve

proxmox-boot-tool kernel list将列出当前选择用于启动的所有内核版本:

# proxmox-boot-tool 内核列表
手动选择内核:
5.0.15-1-pve

自动选择内核:
5.0.12-1-pve
4.15.18-18-pve

运行proxmox-boot-tool kernel remove以从手动选择的内核列表中删除内核,例如:

# proxmox-boot-tool 内核删除 5.0.15-1-pve
笔记在手动添加或删除上面的内核后,需要运行proxmox-boot-toolfresh来更新所有 EFI 系统分区 (ESP)。

3.12.3. 确定使用哪个引导加载程序

截图/boot-grub.png

确定使用哪个引导加载程序的最简单、最可靠的方法是观察 Proxmox VE 节点的引导过程。

您将看到蓝色的grub框或简单的白底黑字 systemd-boot

截图/boot-systemdboot.png

从正在运行的系统确定引导加载程序可能不是 100% 准确。最安全的方法是运行以下命令:

# efibootmgr -v

如果返回不支持 EFI 变量的消息,则在 BIOS/Legacy 模式下使用grub 。

如果输出包含类似于以下内容的行,则表明grub在 UEFI 模式下使用。

Boot0005* proxmox [...] 文件(\EFI\proxmox\grubx64.efi)

如果输出包含类似于以下内容的行,则使用systemd-boot 。

Boot0006* Linux 启动管理器 [...] 文件(\EFI\systemd\systemd-bootx64.efi)

通过运行:

# proxmox-boot-tool 状态

您可以查看proxmox-boot-tool是否已配置,这可以很好地指示系统如何启动。

3.12.4. 蛴螬

grub多年来一直是引导 Linux 系统的事实上的标准,并且有很好的文档记录 9 ]

配置

grub配置的更改是通过默认文件 /etc/default/grub或/etc/default/grub.d中的配置片段完成的。要在更改配置后重新生成配置文件,请运行: 10 ]

# 更新 grub

3.12.5。系统引导

systemd-boot是一个轻量级的 EFI 引导加载程序。它直接从安装它的 EFI 服务分区 (ESP) 读取内核和 initrd 映像。直接从 ESP 加载内核的主要优点是不需要重新实现访问存储的驱动程序。在 Proxmox VE 中, proxmox-boot-tool用于保持 ESP 上的配置同步。

配置

systemd-boot通过EFI 系统分区 (ESP) 根目录中的文件loader/loader.conf进行配置。有关详细信息,请参阅loader.conf(5)联机帮助页。

每个引导加载程序条目都放置在目录loader/entries/中自己的文件中

示例entry.conf 如下所示(/指 ESP 的根目录):

标题 Proxmox
版本 5.0.15-1-pve
选项 root=ZFS=rpool/ROOT/pve-1 boot=zfs
linux /EFI/proxmox/5.0.15-1-pve/vmlinuz-5.0.15-1-pve
initrd /EFI/proxmox/5.0.15-1-pve/initrd.img-5.0.15-1-pve

3.12.6。编辑内核命令行

您可以在以下位置修改内核命令行,具体取决于所使用的引导加载程序:

蛴螬

内核命令行需要放置在 文件/etc/default/grub 的变量GRUB_CMDLINE_LINUX_DEFAULT中。运行 update-grub会将其内容附加到/boot/grub/grub.cfg中的所有linux条目 。

系统引导

内核命令行需要作为一行放置在/etc/kernel/cmdline中。要应用更改,请运行proxmox-boot-toolfresh,这会将其设置 为loader/entries/proxmox-*.conf中所有配置文件的选项

3.12.7. 覆盖下次启动的内核版本

要选择当前不是默认内核的内核,您可以:

  • 使用启动过程开始时显示的启动加载程序菜单

  • 使用proxmox-boot-tool将系统一次性或永久 固定到内核版本(直到重置 pin)。

这应该可以帮助您解决新内核版本和硬件之间的不兼容性问题。

笔记应尽快删除此类 pin,以便最新内核的所有当前安全补丁也适用于系统。

例如:要永久选择版本5.15.30-1-pve进行引导,您可以运行:

# proxmox-boot-tool 内核引脚 5.15.30-1-pve
提示固定功能适用于所有 Proxmox VE 系统,不仅适用于那些使用 proxmox-boot-tool来同步 ESP 内容的系统,如果您的系统不使用proxmox-boot-tool进行同步,您也可以跳过 proxmox-boot-tool最后刷新通话。

您还可以设置仅在下次系统启动时启动的内核版本。例如,这对于测试更新的内核是否解决了导致您首先固定版本的问题很有用:

# proxmox-boot-tool 内核引脚 5.15.30-1-pve --next-boot

要删除任何固定版本配置,请使用unpin子命令:

# proxmox-boot-tool 内核取消固定

虽然unpin也有一个–next-boot选项,但它用于清除使用–next-boot设置的固定版本。由于这种情况在启动时已经自动发生,因此手动调用它几乎没有什么用处。

设置或清除固定版本后,您还需要通过运行刷新子命令来同步 ESP 上的内容和配置。

提示如果您以交互方式调用该工具,系统将提示您自动为proxmox-boot-tool托管系统执行此操作 。
# proxmox-boot-tool 刷新

3.13. 内核同页合并 (KSM)

内核同页合并 (KSM) 是 Linux 内核提供的一项可选内存重复数据删除功能,在 Proxmox VE 中默认启用。KSM 的工作原理是扫描一系列物理内存页面中的相同内容,并识别映射到它们的虚拟页面。如果找到相同的页面,则重新映射相应的虚拟页面,使它们都指向同一物理页面,并释放旧页面。虚拟页被标记为“写时复制”,因此对它们的任何写入都将写入新的内存区域,而共享物理页完好无损。

3.13.1. KSM 的影响

KSM 可以优化虚拟化环境中的内存使用,因为运行相似操作系统或工作负载的多个虚拟机可能会共享大量公共内存页面。

然而,虽然 KSM 可以减少内存使用,但它也带来了一些安全风险,因为它可能使虚拟机遭受旁道攻击。研究表明,通过利用 KSM 的某些特征,可以通过同一主机上的第二个 VM 推断有关正在运行的 VM 的信息。

因此,如果您使用 Proxmox VE 提供托管服务,您应该考虑禁用 KSM,以便为您的用户提供额外的安全性。此外,您应该检查您所在国家/地区的法规,因为禁用 KSM 可能是法律要求。

3.13.2. 禁用 KSM

要查看 KSM 是否处于活动状态,您可以检查以下输出:

# systemctl 状态 ksmtuned

如果是,可以立即禁用它:

# systemctl 禁用 --now ksmtuned

最后,要取消合并所有当前合并的页面,请运行:

# echo 2 > /sys/kernel/mm/ksm/run

作者 Lin-Tech

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注