更新 PVE 系统调整

This commit is contained in:
CallMeR
2023-06-26 18:43:18 +08:00
parent cc41053e85
commit 90d8bccd46
+83 -30
View File
@@ -1,6 +1,6 @@
## 0.必要条件 ## 0.必要条件
在上一篇文章 [02.PVE初始化配置](./02.PVE初始化配置.md) 中,我们已经初始化了 PVE 系统,接下来需要对 PVE 系统进一步调整。 在上一篇文章 [02.PVE初始化配置](./02.PVE初始化配置.md) 中,初始化了 PVE 系统,接下来需要对 PVE 系统进一步调整。
在 PVE 系统调整之前,请确认必要的软件包已经安装完成,本文后续命令均在 SSH 终端下执行。 在 PVE 系统调整之前,请确认必要的软件包已经安装完成,本文后续命令均在 SSH 终端下执行。
@@ -38,7 +38,9 @@ timedatectl set-timezone Asia/Shanghai
date -R date -R
## 参考输出 ## 参考输出
Sun, 25 Jun 2023 12:12:12 +0800 Sun, 25 Jun 2023 12:12:12 +0800
``` ```
Debian 系统常用 `systemd-timesyncd.service` 来同步时间,而 PVE 系统使用 `chrony.service` 来同步时间。 Debian 系统常用 `systemd-timesyncd.service` 来同步时间,而 PVE 系统使用 `chrony.service` 来同步时间。
@@ -55,7 +57,7 @@ nano /etc/chrony/chrony.conf
在编辑器对话框中,将 `pool 2.debian.pool.ntp.org iburst` “注释” 掉,并添加国内的 NTP 服务器。 在编辑器对话框中,将 `pool 2.debian.pool.ntp.org iburst` “注释” 掉,并添加国内的 NTP 服务器。
```bash ```bash
## chrony 服务配置文件示例 ## chrony 配置项
# Use Debian vendor zone. # Use Debian vendor zone.
# pool 2.debian.pool.ntp.org iburst ## 在这行前面增加注释符 # 来注释 # pool 2.debian.pool.ntp.org iburst ## 在这行前面增加注释符 # 来注释
@@ -63,6 +65,7 @@ nano /etc/chrony/chrony.conf
# Use Custom vendor zone. # Use Custom vendor zone.
pool ntp.tencent.com iburst pool ntp.tencent.com iburst
pool ntp.aliyun.com iburst pool ntp.aliyun.com iburst
``` ```
保存该配置文件后,需重启 `chrony` 服务,并再次检查系统 NTP 服务器地址。 保存该配置文件后,需重启 `chrony` 服务,并再次检查系统 NTP 服务器地址。
@@ -84,6 +87,7 @@ MS Name/IP address Stratum Poll Reach LastRx Last sample
=============================================================================== ===============================================================================
^+ 106.55.184.199 2 6 17 11 +752us[ +273us] +/- 40ms ^+ 106.55.184.199 2 6 17 11 +752us[ +273us] +/- 40ms
^* 203.107.6.88 2 6 17 11 -1868us[-2348us] +/- 17ms ^* 203.107.6.88 2 6 17 11 -1868us[-2348us] +/- 17ms
``` ```
## 2. CPU 调度器 ## 2. CPU 调度器
@@ -98,6 +102,7 @@ cpufreq-info
```bash ```bash
## J4125 参考输出 ## J4125 参考输出
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please. Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0: analyzing CPU 0:
@@ -111,12 +116,14 @@ analyzing CPU 0:
The governor "ondemand" may decide which speed to use The governor "ondemand" may decide which speed to use
within this range. within this range.
current CPU frequency is 1.84 GHz. current CPU frequency is 1.84 GHz.
``` ```
**设备 CPU - N6005 参考输出** **设备 CPU - N6005 参考输出**
```bash ```bash
## N6005 参考输出 ## N6005 参考输出
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please. Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0: analyzing CPU 0:
@@ -130,6 +137,7 @@ analyzing CPU 0:
The governor "performance" may decide which speed to use The governor "performance" may decide which speed to use
within this range. within this range.
current CPU frequency is 2.00 GHz. current CPU frequency is 2.00 GHz.
``` ```
这里面主要关注两个点: 这里面主要关注两个点:
@@ -145,10 +153,13 @@ analyzing CPU 0:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
## J4125 参考输出 ## J4125 参考输出
ondemand ondemand
## N6005 参考输出 ## N6005 参考输出
performance performance
``` ```
CPU 驱动一般不建议手动调整,而 `governor` 后面的参数表示 CPU 当前调度器设置。 CPU 驱动一般不建议手动调整,而 `governor` 后面的参数表示 CPU 当前调度器设置。
@@ -160,10 +171,13 @@ CPU 驱动一般不建议手动调整,而 `governor` 后面的参数表示 CPU
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
## J4125 参考输出 ## J4125 参考输出
conservative ondemand userspace powersave performance schedutil conservative ondemand userspace powersave performance schedutil
## N6005 参考输出 ## N6005 参考输出
performance powersave performance powersave
``` ```
根据 CPU 所使用的驱动不同,可选调度器也不同,至于每种调度器有什么优劣,欢迎大家深度挖掘。 根据 CPU 所使用的驱动不同,可选调度器也不同,至于每种调度器有什么优劣,欢迎大家深度挖掘。
@@ -172,19 +186,21 @@ performance powersave
- CPU 驱动为 `intel_pstate` 时,推荐使用 `powersave` 调度器。 - CPU 驱动为 `intel_pstate` 时,推荐使用 `powersave` 调度器。
本文使用 `powersave` 调度器为演示,使用 `vim` 编辑器来编辑 `cpufrequtils` 的配置文件。 本文使用 `powersave` 调度器为演示,使用 `nano` 编辑器来编辑 `cpufrequtils` 的配置文件。
因为该配置文件很长,完整的配置文件可查看 [pve_cpufrequtils.conf](./src/pve_cpufrequtils.conf) 以便对比。 因为该配置文件很长,完整的配置文件可查看 [pve_cpufrequtils.conf](./src/pve_cpufrequtils.conf) 以便对比。
修改完成后,需要重启 PVE 服务器来使参数生效。 修改完成后,需要重启 PVE 服务器来使参数生效。
`vim` 编辑器,按 `i` 键进入编辑模式,`esc` 键退出编辑模式,`:wq` 命令保存退出。 ```bash
## 编辑 cpufrequtils 配置文件
nano /etc/init.d/cpufrequtils
```
在配置文件中修改以下配置项,并保存。
```bash ```bash
## 修改 cpufrequtils 配置文件 ## cpufrequtils 配置
vim /etc/init.d/cpufrequtils
## 在配置文件中修改调度器
ENABLE="true" ENABLE="true"
GOVERNOR="powersave" ## 修改本行的调度器为 powersave GOVERNOR="powersave" ## 修改本行的调度器为 powersave
@@ -212,18 +228,16 @@ watch -d sensors
参数表示每月 `1``16` 号的 `5``0` 分执行系统重启命令。 参数表示每月 `1``16` 号的 `5``0` 分执行系统重启命令。
```bash ```bash
## 编辑系统 crontab ## 查看系统定时任务
crontab -l
## 编辑系统定时任务,编辑器选择 nano
crontab -e crontab -e
## 选择 nano 编辑器,粘贴以下内容并保存 ## 在配置文件末尾增加以下配置项
0 5 1,16 * * /usr/sbin/reboot 0 5 1,16 * * /usr/sbin/reboot
```
使用以下命令来查看当前系统的计划任务。
```bash
## 显示系统 crontab
crontab -l
``` ```
## 4. PVE 自动更新 ## 4. PVE 自动更新
@@ -239,6 +253,7 @@ crontab -l
systemctl status apt-daily-upgrade.timer systemctl status apt-daily-upgrade.timer
## 示例输出 ## 示例输出
● apt-daily-upgrade.timer - Daily apt upgrade and clean activities ● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
Loaded: loaded (/lib/systemd/system/apt-daily-upgrade.timer; enabled; preset: enabled) Loaded: loaded (/lib/systemd/system/apt-daily-upgrade.timer; enabled; preset: enabled)
Active: active (waiting) since Fri 2023-06-23 18:55:58 CST; 1 day 18h ago Active: active (waiting) since Fri 2023-06-23 18:55:58 CST; 1 day 18h ago
@@ -247,6 +262,7 @@ systemctl status apt-daily-upgrade.timer
Triggers: ● apt-daily-upgrade.service Triggers: ● apt-daily-upgrade.service
Jun 23 18:55:58 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities. Jun 23 18:55:58 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.
``` ```
### 4.2.配置更新策略 ### 4.2.配置更新策略
@@ -260,22 +276,29 @@ Jun 23 18:55:58 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt u
dpkg-reconfigure -plow unattended-upgrades dpkg-reconfigure -plow unattended-upgrades
## 选择 “是” (“YES”) ## 选择 “是” (“YES”)
## 示例输出 ## 示例输出
Creating config file /etc/apt/apt.conf.d/20auto-upgrades with new version Creating config file /etc/apt/apt.conf.d/20auto-upgrades with new version
``` ```
进一步调整 apt 的 `20auto-upgrades` 配置文件。 进一步调整 apt 的 `20auto-upgrades` 配置文件。
配置文件中,用来控制更新周期的参数为 `APT::Periodic::Unattended-Upgrade` `5` 表示更新周期为 `5` 天。
```bash ```bash
## 进入 apt 的配置目录 ## 进入 apt 的配置目录
cd /etc/apt/apt.conf.d cd /etc/apt/apt.conf.d
## 编辑 20auto-upgrades 配置文件 ## 编辑 20auto-upgrades 配置文件
vim 20auto-upgrades nano /etc/apt/apt.conf.d/20auto-upgrades
```
## 删除里面全部内容并填写以下内容 删除里面全部内容,添加以下配置项,并保存。
配置文件中,用来控制更新周期的参数为 `APT::Periodic::Unattended-Upgrade` `5` 表示更新周期为 `5` 天。
```bash
## 系统更新周期配置项
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "5"; APT::Periodic::Unattended-Upgrade "5";
@@ -284,7 +307,14 @@ APT::Periodic::CleanInterval "1";
``` ```
进一步调整 apt 的 `50unattended-upgrades` 配置文件,其中被修改的参数解释如下 进一步调整 apt 的 `50unattended-upgrades` 配置文件。
```bash
## 编辑 50unattended-upgrades 配置文件
nano /etc/apt/apt.conf.d/50unattended-upgrades
```
配置文件中,被修改的参数解释如下:
- 启用了 Debian `bookworm-updates` 相关更新。 - 启用了 Debian `bookworm-updates` 相关更新。
@@ -307,18 +337,21 @@ APT::Periodic::CleanInterval "1";
因为该配置文件很长,完整的配置文件可查看 [pve_50unattended_upgrades.conf](./src/pve_50unattended_upgrades.conf) 以便对比。 因为该配置文件很长,完整的配置文件可查看 [pve_50unattended_upgrades.conf](./src/pve_50unattended_upgrades.conf) 以便对比。
```bash ```bash
## 编辑 50unattended-upgrades 配置文件
vim 50unattended-upgrades
## 删除以下行前面的注释符 // ,代表启用 ## 删除以下行前面的注释符 // ,代表启用
"origin=Debian,codename=${distro_codename}-updates"; "origin=Debian,codename=${distro_codename}-updates";
## 添加 PVE 系统更新项目 ## 添加 PVE 系统更新项目
"origin=Proxmox,codename=${distro_codename},label=Proxmox Debian Repository"; "origin=Proxmox,codename=${distro_codename},label=Proxmox Debian Repository";
## 按需添加 PVE Ceph 更新项目 ## 按需添加 PVE Ceph 更新项目
"origin=Proxmox,codename=${distro_codename},label=Proxmox Ceph Debian Repository"; "origin=Proxmox,codename=${distro_codename},label=Proxmox Ceph Debian Repository";
## 在配置文件末尾增加以下配置项,代表启用,并调整参数 ## 在配置文件末尾增加以下配置项,代表启用,并调整参数
Unattended-Upgrade::AutoFixInterruptedDpkg "true"; Unattended-Upgrade::AutoFixInterruptedDpkg "true";
@@ -337,13 +370,19 @@ Unattended-Upgrade::Automatic-Reboot-Time "05:00";
### 4.3.重设触发器 ### 4.3.重设触发器
系统自动更新配置文件修改完成后,需要重设自动更新定时器,执行以下命令。
完整的配置文件可查看 [pve_apt_daily_upgrade.conf](./src/pve_apt_daily_upgrade.conf) 以便对比。 完整的配置文件可查看 [pve_apt_daily_upgrade.conf](./src/pve_apt_daily_upgrade.conf) 以便对比。
```bash ```bash
## 重设自动更新触发器时间为凌晨 02:00 ## 配置系统定时器
systemctl edit apt-daily-upgrade.timer systemctl edit apt-daily-upgrade.timer
```
## 根据文件中的提示,在中间空白处填入以下内容 根据配置文件中的提示,在中间空白处填入以下配置项。
```bash
## 定时器配置项
[Timer] [Timer]
OnCalendar= OnCalendar=
@@ -362,6 +401,7 @@ systemctl restart apt-daily-upgrade.timer
systemctl status apt-daily-upgrade.timer systemctl status apt-daily-upgrade.timer
## 参考输出 ## 参考输出
● apt-daily-upgrade.timer - Daily apt upgrade and clean activities ● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
Loaded: loaded (/lib/systemd/system/apt-daily-upgrade.timer; enabled; preset: enabled) Loaded: loaded (/lib/systemd/system/apt-daily-upgrade.timer; enabled; preset: enabled)
Drop-In: /etc/systemd/system/apt-daily-upgrade.timer.d Drop-In: /etc/systemd/system/apt-daily-upgrade.timer.d
@@ -374,6 +414,7 @@ systemctl status apt-daily-upgrade.timer
Jun 25 14:35:06 node01 systemd[1]: Stopped apt-daily-upgrade.timer - Daily apt upgrade and clean activities. Jun 25 14:35:06 node01 systemd[1]: Stopped apt-daily-upgrade.timer - Daily apt upgrade and clean activities.
Jun 25 14:35:06 node01 systemd[1]: Stopping apt-daily-upgrade.timer - Daily apt upgrade and clean activities... Jun 25 14:35:06 node01 systemd[1]: Stopping apt-daily-upgrade.timer - Daily apt upgrade and clean activities...
Jun 25 14:35:06 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities. Jun 25 14:35:06 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.
``` ```
## 5.硬件直通 ## 5.硬件直通
@@ -386,21 +427,25 @@ Jun 25 14:35:06 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt u
```bash ```bash
## 编辑 Grub 配置文件 ## 编辑 Grub 配置文件
vim /etc/default/grub nano /etc/default/grub
``` ```
`vim` 编辑器对话框中修改 `GRUB_CMDLINE_LINUX_DEFAULT` 参数,注意命令中间的空格。 在编辑器对话框中修改 `GRUB_CMDLINE_LINUX_DEFAULT` 参数,注意命令中间的空格。
```bash ```bash
## Intel 处理器添加参数 ## Intel 处理器添加参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt" GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
``` ```
根据官方文档的说明,AMD 处理器下硬件直通功能将会自动打开,否则需要手动修改 `Grub` 配置文件。 根据官方文档的说明,AMD 处理器下硬件直通功能将会自动打开,否则需要手动修改 `Grub` 配置文件。
```bash ```bash
## AMD 处理器添加参数 ## AMD 处理器添加参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt" GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
``` ```
修改并保存后,需要更新系统 `Grub` 修改并保存后,需要更新系统 `Grub`
@@ -416,9 +461,13 @@ update-grub
```bash ```bash
## 编辑系统配置文件 ## 编辑系统配置文件
vim /etc/modules nano /etc/modules
```
## 添加以下系统模块 在配置文件中添加以下配置项,并保存。
```bash
## 硬件直通配置项
vfio vfio
vfio_iommu_type1 vfio_iommu_type1
@@ -444,6 +493,7 @@ PVE 服务器重启完成后,再次使用 SSH 工具登录,并使用以下
dmesg | grep -e DMAR -e IOMMU -e AMD-Vi dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
## N6005 示例输出 ## N6005 示例输出
[ 0.017937] ACPI: DMAR 0x00000000746C2000 000088 (v02 INTEL EDK2 00000002 01000013) [ 0.017937] ACPI: DMAR 0x00000000746C2000 000088 (v02 INTEL EDK2 00000002 01000013)
[ 0.017965] ACPI: Reserving DMAR table memory at [mem 0x746c2000-0x746c2087] [ 0.017965] ACPI: Reserving DMAR table memory at [mem 0x746c2000-0x746c2087]
[ 0.047812] DMAR: IOMMU enabled [ 0.047812] DMAR: IOMMU enabled
@@ -473,6 +523,7 @@ dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
[ 2.290126] DMAR: dmar0: Using Queued invalidation [ 2.290126] DMAR: dmar0: Using Queued invalidation
[ 2.290129] DMAR: dmar1: Using Queued invalidation [ 2.290129] DMAR: dmar1: Using Queued invalidation
[ 2.290568] DMAR: Intel(R) Virtualization Technology for Directed I/O [ 2.290568] DMAR: Intel(R) Virtualization Technology for Directed I/O
``` ```
检查系统 `IOMMU` 分组,使用以下命令。 检查系统 `IOMMU` 分组,使用以下命令。
@@ -482,6 +533,7 @@ dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
find /sys/kernel/iommu_groups/ -type l find /sys/kernel/iommu_groups/ -type l
## N6005 示例输出 ## N6005 示例输出
/sys/kernel/iommu_groups/7/devices/0000:00:1c.4 /sys/kernel/iommu_groups/7/devices/0000:00:1c.4
/sys/kernel/iommu_groups/15/devices/0000:04:00.0 /sys/kernel/iommu_groups/15/devices/0000:04:00.0
/sys/kernel/iommu_groups/5/devices/0000:00:17.0 /sys/kernel/iommu_groups/5/devices/0000:00:17.0
@@ -505,6 +557,7 @@ find /sys/kernel/iommu_groups/ -type l
/sys/kernel/iommu_groups/10/devices/0000:00:1c.7 /sys/kernel/iommu_groups/10/devices/0000:00:1c.7
/sys/kernel/iommu_groups/0/devices/0000:00:02.0 /sys/kernel/iommu_groups/0/devices/0000:00:02.0
/sys/kernel/iommu_groups/9/devices/0000:00:1c.6 /sys/kernel/iommu_groups/9/devices/0000:00:1c.6
``` ```
## 6.系统清理 ## 6.系统清理